diff options
author | Lionel Landwerlin <[email protected]> | 2017-01-25 13:58:14 +0000 |
---|---|---|
committer | Lionel Landwerlin <[email protected]> | 2017-02-01 15:08:33 +0000 |
commit | 875b15eec4c1a0cab986f5eccfc54e3c0df02f7c (patch) | |
tree | 9c34ae3f20d2cf0d7262f20f959891926c5ff0c9 | |
parent | bd46040162c703b11db4cd042abe323a0c829325 (diff) |
spirv: add SPV_KHR_shader_draw_parameters support
Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Reviewed-by: Anuj Phogat <[email protected]>
-rw-r--r-- | src/compiler/spirv/nir_spirv.h | 1 | ||||
-rw-r--r-- | src/compiler/spirv/spirv_to_nir.c | 4 | ||||
-rw-r--r-- | src/compiler/spirv/vtn_variables.c | 12 |
3 files changed, 17 insertions, 0 deletions
diff --git a/src/compiler/spirv/nir_spirv.h b/src/compiler/spirv/nir_spirv.h index e3f4ee85cc9..e0ebc625844 100644 --- a/src/compiler/spirv/nir_spirv.h +++ b/src/compiler/spirv/nir_spirv.h @@ -48,6 +48,7 @@ struct nir_spirv_supported_extensions { bool float64; bool image_ms_array; bool tessellation; + bool draw_parameters; }; nir_function *spirv_to_nir(const uint32_t *words, size_t word_count, diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 6c54dca248d..9f0b8fd3665 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -2683,6 +2683,10 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, spv_check_supported(tessellation, cap); break; + case SpvCapabilityDrawParameters: + spv_check_supported(draw_parameters, cap); + break; + default: unreachable("Unhandled capability"); } diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index 05345b303e5..098cfb5de7a 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -1010,6 +1010,18 @@ vtn_get_builtin_location(struct vtn_builder *b, *location = SYSTEM_VALUE_GLOBAL_INVOCATION_ID; set_mode_system_value(mode); break; + case SpvBuiltInBaseVertex: + *location = SYSTEM_VALUE_BASE_VERTEX; + set_mode_system_value(mode); + break; + case SpvBuiltInBaseInstance: + *location = SYSTEM_VALUE_BASE_INSTANCE; + set_mode_system_value(mode); + break; + case SpvBuiltInDrawIndex: + *location = SYSTEM_VALUE_DRAW_ID; + set_mode_system_value(mode); + break; case SpvBuiltInHelperInvocation: default: unreachable("unsupported builtin"); |