spirv/nir: add capability check for SpvCapabilityAtomicStorage
Capability that informs if atomic counters are supported. From SPIR-V 1.0 spec, section 3.7, "Storage Class", item 10 from table: (Column "Storage Class"): "AtomicCounter For holding atomic counters. Visible across all functions of the current invocation. Atomic counter-specific memory." (Column "Required Capability"): "AtomicStorage" Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
@@ -57,6 +57,7 @@ struct spirv_supported_capabilities {
|
|||||||
bool descriptor_array_dynamic_indexing;
|
bool descriptor_array_dynamic_indexing;
|
||||||
bool runtime_descriptor_array;
|
bool runtime_descriptor_array;
|
||||||
bool stencil_export;
|
bool stencil_export;
|
||||||
|
bool atomic_storage;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct shader_info {
|
typedef struct shader_info {
|
||||||
|
@@ -3389,7 +3389,6 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
|
|||||||
case SpvCapabilityFloat16Buffer:
|
case SpvCapabilityFloat16Buffer:
|
||||||
case SpvCapabilityFloat16:
|
case SpvCapabilityFloat16:
|
||||||
case SpvCapabilityInt64Atomics:
|
case SpvCapabilityInt64Atomics:
|
||||||
case SpvCapabilityAtomicStorage:
|
|
||||||
case SpvCapabilityStorageImageMultisample:
|
case SpvCapabilityStorageImageMultisample:
|
||||||
case SpvCapabilityInt8:
|
case SpvCapabilityInt8:
|
||||||
case SpvCapabilitySparseResidency:
|
case SpvCapabilitySparseResidency:
|
||||||
@@ -3399,6 +3398,10 @@ vtn_handle_preamble_instruction(struct vtn_builder *b, SpvOp opcode,
|
|||||||
spirv_capability_to_string(cap));
|
spirv_capability_to_string(cap));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SpvCapabilityAtomicStorage:
|
||||||
|
spv_check_supported(atomic_storage, cap);
|
||||||
|
break;
|
||||||
|
|
||||||
case SpvCapabilityFloat64:
|
case SpvCapabilityFloat64:
|
||||||
spv_check_supported(float64, cap);
|
spv_check_supported(float64, cap);
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user