Files
RedBear-OS/local/recipes/libs/libdrm/source/xf86drm_redox.h
T
vasilito 741f144c79 feat: VirtIO GPU driver, libdrm DRM ioctls, KWin/KF6 build fixes, display stack additions
- Add full VirtIO GPU driver with command submission, resource management,
  VirtQueue implementation, and transport layer; includes diagnostic probes
  for resource_create_2d ERR_INVALID_RESOURCE_ID investigation
- Expand libdrm Redox support with DRM ioctl wrappers (ADDFB, RMFB,
  CREATE_DUMB, MAP_DUMB, DESTROY_DUMB, GET_RESOURCES, GET_CONNECTOR,
  GET_CRTC, SET_CRTC, MODE_OBJ_GET_PROPERTIES, etc.) and xf86drm_redox.h
- Add redox-drm scheme handlers for VirtIO GPU-specific DRM ioctls
  (VIRTGPU_RESOURCE_CREATE, VIRTGPU_MAP, VIRTGPU_WAIT, VIRTGPU_INFO, etc.)
- Add display stack recipes: freetype2, lcms2, libdisplay-info, libepoxy,
  libxcvt
- Fix KWin build (recipe.toml expanded, kf6-ksvg added)
- Fix KF6 CMakeLists for cross-compilation (attica, kcmutils, kcolorscheme,
  kcompletion, kconfigwidgets, kdeclarative, kiconthemes, kitemmodels,
  kitemviews, kjobwidgets, ktextwidgets, kwayland, kxmlgui, kpty, solid)
- Add Qt6 futex support patch
- Add relibc patches: P3 strtold, P3 ld-so search path, P5 DRM ioctl removal
- Add base P4 pcid config scheme patch
- Update driver-manager hotplug/config, PCI config in redox-driver-sys
- Update greeter compositor and KDE session scripts
- Update AGENTS.md with zero-tolerance stubs policy and project knowledge
2026-05-14 10:31:13 +01:00

195 lines
5.5 KiB
C

