mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-14 10:08:05 +02:00
house protocols - Remove some duplicate definitions (replaced with virgl_hw.h include, which is also represented in gfxstream host code) - Also removed the capset_ids from virtgpu_gfxstream_protocol.h. They aren't needed to build guest-side driver, and are planned to be merged to virtgpu_drm.h Reviewed-By: Gurchetan Singh <gurchetansingh@google.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34116>
135 lines
3 KiB
C
135 lines
3 KiB
C
/*
|
|
* Copyright 2022 Google
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#ifndef VIRTGPU_GFXSTREAM_PROTOCOL_H
|
|
#define VIRTGPU_GFXSTREAM_PROTOCOL_H
|
|
|
|
#include <stdint.h>
|
|
|
|
// Address Space Graphics contexts
|
|
#define GFXSTREAM_CONTEXT_CREATE 0x1001
|
|
#define GFXSTREAM_CONTEXT_PING 0x1002
|
|
#define GFXSTREAM_CONTEXT_PING_WITH_RESPONSE 0x1003
|
|
|
|
// Native Sync FD
|
|
#define GFXSTREAM_CREATE_EXPORT_SYNC 0x9000
|
|
#define GFXSTREAM_CREATE_IMPORT_SYNC 0x9001
|
|
|
|
// Vulkan Sync
|
|
#define GFXSTREAM_CREATE_EXPORT_SYNC_VK 0xa000
|
|
#define GFXSTREAM_CREATE_IMPORT_SYNC_VK 0xa001
|
|
#define GFXSTREAM_CREATE_QSRI_EXPORT_VK 0xa002
|
|
#define GFXSTREAM_RESOURCE_CREATE_3D 0xa003
|
|
#define GFXSTREAM_ACQUIRE_SYNC 0xa004
|
|
|
|
// clang-format off
|
|
// A placeholder command to ensure virtio-gpu completes
|
|
#define GFXSTREAM_PLACEHOLDER_COMMAND_VK 0xf002
|
|
// clang-format on
|
|
|
|
struct gfxstreamHeader {
|
|
uint32_t opCode;
|
|
};
|
|
|
|
struct gfxstreamContextCreate {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t resourceId;
|
|
};
|
|
|
|
struct gfxstreamContextPing {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t resourceId;
|
|
};
|
|
|
|
struct gfxstreamCreateExportSync {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t syncHandleLo;
|
|
uint32_t syncHandleHi;
|
|
};
|
|
|
|
struct gfxstreamCreateExportSyncVK {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t deviceHandleLo;
|
|
uint32_t deviceHandleHi;
|
|
uint32_t fenceHandleLo;
|
|
uint32_t fenceHandleHi;
|
|
};
|
|
|
|
struct gfxstreamCreateQSRIExportVK {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t imageHandleLo;
|
|
uint32_t imageHandleHi;
|
|
};
|
|
|
|
struct gfxstreamPlaceholderCommandVk {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t pad;
|
|
uint32_t padding;
|
|
};
|
|
|
|
struct gfxstreamResourceCreate3d {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t target;
|
|
uint32_t format;
|
|
uint32_t bind;
|
|
uint32_t width;
|
|
uint32_t height;
|
|
uint32_t depth;
|
|
uint32_t arraySize;
|
|
uint32_t lastLevel;
|
|
uint32_t nrSamples;
|
|
uint32_t flags;
|
|
uint32_t pad;
|
|
uint64_t blobId;
|
|
};
|
|
|
|
struct gfxstreamAcquireSync {
|
|
struct gfxstreamHeader hdr;
|
|
uint32_t padding;
|
|
uint64_t syncId;
|
|
};
|
|
|
|
struct vulkanCapset {
|
|
uint32_t protocolVersion;
|
|
|
|
// ASG Ring Parameters
|
|
uint32_t ringSize;
|
|
uint32_t bufferSize;
|
|
|
|
uint32_t colorBufferMemoryIndex;
|
|
uint32_t deferredMapping;
|
|
uint32_t blobAlignment;
|
|
uint32_t noRenderControlEnc;
|
|
uint32_t alwaysBlob;
|
|
uint32_t externalSync;
|
|
uint32_t virglSupportedFormats[16];
|
|
uint32_t vulkanBatchedDescriptorSetUpdate;
|
|
};
|
|
|
|
struct magmaCapset {
|
|
uint32_t protocolVersion;
|
|
// ASG Ring Parameters
|
|
uint32_t ringSize;
|
|
uint32_t bufferSize;
|
|
uint32_t blobAlignment;
|
|
};
|
|
|
|
struct glesCapset {
|
|
uint32_t protocolVersion;
|
|
// ASG Ring Parameters
|
|
uint32_t ringSize;
|
|
uint32_t bufferSize;
|
|
uint32_t blobAlignment;
|
|
};
|
|
|
|
struct composerCapset {
|
|
uint32_t protocolVersion;
|
|
// ASG Ring Parameters
|
|
uint32_t ringSize;
|
|
uint32_t bufferSize;
|
|
uint32_t blobAlignment;
|
|
};
|
|
|
|
#endif
|