diff --git a/libs/vkd3d-shader/d3dbc.c b/libs/vkd3d-shader/d3dbc.c index 87a7d48ac..65c469e9a 100644 --- a/libs/vkd3d-shader/d3dbc.c +++ b/libs/vkd3d-shader/d3dbc.c @@ -1595,7 +1595,7 @@ int d3dbc_parse(const struct vkd3d_shader_compile_info *compile_info, uint64_t c } } - program->has_descriptor_info = true; + program->normalisation_flags.has_descriptor_info = true; if (TRACE_ON()) vsir_program_trace(program); diff --git a/libs/vkd3d-shader/glsl.c b/libs/vkd3d-shader/glsl.c index 4d7505d87..2e41a8609 100644 --- a/libs/vkd3d-shader/glsl.c +++ b/libs/vkd3d-shader/glsl.c @@ -2481,8 +2481,8 @@ int glsl_compile(struct vsir_program *program, uint64_t config_flags, return ret; VKD3D_ASSERT(program->normalisation_level == VSIR_NORMALISED_SM6); - VKD3D_ASSERT(program->has_descriptor_info); - VKD3D_ASSERT(program->has_no_modifiers); + VKD3D_ASSERT(program->normalisation_flags.has_descriptor_info); + VKD3D_ASSERT(program->normalisation_flags.has_no_modifiers); vkd3d_glsl_generator_init(&generator, program, compile_info, combined_sampler_info, message_context); diff --git a/libs/vkd3d-shader/hlsl_codegen.c b/libs/vkd3d-shader/hlsl_codegen.c index 382e0cebc..345f5fa73 100644 --- a/libs/vkd3d-shader/hlsl_codegen.c +++ b/libs/vkd3d-shader/hlsl_codegen.c @@ -13478,7 +13478,7 @@ static void generate_vsir_descriptors(struct hlsl_ctx *ctx, struct vsir_program } } - program->has_descriptor_info = true; + program->normalisation_flags.has_descriptor_info = true; } /* For some reason, for matrices, values from default value initializers end diff --git a/libs/vkd3d-shader/ir.c b/libs/vkd3d-shader/ir.c index 12c37adbd..1a0c9d833 100644 --- a/libs/vkd3d-shader/ir.c +++ b/libs/vkd3d-shader/ir.c @@ -2550,7 +2550,7 @@ static enum vkd3d_result vsir_program_lower_modifiers(struct vsir_program *progr } } - program->has_no_modifiers = true; + program->normalisation_flags.has_no_modifiers = true; return ret; } @@ -11460,7 +11460,7 @@ static void vsir_validate_descriptor_indices(struct validation_context *ctx, validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_INDEX, "Non-NULL indirect address for the ID of a register of type \"%s\".", name); - if (!ctx->program->has_descriptor_info) + if (!ctx->program->normalisation_flags.has_descriptor_info) return; if (!(descriptor = vkd3d_shader_find_descriptor(&ctx->program->descriptors, type, reg->idx[0].offset))) @@ -11897,7 +11897,7 @@ static void vsir_validate_dst_param(struct validation_context *ctx, break; } - if (dst->modifiers & ~VKD3DSPDM_MASK || (ctx->program->has_no_modifiers && dst->modifiers)) + if (dst->modifiers & ~VKD3DSPDM_MASK || (ctx->program->normalisation_flags.has_no_modifiers && dst->modifiers)) validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS, "Destination has invalid modifiers %#x.", dst->modifiers); @@ -12078,7 +12078,7 @@ static void vsir_validate_src_param(struct validation_context *ctx, validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_SWIZZLE, "Immediate constant source has invalid swizzle %#x.", src->swizzle); - if (src->modifiers >= VKD3DSPSM_COUNT || (ctx->program->has_no_modifiers && src->modifiers)) + if (src->modifiers >= VKD3DSPSM_COUNT || (ctx->program->normalisation_flags.has_no_modifiers && src->modifiers)) validator_error(ctx, VKD3D_SHADER_ERROR_VSIR_INVALID_MODIFIERS, "Source has invalid modifiers %#x.", src->modifiers); diff --git a/libs/vkd3d-shader/msl.c b/libs/vkd3d-shader/msl.c index d34133d6d..2a6a243ee 100644 --- a/libs/vkd3d-shader/msl.c +++ b/libs/vkd3d-shader/msl.c @@ -2401,8 +2401,8 @@ int msl_compile(struct vsir_program *program, uint64_t config_flags, return ret; VKD3D_ASSERT(program->normalisation_level == VSIR_NORMALISED_SM6); - VKD3D_ASSERT(program->has_descriptor_info); - VKD3D_ASSERT(program->has_no_modifiers); + VKD3D_ASSERT(program->normalisation_flags.has_descriptor_info); + VKD3D_ASSERT(program->normalisation_flags.has_no_modifiers); if ((ret = msl_generator_init(&generator, program, compile_info, message_context)) < 0) return ret; diff --git a/libs/vkd3d-shader/spirv.c b/libs/vkd3d-shader/spirv.c index a0059cf7d..1c6266576 100644 --- a/libs/vkd3d-shader/spirv.c +++ b/libs/vkd3d-shader/spirv.c @@ -10966,8 +10966,8 @@ int spirv_compile(struct vsir_program *program, uint64_t config_flags, VKD3D_ASSERT(program->normalisation_level == VSIR_NORMALISED_SM6); VKD3D_ASSERT(program->normalisation_flags.normalised_clip_cull_arrays); - VKD3D_ASSERT(program->has_descriptor_info); - VKD3D_ASSERT(program->has_no_modifiers); + VKD3D_ASSERT(program->normalisation_flags.has_descriptor_info); + VKD3D_ASSERT(program->normalisation_flags.has_no_modifiers); if (!(spirv_compiler = spirv_compiler_create(program, compile_info, message_context, config_flags))) diff --git a/libs/vkd3d-shader/vkd3d_shader_main.c b/libs/vkd3d-shader/vkd3d_shader_main.c index 6f0520f19..92a3dbb4c 100644 --- a/libs/vkd3d-shader/vkd3d_shader_main.c +++ b/libs/vkd3d-shader/vkd3d_shader_main.c @@ -1677,7 +1677,7 @@ static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_sh add_descriptor_info = true; } - if (program->has_descriptor_info) + if (program->normalisation_flags.has_descriptor_info) add_descriptor_info = false; tessellation_info = vkd3d_find_struct(compile_info->next, SCAN_HULL_SHADER_TESSELLATION_INFO); @@ -1687,7 +1687,7 @@ static int vsir_program_scan(struct vsir_program *program, const struct vkd3d_sh add_descriptor_info ? &program->descriptors : NULL, combined_sampler_info, message_context); if (add_descriptor_info) - program->has_descriptor_info = true; + program->normalisation_flags.has_descriptor_info = true; if (TRACE_ON()) vsir_program_trace(program); diff --git a/libs/vkd3d-shader/vkd3d_shader_private.h b/libs/vkd3d-shader/vkd3d_shader_private.h index c77cdb5d6..dece8e2ea 100644 --- a/libs/vkd3d-shader/vkd3d_shader_private.h +++ b/libs/vkd3d-shader/vkd3d_shader_private.h @@ -985,6 +985,8 @@ struct vkd3d_shader_version struct vsir_normalisation_flags { + bool has_descriptor_info; + bool has_no_modifiers; bool normalised_clip_cull_arrays; }; @@ -1626,7 +1628,6 @@ struct vsir_program struct shader_signature patch_constant_signature; struct vkd3d_shader_scan_descriptor_info1 descriptors; - bool has_descriptor_info; size_t descriptors_size; unsigned int parameter_count; @@ -1645,7 +1646,6 @@ struct vsir_program bool has_fog; uint8_t diffuse_written_mask; enum vsir_control_flow_type cf_type; - bool has_no_modifiers; enum vkd3d_tessellator_domain tess_domain; enum vkd3d_shader_tessellator_partitioning tess_partitioning; enum vkd3d_shader_tessellator_output_primitive tess_output_primitive;