From: Zebediah Figura zfigura@codeweavers.com
--- libs/vkd3d-shader/vkd3d_shader_main.c | 5 ++++- libs/vkd3d-shader/vkd3d_shader_private.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 7ae95c34..bf6648c8 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -788,6 +788,7 @@ static void vkd3d_shader_scan_constant_buffer_declaration(struct vkd3d_shader_sc .resource_type = VKD3D_SHADER_RESOURCE_BUFFER, .resource_data_type = VKD3D_SHADER_RESOURCE_DATA_UINT, .count = count_from_register_range(&cb->range), + .buffer_size = cb->size * 16, };
if (!context->scan_descriptor_info) @@ -1163,6 +1164,7 @@ static int scan_with_parser(const struct vkd3d_shader_compile_info *compile_info
for (i = 0; i < ARRAY_SIZE(parser->shader_desc.flat_constant_count); ++i) { + unsigned int size = parser->shader_desc.flat_constant_count[i].external; struct vkd3d_shader_descriptor_info1 descriptor = { .type = VKD3D_SHADER_DESCRIPTOR_TYPE_CBV, @@ -1171,9 +1173,10 @@ static int scan_with_parser(const struct vkd3d_shader_compile_info *compile_info .resource_type = VKD3D_SHADER_RESOURCE_BUFFER, .resource_data_type = VKD3D_SHADER_RESOURCE_DATA_UINT, .count = 1, + .buffer_size = size * 16, };
- if (parser->shader_desc.flat_constant_count[i].external) + if (size) vkd3d_shader_scan_add_descriptor(&context, &descriptor); }
diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index 6cefa40e..2f811c70 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -1118,6 +1118,7 @@ struct vkd3d_shader_descriptor_info1 enum vkd3d_shader_resource_data_type resource_data_type; unsigned int flags; unsigned int sample_count; + unsigned int buffer_size; unsigned int count; };