[Mesa-dev] [PATCH 03/12] nir/vtn: add caps for some cl related capabilities
Karol Herbst
kherbst at redhat.com
Tue Dec 4 18:26:41 UTC 2018
From: Rob Clark <robdclark at gmail.com>
vtn supports these, so don't squalk if user is happy with enabling
these.
Signed-off-by: Karol Herbst <kherbst at redhat.com>
---
src/compiler/shader_info.h | 3 +++
src/compiler/spirv/spirv_to_nir.c | 17 ++++++++++++++---
src/compiler/spirv/vtn_variables.c | 6 ++++--
3 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/src/compiler/shader_info.h b/src/compiler/shader_info.h
index 65bc0588d67..5286cf8fc5f 100644
--- a/src/compiler/shader_info.h
+++ b/src/compiler/shader_info.h
@@ -62,6 +62,9 @@ struct spirv_supported_capabilities {
bool post_depth_coverage;
bool transform_feedback;
bool geometry_streams;
+ bool address;
+ bool kernel;
+ bool int8;
};
typedef struct shader_info {
diff --git a/src/compiler/spirv/spirv_to_nir.c b/src/compiler/spirv/spirv_to_nir.c
index 2c2dbe12a3c..e41a7e960ce 100644
--- a/src/compiler/spirv/spirv_to_nir.c
+++ b/src/compiler/spirv/spirv_to_nir.c
@@ -783,8 +783,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:
@@ -3420,7 +3422,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvCapabilityFloat16:
case SpvCapabilityInt64Atomics:
case SpvCapabilityStorageImageMultisample:
- case SpvCapabilityInt8:
case SpvCapabilitySparseResidency:
case SpvCapabilityMinLod:
vtn_warn("Unsupported SPIR-V capability: %s",
@@ -3449,8 +3450,18 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
spv_check_supported(geometry_streams, cap);
break;
+ case SpvCapabilityInt8:
+ spv_check_supported(int8, cap);
+ 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 55721fc36e3..fe44e71800d 100644
--- a/src/compiler/spirv/vtn_variables.c
+++ b/src/compiler/spirv/vtn_variables.c
@@ -1381,8 +1381,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:
--
2.19.2
More information about the mesa-dev
mailing list