aboutsummaryrefslogtreecommitdiff
path: root/kms/kms_shared.h
diff options
context:
space:
mode:
Diffstat (limited to 'kms/kms_shared.h')
-rw-r--r--kms/kms_shared.h33
1 files changed, 25 insertions, 8 deletions
diff --git a/kms/kms_shared.h b/kms/kms_shared.h
index e0687b2..4fa9c38 100644
--- a/kms/kms_shared.h
+++ b/kms/kms_shared.h
@@ -3,10 +3,16 @@
#include <stdint.h>
#include <stdbool.h>
+#include <drm_mode.h>
-#define GSR_KMS_MAX_PLANES 32
+#define GSR_KMS_PROTOCOL_VERSION 2
+#define GSR_KMS_MAX_PLANES 10
+
+typedef struct gsr_kms_response_fd gsr_kms_response_fd;
+typedef struct gsr_kms_response gsr_kms_response;
typedef enum {
+ KMS_REQUEST_TYPE_REPLACE_CONNECTION,
KMS_REQUEST_TYPE_GET_KMS
} gsr_kms_request_type;
@@ -14,14 +20,17 @@ typedef enum {
KMS_RESULT_OK,
KMS_RESULT_INVALID_REQUEST,
KMS_RESULT_FAILED_TO_GET_PLANE,
+ KMS_RESULT_FAILED_TO_GET_PLANES,
KMS_RESULT_FAILED_TO_SEND
} gsr_kms_result;
typedef struct {
- int type; /* gsr_kms_request_type */
+ uint32_t version; /* GSR_KMS_PROTOCOL_VERSION */
+ int type; /* gsr_kms_request_type */
+ int new_connection_fd;
} gsr_kms_request;
-typedef struct {
+struct gsr_kms_response_fd {
int fd;
uint32_t width;
uint32_t height;
@@ -31,13 +40,21 @@ typedef struct {
uint64_t modifier;
uint32_t connector_id; /* 0 if unknown */
bool is_combined_plane;
-} gsr_kms_response_fd;
-
-typedef struct {
- int result; /* gsr_kms_result */
+ bool is_cursor;
+ bool has_hdr_metadata;
+ int x;
+ int y;
+ int src_w;
+ int src_h;
+ struct hdr_output_metadata hdr_metadata;
+};
+
+struct gsr_kms_response {
+ uint32_t version; /* GSR_KMS_PROTOCOL_VERSION */
+ int result; /* gsr_kms_result */
char err_msg[128];
gsr_kms_response_fd fds[GSR_KMS_MAX_PLANES];
int num_fds;
-} gsr_kms_response;
+};
#endif /* #define GSR_KMS_SHARED_H */