nir/vtn: add caps for some cl related capabilities

vtn supports these, so don't squalk if user is happy with enabling
these.

v2: add new members sorted

Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Rob Clark
2018-02-26 18:01:02 -05:00
committed by Karol Herbst
parent ce08e5f39c
commit fa737042ad
3 changed files with 20 additions and 5 deletions

View File

@@ -33,6 +33,7 @@ extern "C" {
#endif #endif
struct spirv_supported_capabilities { struct spirv_supported_capabilities {
bool address;
bool atomic_storage; bool atomic_storage;
bool descriptor_array_dynamic_indexing; bool descriptor_array_dynamic_indexing;
bool device_group; bool device_group;
@@ -43,9 +44,11 @@ struct spirv_supported_capabilities {
bool image_ms_array; bool image_ms_array;
bool image_read_without_format; bool image_read_without_format;
bool image_write_without_format; bool image_write_without_format;
bool int8;
bool int16; bool int16;
bool int64; bool int64;
bool int64_atomics; bool int64_atomics;
bool kernel;
bool min_lod; bool min_lod;
bool multiview; bool multiview;
bool post_depth_coverage; bool post_depth_coverage;

View File

@@ -820,8 +820,10 @@ struct_member_decoration_cb(struct vtn_builder *b,
case SpvDecorationFPRoundingMode: case SpvDecorationFPRoundingMode:
case SpvDecorationFPFastMathMode: case SpvDecorationFPFastMathMode:
case SpvDecorationAlignment: case SpvDecorationAlignment:
vtn_warn("Decoration only allowed for CL-style kernels: %s", if (b->shader->info.stage != MESA_SHADER_KERNEL) {
spirv_decoration_to_string(dec->decoration)); vtn_warn("Decoration only allowed for CL-style kernels: %s",
spirv_decoration_to_string(dec->decoration));
}
break; break;
case SpvDecorationHlslSemanticGOOGLE: case SpvDecorationHlslSemanticGOOGLE:
@@ -3521,7 +3523,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvCapabilityVector16: case SpvCapabilityVector16:
case SpvCapabilityFloat16Buffer: case SpvCapabilityFloat16Buffer:
case SpvCapabilityFloat16: case SpvCapabilityFloat16:
case SpvCapabilityInt8:
case SpvCapabilitySparseResidency: case SpvCapabilitySparseResidency:
vtn_warn("Unsupported SPIR-V capability: %s", vtn_warn("Unsupported SPIR-V capability: %s",
spirv_capability_to_string(cap)); spirv_capability_to_string(cap));
@@ -3555,6 +3556,9 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
case SpvCapabilityInt64Atomics: case SpvCapabilityInt64Atomics:
spv_check_supported(int64_atomics, cap); spv_check_supported(int64_atomics, cap);
case SpvCapabilityInt8:
spv_check_supported(int8, cap);
break; break;
case SpvCapabilityStorageImageMultisample: case SpvCapabilityStorageImageMultisample:
@@ -3562,7 +3566,13 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
break; break;
case SpvCapabilityAddresses: case SpvCapabilityAddresses:
spv_check_supported(address, cap);
break;
case SpvCapabilityKernel: case SpvCapabilityKernel:
spv_check_supported(kernel, cap);
break;
case SpvCapabilityImageBasic: case SpvCapabilityImageBasic:
case SpvCapabilityImageReadWrite: case SpvCapabilityImageReadWrite:
case SpvCapabilityImageMipmap: case SpvCapabilityImageMipmap:

View File

@@ -1511,8 +1511,10 @@ apply_var_decoration(struct vtn_builder *b,
case SpvDecorationFPRoundingMode: case SpvDecorationFPRoundingMode:
case SpvDecorationFPFastMathMode: case SpvDecorationFPFastMathMode:
case SpvDecorationAlignment: case SpvDecorationAlignment:
vtn_warn("Decoration only allowed for CL-style kernels: %s", if (b->shader->info.stage != MESA_SHADER_KERNEL) {
spirv_decoration_to_string(dec->decoration)); vtn_warn("Decoration only allowed for CL-style kernels: %s",
spirv_decoration_to_string(dec->decoration));
}
break; break;
case SpvDecorationHlslSemanticGOOGLE: case SpvDecorationHlslSemanticGOOGLE: