From 5bdc92890801a001fd06803ef6a008c1165c1a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B3zef=20Kucia?= Date: Fri, 1 Sep 2017 11:27:58 +0200 Subject: [PATCH] libs/vkd3d-shader: Export shader scan function. For UAV counters support in libvkd3d. --- include/vkd3d_shader.h | 11 +++++++++++ libs/vkd3d-shader/vkd3d_shader_main.c | 4 ++-- libs/vkd3d-shader/vkd3d_shader_private.h | 11 ----------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/include/vkd3d_shader.h b/include/vkd3d_shader.h index d92f73a3..331a0e0f 100644 --- a/include/vkd3d_shader.h +++ b/include/vkd3d_shader.h @@ -105,6 +105,17 @@ HRESULT vkd3d_shader_parse_root_signature(const struct vkd3d_shader_code *dxbc, 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 } #endif /* __cplusplus */ diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 05ddc411..c4de57ba 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -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, 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; } @@ -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, 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; } diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index f7ab4f11..0f66f0f5 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -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; 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 *vkd3d_dxbc_compiler_create(const struct vkd3d_shader_version *shader_version,