mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2025-04-13 05:43:18 -07:00
libs/vkd3d-shader: Export shader scan function.
For UAV counters support in libvkd3d.
This commit is contained in:
@@ -105,6 +105,17 @@ HRESULT vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc,
|
|||||||
D3D12_ROOT_SIGNATURE_DESC *root_signature);
|
D3D12_ROOT_SIGNATURE_DESC *root_signature);
|
||||||
void vkd3d_shader_free_root_signature(D3D12_ROOT_SIGNATURE_DESC *root_signature);
|
void vkd3d_shader_free_root_signature(D3D12_ROOT_SIGNATURE_DESC *root_signature);
|
||||||
|
|
||||||
|
#define VKD3D_SHADER_MAX_UNORDERED_ACCESS_VIEWS 8
|
||||||
|
|
||||||
|
struct vkd3d_shader_scan_info
|
||||||
|
{
|
||||||
|
unsigned int uav_read_mask : VKD3D_SHADER_MAX_UNORDERED_ACCESS_VIEWS;
|
||||||
|
unsigned int uav_counter_mask : VKD3D_SHADER_MAX_UNORDERED_ACCESS_VIEWS;
|
||||||
|
};
|
||||||
|
|
||||||
|
HRESULT vkd3d_shader_scan_dxbc(const struct vkd3d_shader_code *dxbc,
|
||||||
|
struct vkd3d_shader_scan_info *scan_info);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@@ -120,7 +120,7 @@ static bool vkd3d_shader_instruction_is_uav_read(const struct vkd3d_shader_instr
|
|||||||
static void vkd3d_shader_scan_record_uav_read(struct vkd3d_shader_scan_info *scan_info,
|
static void vkd3d_shader_scan_record_uav_read(struct vkd3d_shader_scan_info *scan_info,
|
||||||
const struct vkd3d_shader_register *reg)
|
const struct vkd3d_shader_register *reg)
|
||||||
{
|
{
|
||||||
assert(reg->idx[0].offset < MAX_UNORDERED_ACCESS_VIEWS);
|
assert(reg->idx[0].offset < VKD3D_SHADER_MAX_UNORDERED_ACCESS_VIEWS);
|
||||||
scan_info->uav_read_mask |= 1u << reg->idx[0].offset;
|
scan_info->uav_read_mask |= 1u << reg->idx[0].offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ static bool vkd3d_shader_instruction_is_uav_counter(const struct vkd3d_shader_in
|
|||||||
static void vkd3d_shader_scan_record_uav_counter(struct vkd3d_shader_scan_info *scan_info,
|
static void vkd3d_shader_scan_record_uav_counter(struct vkd3d_shader_scan_info *scan_info,
|
||||||
const struct vkd3d_shader_register *reg)
|
const struct vkd3d_shader_register *reg)
|
||||||
{
|
{
|
||||||
assert(reg->idx[0].offset < MAX_UNORDERED_ACCESS_VIEWS);
|
assert(reg->idx[0].offset < VKD3D_SHADER_MAX_UNORDERED_ACCESS_VIEWS);
|
||||||
scan_info->uav_counter_mask |= 1u << reg->idx[0].offset;
|
scan_info->uav_counter_mask |= 1u << reg->idx[0].offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -819,17 +819,6 @@ struct vkd3d_shader_signature_element *shader_find_signature_element(const struc
|
|||||||
const char *semantic_name, unsigned int semantic_idx, unsigned int stream_idx) DECLSPEC_HIDDEN;
|
const char *semantic_name, unsigned int semantic_idx, unsigned int stream_idx) DECLSPEC_HIDDEN;
|
||||||
void free_shader_desc(struct vkd3d_shader_desc *desc) DECLSPEC_HIDDEN;
|
void free_shader_desc(struct vkd3d_shader_desc *desc) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
#define MAX_UNORDERED_ACCESS_VIEWS 8
|
|
||||||
|
|
||||||
struct vkd3d_shader_scan_info
|
|
||||||
{
|
|
||||||
unsigned int uav_read_mask : MAX_UNORDERED_ACCESS_VIEWS;
|
|
||||||
unsigned int uav_counter_mask : MAX_UNORDERED_ACCESS_VIEWS;
|
|
||||||
};
|
|
||||||
|
|
||||||
HRESULT vkd3d_shader_scan_dxbc(const struct vkd3d_shader_code *dxbc,
|
|
||||||
struct vkd3d_shader_scan_info *scan_info) DECLSPEC_HIDDEN;
|
|
||||||
|
|
||||||
struct vkd3d_dxbc_compiler;
|
struct vkd3d_dxbc_compiler;
|
||||||
|
|
||||||
struct vkd3d_dxbc_compiler *vkd3d_dxbc_compiler_create(const struct vkd3d_shader_version *shader_version,
|
struct vkd3d_dxbc_compiler *vkd3d_dxbc_compiler_create(const struct vkd3d_shader_version *shader_version,
|
||||||
|
Reference in New Issue
Block a user