#version 450 core #extension GL_ARB_gpu_shader_int64: enable #extension GL_EXT_buffer_reference: enable #extension GL_EXT_spirv_intrinsics: enable #define CapabilityPhysicalStorageBufferAddresses 5347 #define StorageClassPhysicalStorageBuffer 5349 #define OpTypePointer 32 #define OpLoad 61 #define OpConvertUToPtr 120 #define uintStoragePtr spirv_type(extensions = ["SPV_EXT_physical_storage_buffer", "SPV_KHR_variable_pointers"], capabilities = [CapabilityPhysicalStorageBufferAddresses], id = OpTypePointer, StorageClassPhysicalStorageBuffer, uint) // Just to enable the memory model of physical storage buffer layout(buffer_reference, std430) buffer Dummy { uint dummy; }; spirv_instruction(id = OpLoad) uint loadUint(uintStoragePtr pointer, spirv_literal uint memoryOperands, spirv_literal uint alignment); spirv_instruction(id = OpConvertUToPtr) uintStoragePtr convertToPtr(uint64_t value); void main() { uint value = loadUint(convertToPtr(1), 0x2, 32); }