1 2#ifndef _WINSYS_HANDLE_H_ 3#define _WINSYS_HANDLE_H_ 4 5#ifdef _WIN32 6#include <windows.h> 7#endif 8 9#ifdef __cplusplus 10extern "C" { 11#endif 12 13#define WINSYS_HANDLE_TYPE_SHARED 0 14#define WINSYS_HANDLE_TYPE_KMS 1 15#define WINSYS_HANDLE_TYPE_FD 2 16/* Win32 handles serve the same purpose as FD, just on Windows, so alias the value */ 17#define WINSYS_HANDLE_TYPE_WIN32_HANDLE WINSYS_HANDLE_TYPE_FD 18#define WINSYS_HANDLE_TYPE_SHMID 3 19#define WINSYS_HANDLE_TYPE_D3D12_RES 4 20#define WINSYS_HANDLE_TYPE_WIN32_NAME 5 21 22/** 23 * For use with pipe_screen::{resource_from_handle|resource_get_handle}. 24 */ 25struct winsys_handle 26{ 27 /** 28 * Input for resource_from_handle, valid values are 29 * WINSYS_HANDLE_TYPE_SHARED or WINSYS_HANDLE_TYPE_FD. 30 * Input to resource_get_handle, 31 * to select handle for kms, flink, or prime. 32 */ 33 unsigned type; 34 /** 35 * Input for resource_get_handle, allows to export the offset 36 * of a specific layer of an array texture. 37 */ 38 unsigned layer; 39 /** 40 * Input for resource_get_handle, allows to export of a specific plane of a 41 * texture. 42 */ 43 unsigned plane; 44 /** 45 * Input to resource_from_handle. 46 * Output for resource_get_handle. 47 */ 48#ifdef _WIN32 49 HANDLE handle; 50#else 51 unsigned handle; 52#endif 53 /** 54 * Input to resource_from_handle. 55 * Output for resource_get_handle. 56 */ 57 unsigned stride; 58 /** 59 * Input to resource_from_handle. 60 * Output for resource_get_handle. 61 */ 62 unsigned offset; 63 64 /** 65 * Input to resource_from_handle. 66 * Output from resource_get_handle. 67 */ 68 uint64_t format; 69 70 /** 71 * Input to resource_from_handle. 72 * Output from resource_get_handle. 73 */ 74 uint64_t modifier; 75 76 union 77 { 78 /** 79 * Input to resource_from_handle. 80 * Output for resource_get_handle. 81 */ 82 void *com_obj; 83 84 /** 85 * String name for an object. 86 * Input to resource_from_handle. 87 */ 88 const void *name; 89 }; 90 91 /** 92 * Total size of the object. 93 * Output for resource_get_handle. 94 */ 95 uint64_t size; 96}; 97 98#ifdef __cplusplus 99} 100#endif 101 102#endif /* _WINSYS_HANDLE_H_ */ 103