aboutsummaryrefslogtreecommitdiffstats
path: root/src/compiler/spirv
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/spirv')
-rw-r--r--src/compiler/spirv/spirv_to_nir.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 8c2b995be8f..98205a1b8b2 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -3776,6 +3776,11 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
spv_check_supported(physical_storage_buffer_address, cap);
break;
+ case SpvCapabilityComputeDerivativeGroupQuadsNV:
+ case SpvCapabilityComputeDerivativeGroupLinearNV:
+ spv_check_supported(derivative_group, cap);
+ break;
+
default:
vtn_fail("Unhandled capability");
}
@@ -4019,6 +4024,16 @@ vtn_handle_execution_mode(struct vtn_builder *b, struct vtn_value *entry_point,
vtn_assert(b->shader->info.stage == MESA_SHADER_FRAGMENT);
break;
+ case SpvExecutionModeDerivativeGroupQuadsNV:
+ vtn_assert(b->shader->info.stage == MESA_SHADER_COMPUTE);
+ b->shader->info.cs.derivative_group = DERIVATIVE_GROUP_QUADS;
+ break;
+
+ case SpvExecutionModeDerivativeGroupLinearNV:
+ vtn_assert(b->shader->info.stage == MESA_SHADER_COMPUTE);
+ b->shader->info.cs.derivative_group = DERIVATIVE_GROUP_LINEAR;
+ break;
+
default:
vtn_fail("Unhandled execution mode");
}