diff --git a/.pick_status.json b/.pick_status.json index 3b36f09100f..2e0f8b74bbe 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -4216,7 +4216,7 @@ "description": "microsoft/clc: Let lower_vars_to_explicit_types fill kernel input driver_location", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "ff05da7f8dc4aa531704d48f718514e3b1fff45d" }, diff --git a/src/microsoft/clc/clc_compiler.c b/src/microsoft/clc/clc_compiler.c index 8cea38272cc..8e51e895bd6 100644 --- a/src/microsoft/clc/clc_compiler.c +++ b/src/microsoft/clc/clc_compiler.c @@ -1102,7 +1102,6 @@ clc_to_dxil(struct clc_context *ctx, unsigned size = glsl_get_cl_size(var->type); offset = align(offset, glsl_get_cl_alignment(var->type)); - var->data.driver_location = offset; metadata->args[i].offset = offset; metadata->args[i].size = size; @@ -1267,6 +1266,9 @@ clc_to_dxil(struct clc_context *ctx, NIR_PASS_V(nir, nir_opt_dce); NIR_PASS_V(nir, nir_opt_deref); + // For uniforms (kernel inputs), run this before adjusting variable list via image/sampler lowering + NIR_PASS_V(nir, nir_lower_vars_to_explicit_types, nir_var_uniform, glsl_get_cl_type_size_align); + // Needs to come before lower_explicit_io NIR_PASS_V(nir, nir_lower_cl_images_to_tex); struct clc_image_lower_context image_lower_context = { metadata, &srv_id, &uav_id }; @@ -1280,7 +1282,7 @@ clc_to_dxil(struct clc_context *ctx, nir->scratch_size = 0; NIR_PASS_V(nir, nir_lower_vars_to_explicit_types, - nir_var_mem_shared | nir_var_function_temp | nir_var_uniform | nir_var_mem_global | nir_var_mem_constant, + nir_var_mem_shared | nir_var_function_temp | nir_var_mem_global | nir_var_mem_constant, glsl_get_cl_type_size_align); NIR_PASS_V(nir, dxil_nir_lower_ubo_to_temp);