#version 460 #pragma use_vulkan_memory_model #extension GL_EXT_nontemporal_keyword: require layout(location=0) in vec2 in_uv; layout(binding=1, rgba8) uniform nontemporal image2D u_nontempimage; layout(binding=2, rgba8) uniform image2D u_image; layout(binding=3) uniform writeonly nontemporal image2D u_nontempnoformatimage; layout(binding=4) uniform writeonly image2D u_noformatimage; void function_accepting_nontemporal(nontemporal writeonly image2D image) { } void function_not_accepting_nontemporal(writeonly image2D image) { } void main() { const ivec2 uv = ivec2(in_uv.x, in_uv.y); imageStore(u_nontempimage, uv, imageLoad(u_nontempimage, uv)); imageStore(u_image, uv, imageLoad(u_image, uv)); function_accepting_nontemporal(u_nontempnoformatimage); function_accepting_nontemporal(u_noformatimage); function_not_accepting_nontemporal(u_noformatimage); // This would fail to compile // function_not_accepting_nontemporal(u_nontempnoformatimage); }