blob: 6df3185de600a8550cc6a27d374837eb5a3cb3d1 [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_SHM_H_
#define UI_GFX_X_GENERATED_PROTOS_SHM_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"
namespace x11 {
class Connection;
template <typename Reply>
struct Response;
template <typename Reply>
class Future;
class COMPONENT_EXPORT(X11) Shm {
public:
static constexpr unsigned major_version = 1;
static constexpr unsigned minor_version = 2;
Shm(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 Seg : uint32_t {};
struct CompletionEvent {
static constexpr int type_id = 15;
static constexpr uint8_t opcode = 0;
bool send_event{};
uint16_t sequence{};
Drawable drawable{};
uint16_t minor_event{};
uint8_t major_event{};
Seg shmseg{};
uint32_t offset{};
x11::Window* GetWindow() {
return reinterpret_cast<x11::Window*>(&drawable);
}
};
struct BadSegError : public x11::Error {
uint16_t sequence{};
uint32_t bad_value{};
uint16_t minor_opcode{};
uint8_t major_opcode{};
std::string ToString() const override;
};
struct QueryVersionRequest {};
struct QueryVersionReply {
uint8_t shared_pixmaps{};
uint16_t sequence{};
uint16_t major_version{};
uint16_t minor_version{};
uint16_t uid{};
uint16_t gid{};
uint8_t pixmap_format{};
};
using QueryVersionResponse = Response<QueryVersionReply>;
Future<QueryVersionReply> QueryVersion(const QueryVersionRequest& request);
Future<QueryVersionReply> QueryVersion();
struct AttachRequest {
Seg shmseg{};
uint32_t shmid{};
uint8_t read_only{};
};
using AttachResponse = Response<void>;
Future<void> Attach(const AttachRequest& request);
Future<void> Attach(const Seg& shmseg = {},
const uint32_t& shmid = {},
const uint8_t& read_only = {});
struct DetachRequest {
Seg shmseg{};
};
using DetachResponse = Response<void>;
Future<void> Detach(const DetachRequest& request);
Future<void> Detach(const Seg& shmseg = {});
struct PutImageRequest {
Drawable drawable{};
GraphicsContext gc{};
uint16_t total_width{};
uint16_t total_height{};
uint16_t src_x{};
uint16_t src_y{};
uint16_t src_width{};
uint16_t src_height{};
int16_t dst_x{};
int16_t dst_y{};
uint8_t depth{};
ImageFormat format{};
uint8_t send_event{};
Seg shmseg{};
uint32_t offset{};
};
using PutImageResponse = Response<void>;
Future<void> PutImage(const PutImageRequest& request);
Future<void> PutImage(const Drawable& drawable = {},
const GraphicsContext& gc = {},
const uint16_t& total_width = {},
const uint16_t& total_height = {},
const uint16_t& src_x = {},
const uint16_t& src_y = {},
const uint16_t& src_width = {},
const uint16_t& src_height = {},
const int16_t& dst_x = {},
const int16_t& dst_y = {},
const uint8_t& depth = {},
const ImageFormat& format = {},
const uint8_t& send_event = {},
const Seg& shmseg = {},
const uint32_t& offset = {});
struct GetImageRequest {
Drawable drawable{};
int16_t x{};
int16_t y{};
uint16_t width{};
uint16_t height{};
uint32_t plane_mask{};
uint8_t format{};
Seg shmseg{};
uint32_t offset{};
};
struct GetImageReply {
uint8_t depth{};
uint16_t sequence{};
VisualId visual{};
uint32_t size{};
};
using GetImageResponse = Response<GetImageReply>;
Future<GetImageReply> GetImage(const GetImageRequest& request);
Future<GetImageReply> GetImage(const Drawable& drawable = {},
const int16_t& x = {},
const int16_t& y = {},
const uint16_t& width = {},
const uint16_t& height = {},
const uint32_t& plane_mask = {},
const uint8_t& format = {},
const Seg& shmseg = {},
const uint32_t& offset = {});
struct CreatePixmapRequest {
Pixmap pid{};
Drawable drawable{};
uint16_t width{};
uint16_t height{};
uint8_t depth{};
Seg shmseg{};
uint32_t offset{};
};
using CreatePixmapResponse = Response<void>;
Future<void> CreatePixmap(const CreatePixmapRequest& request);
Future<void> CreatePixmap(const Pixmap& pid = {},
const Drawable& drawable = {},
const uint16_t& width = {},
const uint16_t& height = {},
const uint8_t& depth = {},
const Seg& shmseg = {},
const uint32_t& offset = {});
struct AttachFdRequest {
Seg shmseg{};
RefCountedFD shm_fd{};
uint8_t read_only{};
};
using AttachFdResponse = Response<void>;
Future<void> AttachFd(const AttachFdRequest& request);
Future<void> AttachFd(const Seg& shmseg = {},
const RefCountedFD& shm_fd = {},
const uint8_t& read_only = {});
struct CreateSegmentRequest {
Seg shmseg{};
uint32_t size{};
uint8_t read_only{};
};
struct CreateSegmentReply {
uint8_t nfd{};
uint16_t sequence{};
RefCountedFD shm_fd{};
};
using CreateSegmentResponse = Response<CreateSegmentReply>;
Future<CreateSegmentReply> CreateSegment(const CreateSegmentRequest& request);
Future<CreateSegmentReply> CreateSegment(const Seg& shmseg = {},
const uint32_t& size = {},
const uint8_t& read_only = {});
private:
Connection* const connection_;
x11::QueryExtensionReply info_{};
};
} // namespace x11
#endif // UI_GFX_X_GENERATED_PROTOS_SHM_H_