blob: b166167808a1b9fa09f410289de66d7e812e7e8c [file] [log] [blame]
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// This file was automatically generated with:
// ../../ui/gfx/x/gen_xproto.py \
// ../../third_party/xcbproto/src \
// gen/ui/gfx/x \
// bigreq \
// composite \
// damage \
// dpms \
// dri2 \
// dri3 \
// ge \
// glx \
// present \
// randr \
// record \
// render \
// res \
// screensaver \
// shape \
// shm \
// sync \
// xc_misc \
// xevie \
// xf86dri \
// xf86vidmode \
// xfixes \
// xinerama \
// xinput \
// xkb \
// xprint \
// xproto \
// xselinux \
// xtest \
// xv \
// xvmc
#ifndef UI_GFX_X_GENERATED_PROTOS_XVMC_H_
#define UI_GFX_X_GENERATED_PROTOS_XVMC_H_
#include <array>
#include <cstddef>
#include <cstdint>
#include <cstring>
#include <vector>
#include "base/component_export.h"
#include "base/files/scoped_file.h"
#include "base/memory/ref_counted_memory.h"
#include "base/memory/scoped_refptr.h"
#include "third_party/abseil-cpp/absl/types/optional.h"
#include "ui/gfx/x/error.h"
#include "ui/gfx/x/ref_counted_fd.h"
#include "xproto.h"
#include "xv.h"
namespace x11 {
class Connection;
template <typename Reply>
struct Response;
template <typename Reply>
class Future;
class COMPONENT_EXPORT(X11) XvMC {
public:
static constexpr unsigned major_version = 1;
static constexpr unsigned minor_version = 1;
XvMC(Connection* connection, const x11::QueryExtensionReply& info);
uint8_t present() const { return info_.present; }
uint8_t major_opcode() const { return info_.major_opcode; }
uint8_t first_event() const { return info_.first_event; }
uint8_t first_error() const { return info_.first_error; }
Connection* connection() const { return connection_; }
enum class Context : uint32_t {};
enum class Surface : uint32_t {};
enum class SubPicture : uint32_t {};
struct SurfaceInfo {
Surface id{};
uint16_t chroma_format{};
uint16_t pad0{};
uint16_t max_width{};
uint16_t max_height{};
uint16_t subpicture_max_width{};
uint16_t subpicture_max_height{};
uint32_t mc_type{};
uint32_t flags{};
};
struct QueryVersionRequest {};
struct QueryVersionReply {
uint16_t sequence{};
uint32_t major{};
uint32_t minor{};
};
using QueryVersionResponse = Response<QueryVersionReply>;
Future<QueryVersionReply> QueryVersion(const QueryVersionRequest& request);
Future<QueryVersionReply> QueryVersion();
struct ListSurfaceTypesRequest {
Xv::Port port_id{};
};
struct ListSurfaceTypesReply {
uint16_t sequence{};
std::vector<SurfaceInfo> surfaces{};
};
using ListSurfaceTypesResponse = Response<ListSurfaceTypesReply>;
Future<ListSurfaceTypesReply> ListSurfaceTypes(
const ListSurfaceTypesRequest& request);
Future<ListSurfaceTypesReply> ListSurfaceTypes(const Xv::Port& port_id = {});
struct CreateContextRequest {
Context context_id{};
Xv::Port port_id{};
Surface surface_id{};
uint16_t width{};
uint16_t height{};
uint32_t flags{};
};
struct CreateContextReply {
uint16_t sequence{};
uint16_t width_actual{};
uint16_t height_actual{};
uint32_t flags_return{};
std::vector<uint32_t> priv_data{};
};
using CreateContextResponse = Response<CreateContextReply>;
Future<CreateContextReply> CreateContext(const CreateContextRequest& request);
Future<CreateContextReply> CreateContext(const Context& context_id = {},
const Xv::Port& port_id = {},
const Surface& surface_id = {},
const uint16_t& width = {},
const uint16_t& height = {},
const uint32_t& flags = {});
struct DestroyContextRequest {
Context context_id{};
};
using DestroyContextResponse = Response<void>;
Future<void> DestroyContext(const DestroyContextRequest& request);
Future<void> DestroyContext(const Context& context_id = {});
struct CreateSurfaceRequest {
Surface surface_id{};
Context context_id{};
};
struct CreateSurfaceReply {
uint16_t sequence{};
std::vector<uint32_t> priv_data{};
};
using CreateSurfaceResponse = Response<CreateSurfaceReply>;
Future<CreateSurfaceReply> CreateSurface(const CreateSurfaceRequest& request);
Future<CreateSurfaceReply> CreateSurface(const Surface& surface_id = {},
const Context& context_id = {});
struct DestroySurfaceRequest {
Surface surface_id{};
};
using DestroySurfaceResponse = Response<void>;
Future<void> DestroySurface(const DestroySurfaceRequest& request);
Future<void> DestroySurface(const Surface& surface_id = {});
struct CreateSubpictureRequest {
SubPicture subpicture_id{};
Context context{};
uint32_t xvimage_id{};
uint16_t width{};
uint16_t height{};
};
struct CreateSubpictureReply {
uint16_t sequence{};
uint16_t width_actual{};
uint16_t height_actual{};
uint16_t num_palette_entries{};
uint16_t entry_bytes{};
std::array<uint8_t, 4> component_order{};
std::vector<uint32_t> priv_data{};
};
using CreateSubpictureResponse = Response<CreateSubpictureReply>;
Future<CreateSubpictureReply> CreateSubpicture(
const CreateSubpictureRequest& request);
Future<CreateSubpictureReply> CreateSubpicture(
const SubPicture& subpicture_id = {},
const Context& context = {},
const uint32_t& xvimage_id = {},
const uint16_t& width = {},
const uint16_t& height = {});
struct DestroySubpictureRequest {
SubPicture subpicture_id{};
};
using DestroySubpictureResponse = Response<void>;
Future<void> DestroySubpicture(const DestroySubpictureRequest& request);
Future<void> DestroySubpicture(const SubPicture& subpicture_id = {});
struct ListSubpictureTypesRequest {
Xv::Port port_id{};
Surface surface_id{};
};
struct ListSubpictureTypesReply {
uint16_t sequence{};
std::vector<Xv::ImageFormatInfo> types{};
};
using ListSubpictureTypesResponse = Response<ListSubpictureTypesReply>;
Future<ListSubpictureTypesReply> ListSubpictureTypes(
const ListSubpictureTypesRequest& request);
Future<ListSubpictureTypesReply> ListSubpictureTypes(
const Xv::Port& port_id = {},
const Surface& surface_id = {});
private:
Connection* const connection_;
x11::QueryExtensionReply info_{};
};
} // namespace x11
#endif // UI_GFX_X_GENERATED_PROTOS_XVMC_H_