radeonsi: fix tess levels coming as scalar arrays from SPIR-V

This fixes: KHR-GL45.gl_spirv.spirv_modules_positive_test

Fixes: 75ce078a0a "radeonsi: enable NIR by default and document GL 4.6 support"

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6460>
This commit is contained in:
Marek Olšák
2020-08-25 13:54:38 -04:00
committed by Marge Bot
parent e512f2cef9
commit a61890883d
@@ -513,7 +513,7 @@ static void si_nir_store_output_tcs(struct ac_shader_abi *abi, const struct nir_
{
struct si_shader_context *ctx = si_shader_context_from_abi(abi);
struct si_shader_info *info = &ctx->shader->selector->info;
const unsigned component = var->data.location_frac;
unsigned component = var->data.location_frac;
unsigned driver_location = var->data.driver_location;
LLVMValueRef dw_addr, stride;
LLVMValueRef buffer, base, addr;
@@ -521,6 +521,12 @@ static void si_nir_store_output_tcs(struct ac_shader_abi *abi, const struct nir_
bool skip_lds_store;
bool is_tess_factor = false, is_tess_inner = false;
if (var->data.compact) {
component += const_index;
writemask <<= const_index;
const_index = 0;
}
driver_location = driver_location / 4;
ubyte name = info->output_semantic_name[driver_location];
ubyte index = info->output_semantic_index[driver_location];