diff options
-rw-r--r-- | src/compiler/shader_info.h | 3 | ||||
-rw-r--r-- | src/compiler/spirv/spirv_to_nir.c | 16 | ||||
-rw-r--r-- | src/compiler/spirv/vtn_variables.c | 6 |
3 files changed, 20 insertions, 5 deletions
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h index 87a2c805d37..7af36a66d13 100644 --- a/src/compiler/shader_info.h +++ b/src/compiler/shader_info.h @@ -33,6 +33,7 @@ extern "C" { #endif struct spirv_supported_capabilities { + bool address; bool atomic_storage; bool descriptor_array_dynamic_indexing; bool device_group; @@ -43,9 +44,11 @@ struct spirv_supported_capabilities { bool image_ms_array; bool image_read_without_format; bool image_write_without_format; + bool int8; bool int16; bool int64; bool int64_atomics; + bool kernel; bool min_lod; bool multiview; bool post_depth_coverage; diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c index 4e5be79c9d7..19e4319bd24 100644 --- a/src/compiler/spirv/spirv_to_nir.c +++ b/src/compiler/spirv/spirv_to_nir.c @@ -820,8 +820,10 @@ struct_member_decoration_cb(struct vtn_builder *b, case SpvDecorationFPRoundingMode: case SpvDecorationFPFastMathMode: case SpvDecorationAlignment: - vtn_warn("Decoration only allowed for CL-style kernels: %s", - spirv_decoration_to_string(dec->decoration)); + if (b->shader->info.stage != MESA_SHADER_KERNEL) { + vtn_warn("Decoration only allowed for CL-style kernels: %s", + spirv_decoration_to_string(dec->decoration)); + } break; case SpvDecorationHlslSemanticGOOGLE: @@ -3521,7 +3523,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, case SpvCapabilityVector16: case SpvCapabilityFloat16Buffer: case SpvCapabilityFloat16: - case SpvCapabilityInt8: case SpvCapabilitySparseResidency: vtn_warn("Unsupported SPIR-V capability: %s", spirv_capability_to_string(cap)); @@ -3555,6 +3556,9 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, case SpvCapabilityInt64Atomics: spv_check_supported(int64_atomics, cap); + + case SpvCapabilityInt8: + spv_check_supported(int8, cap); break; case SpvCapabilityStorageImageMultisample: @@ -3562,7 +3566,13 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode, break; case SpvCapabilityAddresses: + spv_check_supported(address, cap); + break; + case SpvCapabilityKernel: + spv_check_supported(kernel, cap); + break; + case SpvCapabilityImageBasic: case SpvCapabilityImageReadWrite: case SpvCapabilityImageMipmap: diff --git a/src/compiler/spirv/vtn_variables.c b/src/compiler/spirv/vtn_variables.c index ced02fd6f7e..b6a5880090e 100644 --- a/src/compiler/spirv/vtn_variables.c +++ b/src/compiler/spirv/vtn_variables.c @@ -1511,8 +1511,10 @@ apply_var_decoration(struct vtn_builder *b, case SpvDecorationFPRoundingMode: case SpvDecorationFPFastMathMode: case SpvDecorationAlignment: - vtn_warn("Decoration only allowed for CL-style kernels: %s", - spirv_decoration_to_string(dec->decoration)); + if (b->shader->info.stage != MESA_SHADER_KERNEL) { + vtn_warn("Decoration only allowed for CL-style kernels: %s", + spirv_decoration_to_string(dec->decoration)); + } break; case SpvDecorationHlslSemanticGOOGLE: |