Refactor kms_vaapi and kms_cuda

Also fixes color metadata, color range and hdr on nvidia wayland.
This commit is contained in:
dec05eba
2024-03-03 03:47:30 +01:00
parent 4d8a9e2e1d
commit d0c221a233
24 changed files with 894 additions and 1350 deletions

View File

@@ -5,13 +5,15 @@
#include <sys/types.h>
#include <limits.h>
typedef struct {
typedef struct gsr_kms_client gsr_kms_client;
struct gsr_kms_client {
pid_t kms_server_pid;
int initial_socket_fd;
int initial_client_fd;
char initial_socket_path[PATH_MAX];
int socket_pair[2];
} gsr_kms_client;
};
/* |card_path| should be a path to card, for example /dev/dri/card0 */
int gsr_kms_client_init(gsr_kms_client *self, const char *card_path);

View File

@@ -8,6 +8,9 @@
#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
@@ -27,7 +30,7 @@ typedef struct {
int new_connection_fd;
} gsr_kms_request;
typedef struct {
struct gsr_kms_response_fd {
int fd;
uint32_t width;
uint32_t height;
@@ -44,14 +47,14 @@ typedef struct {
int src_w;
int src_h;
struct hdr_output_metadata hdr_metadata;
} gsr_kms_response_fd;
};
typedef struct {
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 */