Name EXT_shader_atomic_int64 Name Strings GL_EXT_shader_atomic_int64 Contact Aaron Hagan, AMD (aaron.hagan 'at' amd.com) Contributors Pat Brown, NVIDIA Jeff Bolz, NVIDIA Cyril Crassin, NVIDIA Christoph Kubisch, NVIDIA Aaron Hagan, AMD Daniel Rakos, AMD Status Complete. Version Last Modified Date: July 5, 2018 Number OpenGL Extension #XXX Dependencies This extension is written against version 4.40 (revision 8) of the OpenGL Shading Language Specification, dated January 22, 2014. Overview This extension provides additional GLSL built-in functions and assembly opcodes allowing shaders to perform additional atomic read-modify-write operations on 64-bit signed and unsigned integers. New Procedures and Functions None. New Tokens None. Additions to OpenGL 4.4 Specification None. Additions to the AGL/GLX/WGL Specifications None. GLX Protocol None. Modifications to the OpenGL Shading Language Specification, Version 4.40 (revision 8) Including the following line in a shader can be used to control the language features described in this extension: #extension GL_EXT_shader_atomic_int64 : where is as specified in section 3.3. New preprocessor #defines are added to the OpenGL Shading Language: #define GL_EXT_shader_atomic_int64 1 Modify Section 8.11, Atomic Memory Functions, p. 168 Add the following new functions to the table on p. 173: uint64_t atomicMin(inout uint64_t mem, uint64_t data); uint64_t atomicMax(inout uint64_t mem, uint64_t data); uint64_t atomicAnd(inout uint64_t mem, uint64_t data); uint64_t atomicOr (inout uint64_t mem, uint64_t data); uint64_t atomicXor(inout uint64_t mem, uint64_t data); int64_t atomicMin(inout int64_t mem, int64_t data); int64_t atomicMax(inout int64_t mem, int64_t data); int64_t atomicAnd(inout int64_t mem, int64_t data); int64_t atomicOr (inout int64_t mem, int64_t data); int64_t atomicXor(inout int64_t mem, int64_t data); uint64_t atomicAdd(inout uint64_t mem, uint64_t data); uint64_t atomicExchange(inout uint64_t mem, uint64_t data); uint64_t atomicCompSwap(inout uint64_t mem, uint64_t compare, uint64_t data); int64_t atomicAdd(inout int64_t mem, int64_t data); int64_t atomicExchange(inout int64_t mem, int64_t data); int64_t atomicCompSwap(inout int64_t mem, int64_t compare, int64_t data); Errors None. New State None. New Implementation Dependent State None. Issues 1. How is this extension related to the NV_shader_atomic_int64 extension? RESOLVED: This is a vendor portable superset of that which also includes the 64-bit unsigned integer atomic add, exchange, and compare-exchange operations originally introduced in NV_shader_buffer_store, and can used with the VK_KHR_shader_atomic_int64 Vulkan extension. Revision History Rev. Date Author Changes ---- ---------- -------- ----------------------------------------------- 1 07/05/2018 ahagan Internal revisions based on the GL_NV_shader_atomic_int64 extension.