#ifndef _XF86DRM_REDOX_H_
#define _XF86DRM_REDOX_H_
#if defined(__redox__)
#include <stddef.h>
#include <stdint.h>
#define REDOX_DRM_IOCTL_BASE 0x00A0UL
#define REDOX_LINUX_IOCTL_NR(request) ((unsigned long)((request) & 0xffUL))
#define REDOX_LINUX_IOCTL_SIZE(request) (((unsigned long)(request) >> 16) & 0x3fffUL)
#define REDOX_DRM_IOCTL_MODE_GETRESOURCES (REDOX_DRM_IOCTL_BASE + 0)
#define REDOX_DRM_IOCTL_MODE_SETCRTC (REDOX_DRM_IOCTL_BASE + 2)
#define REDOX_DRM_IOCTL_MODE_GETCRTC (REDOX_DRM_IOCTL_BASE + 3)
#define REDOX_DRM_IOCTL_MODE_GETENCODER (REDOX_DRM_IOCTL_BASE + 6)
#define REDOX_DRM_IOCTL_MODE_GETCONNECTOR (REDOX_DRM_IOCTL_BASE + 7)
#define REDOX_DRM_IOCTL_MODE_PAGE_FLIP (REDOX_DRM_IOCTL_BASE + 16)
#define REDOX_DRM_IOCTL_MODE_CREATE_DUMB (REDOX_DRM_IOCTL_BASE + 18)
#define REDOX_DRM_IOCTL_MODE_MAP_DUMB (REDOX_DRM_IOCTL_BASE + 19)
#define REDOX_DRM_IOCTL_MODE_DESTROY_DUMB (REDOX_DRM_IOCTL_BASE + 20)
#define REDOX_DRM_IOCTL_MODE_ADDFB (REDOX_DRM_IOCTL_BASE + 21)
#define REDOX_DRM_IOCTL_MODE_RMFB (REDOX_DRM_IOCTL_BASE + 22)
#define REDOX_DRM_IOCTL_GET_CAP (REDOX_DRM_IOCTL_BASE + 23)
#define REDOX_DRM_IOCTL_SET_CLIENT_CAP (REDOX_DRM_IOCTL_BASE + 24)
#define REDOX_DRM_IOCTL_VERSION (REDOX_DRM_IOCTL_BASE + 25)
#define REDOX_DRM_IOCTL_GEM_CLOSE (REDOX_DRM_IOCTL_BASE + 27)
#define REDOX_DRM_IOCTL_GEM_FLINK (REDOX_DRM_IOCTL_BASE + 10)
#define REDOX_DRM_IOCTL_GEM_OPEN (REDOX_DRM_IOCTL_BASE + 11)
#define REDOX_DRM_IOCTL_PRIME_HANDLE_TO_FD (REDOX_DRM_IOCTL_BASE + 29)
#define REDOX_DRM_IOCTL_PRIME_FD_TO_HANDLE (REDOX_DRM_IOCTL_BASE + 30)
#define REDOX_DRM_IOCTL_GET_MAGIC (REDOX_DRM_IOCTL_BASE + 33)
#define REDOX_DRM_IOCTL_AUTH_MAGIC (REDOX_DRM_IOCTL_BASE + 34)
#define REDOX_DRM_IOCTL_SET_MASTER (REDOX_DRM_IOCTL_BASE + 35)
#define REDOX_DRM_IOCTL_DROP_MASTER (REDOX_DRM_IOCTL_BASE + 36)
#define REDOX_DRM_IOCTL_MODE_OBJ_GETPROPERTIES (REDOX_DRM_IOCTL_BASE + 0x50)
#define REDOX_DRM_IOCTL_MODE_GETPROPERTY (REDOX_DRM_IOCTL_BASE + 0x51)
#define REDOX_DRM_IOCTL_MODE_GETPROPBLOB (REDOX_DRM_IOCTL_BASE + 0x52)
#define REDOX_DRM_IOCTL_MODE_CREATE_LEASE (REDOX_DRM_IOCTL_BASE + 0x53)
#define REDOX_DRM_IOCTL_MODE_LIST_LESSEES (REDOX_DRM_IOCTL_BASE + 0x54)
#define REDOX_DRM_IOCTL_MODE_OBJ_SETPROPERTY (REDOX_DRM_IOCTL_BASE + 0x55)
#define REDOX_DRM_IOCTL_MODE_GETPLANERESOURCES (REDOX_DRM_IOCTL_BASE + 0x56)
#define REDOX_DRM_IOCTL_MODE_GETPLANE (REDOX_DRM_IOCTL_BASE + 0x57)
#define REDOX_DRM_IOCTL_MODE_SETPLANE (REDOX_DRM_IOCTL_BASE + 0x58)
#define REDOX_DRM_IOCTL_MODE_ADDFB2 (REDOX_DRM_IOCTL_BASE + 0x59)
#define REDOX_DRM_IOCTL_GET_PCI_INFO (REDOX_DRM_IOCTL_BASE + 0x60)
struct redox_drm_pci_info_wire {
uint16_t vendor_id;
uint16_t device_id;
uint16_t subvendor_id;
uint16_t subdevice_id;
uint8_t revision_id;
uint8_t pad[3];
uint16_t domain;
uint8_t bus;
uint8_t dev;
uint8_t func;
uint8_t pad2[3];
};
struct redox_drm_resources_wire {
uint32_t connector_count;
uint32_t crtc_count;
uint32_t encoder_count;
};
struct redox_drm_connector_wire {
uint32_t connector_id;
uint32_t connection;
uint32_t connector_type;
uint32_t mm_width;
uint32_t mm_height;
uint32_t encoder_id;
uint32_t mode_count;
};
struct redox_drm_mode_wire {
uint32_t clock;
uint16_t hdisplay;
uint16_t hsync_start;
uint16_t hsync_end;
uint16_t htotal;
uint16_t hskew;
uint16_t vdisplay;
uint16_t vsync_start;
uint16_t vsync_end;
uint16_t vtotal;
uint16_t vscan;
uint32_t vrefresh;
uint32_t flags;
uint32_t type;
};
struct redox_drm_set_crtc_wire {
uint32_t crtc_id;
uint32_t fb_handle;
uint32_t connector_count;
uint32_t connectors[8];
struct redox_drm_mode_wire mode;
};
struct redox_drm_page_flip_wire {
uint32_t crtc_id;
uint32_t fb_handle;
uint32_t flags;
};
struct redox_drm_create_dumb_wire {
uint32_t width;
uint32_t height;
uint32_t bpp;
uint32_t flags;
uint32_t pitch;
uint32_t reserved0;
uint64_t size;
uint32_t handle;
uint32_t reserved1;
};
struct redox_drm_map_dumb_wire {
uint32_t handle;
uint32_t pad;
uint64_t offset;
};
struct redox_drm_destroy_dumb_wire {
uint32_t handle;
};
struct redox_drm_add_fb_wire {
uint32_t width;
uint32_t height;
uint32_t pitch;
uint32_t bpp;
uint32_t depth;
uint32_t handle;
uint32_t fb_id;
};
struct redox_drm_rm_fb_wire {
uint32_t fb_id;
};
struct redox_drm_get_crtc_wire {
uint32_t crtc_id;
uint32_t fb_id;
uint32_t x;
uint32_t y;
uint32_t mode_valid;
struct redox_drm_mode_wire mode;
};
struct redox_drm_version_wire {
int32_t major;
int32_t minor;
int32_t patch;
char name[64];
};
struct redox_drm_prime_handle_to_fd_wire {
uint32_t handle;
uint32_t flags;
};
struct redox_drm_prime_handle_to_fd_response_wire {
int32_t fd;
uint32_t pad;
};
struct redox_drm_prime_fd_to_handle_wire {
int32_t fd;
uint32_t pad;
};
struct redox_drm_prime_fd_to_handle_response_wire {
uint32_t handle;
uint32_t pad;
};
unsigned long redox_translate_request(unsigned long linux_nr);
int redox_drm_simple_ioctl(int fd, unsigned long request, void *arg);
int redox_drm_exchange(int fd, unsigned long request_code,
const void *payload, size_t payload_size,
void *response, size_t response_capacity,
size_t *response_size);
int redox_drm_exchange_alloc(int fd, unsigned long request_code,
const void *payload, size_t payload_size,
void **response, size_t *response_size);
#endif
#endif