MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-ValidationLayers / StorageClass

Method StorageClass

layers/state_tracker/shader_module.cpp:3122–3169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3120}
3121
3122spv::StorageClass Module::StorageClass(const Instruction& insn) const {
3123 spv::StorageClass storage_class = spv::StorageClassMax;
3124 uint32_t ptr_id = 0;
3125 // TODO: this could be expanded to many more opcodes,
3126 // but only contains minimally necessary ones right now.
3127 switch (insn.Opcode()) {
3128 case spv::OpVariable:
3129 case spv::OpUntypedVariableKHR:
3130 case spv::OpTypePointer:
3131 case spv::OpTypeForwardPointer:
3132 case spv::OpTypeUntypedPointerKHR:
3133 storage_class = insn.StorageClass();
3134 break;
3135 case spv::OpLoad:
3136 case spv::OpAtomicLoad:
3137 case spv::OpAtomicExchange:
3138 case spv::OpAtomicCompareExchange:
3139 case spv::OpAtomicIIncrement:
3140 case spv::OpAtomicIDecrement:
3141 case spv::OpAtomicIAdd:
3142 case spv::OpAtomicISub:
3143 case spv::OpAtomicSMin:
3144 case spv::OpAtomicSMax:
3145 case spv::OpAtomicUMin:
3146 case spv::OpAtomicUMax:
3147 case spv::OpAtomicAnd:
3148 case spv::OpAtomicOr:
3149 case spv::OpAtomicFMinEXT:
3150 case spv::OpAtomicFMaxEXT:
3151 case spv::OpAtomicFAddEXT:
3152 ptr_id = insn.Word(3);
3153 break;
3154 case spv::OpStore:
3155 case spv::OpAtomicStore:
3156 ptr_id = insn.Word(1);
3157 break;
3158 default:
3159 break;
3160 }
3161
3162 if (ptr_id != 0) {
3163 const uint32_t ptr_ty_id = GetTypeId(ptr_id);
3164 const Instruction* ptr_insn = FindDef(ptr_ty_id);
3165 storage_class = ptr_insn->StorageClass();
3166 }
3167
3168 return storage_class;
3169}
3170
3171bool Module::UsesStorageCapabilityStorageClass(const Instruction& insn) const {
3172 switch (StorageClass(insn)) {

Callers 13

EntryPointMethod · 0.45
GetInterfaceSlotsMethod · 0.45
GetTypeBitsSizeMethod · 0.45
GetBaseTypeMethod · 0.45
GetAtomicInfoMethod · 0.45
GetVariableInfoFunction · 0.45
ValidateVariablesMethod · 0.45

Calls 2

OpcodeMethod · 0.80
WordMethod · 0.80

Tested by

no test coverage detected