From: Conor McCarthy cmccarthy@codeweavers.com
Prevents a RADV crash on pipeline creation. --- libs/vkd3d-shader/dxil.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/libs/vkd3d-shader/dxil.c b/libs/vkd3d-shader/dxil.c index 5f332f59..d1a4c619 100644 --- a/libs/vkd3d-shader/dxil.c +++ b/libs/vkd3d-shader/dxil.c @@ -2607,6 +2607,19 @@ static enum vkd3d_result sm6_parser_module_init(struct sm6_parser *sm6, const st return VKD3D_OK; }
+static void sm6_parser_emit_thread_group(struct sm6_parser *sm6) +{ + struct vkd3d_shader_thread_group_size thread_group_size = {1, 1, 1}; + struct vkd3d_shader_instruction *ins; + + ins = sm6_parser_add_instruction(sm6, VKD3DSIH_DCL_THREAD_GROUP); + ins->declaration.thread_group_size = thread_group_size; + + FIXME("Dimensions are defaulting to 1.\n"); + + ins->declaration.thread_group_size = thread_group_size; +} + static void sm6_type_table_cleanup(struct sm6_type *types, size_t count) { size_t i; @@ -2879,6 +2892,9 @@ static enum vkd3d_result sm6_parser_init(struct sm6_parser *sm6, const uint32_t
sm6_parser_init_output_signature(sm6, output_signature);
+ if (version.type == VKD3D_SHADER_TYPE_COMPUTE) + sm6_parser_emit_thread_group(sm6); + if ((ret = sm6_parser_module_init(sm6, &sm6->root_block, 0)) < 0) { if (ret == VKD3D_ERROR_OUT_OF_MEMORY)