diff --git a/src/dxvk/shaders/dxvk_clear_image1darr_f.comp b/src/dxvk/shaders/dxvk_clear_image1darr_f.comp new file mode 100644 index 000000000..ae5749a23 --- /dev/null +++ b/src/dxvk/shaders/dxvk_clear_image1darr_f.comp @@ -0,0 +1,26 @@ +#version 450 + +layout( + local_size_x = 64, + local_size_y = 1, + local_size_z = 1) in; + +layout(binding = 0) +writeonly uniform image1DArray dst; + +layout(push_constant) +uniform u_info_t { + vec4 clear_value; + ivec4 dst_offset; + ivec4 dst_extent; +} u_info; + +void main() { + ivec3 thread_id = ivec3(gl_GlobalInvocationID); + + if (thread_id.x < u_info.dst_extent.x) { + imageStore(dst, + ivec2(u_info.dst_offset.x + thread_id.x, thread_id.y), + u_info.clear_value); + } +} \ No newline at end of file diff --git a/src/dxvk/shaders/dxvk_clear_image1darr_u.comp b/src/dxvk/shaders/dxvk_clear_image1darr_u.comp new file mode 100644 index 000000000..24dcdf871 --- /dev/null +++ b/src/dxvk/shaders/dxvk_clear_image1darr_u.comp @@ -0,0 +1,26 @@ +#version 450 + +layout( + local_size_x = 64, + local_size_y = 1, + local_size_z = 1) in; + +layout(binding = 0) +writeonly uniform uimage1DArray dst; + +layout(push_constant) +uniform u_info_t { + uvec4 clear_value; + ivec4 dst_offset; + ivec4 dst_extent; +} u_info; + +void main() { + ivec3 thread_id = ivec3(gl_GlobalInvocationID); + + if (thread_id.x < u_info.dst_extent.x) { + imageStore(dst, + ivec2(u_info.dst_offset.x + thread_id.x, thread_id.y), + u_info.clear_value); + } +} \ No newline at end of file diff --git a/src/dxvk/shaders/dxvk_clear_image2darr_f.comp b/src/dxvk/shaders/dxvk_clear_image2darr_f.comp new file mode 100644 index 000000000..cd2c56a1e --- /dev/null +++ b/src/dxvk/shaders/dxvk_clear_image2darr_f.comp @@ -0,0 +1,26 @@ +#version 450 + +layout( + local_size_x = 8, + local_size_y = 8, + local_size_z = 1) in; + +layout(binding = 0) +writeonly uniform image2DArray dst; + +layout(push_constant) +uniform u_info_t { + vec4 clear_value; + ivec4 dst_offset; + ivec4 dst_extent; +} u_info; + +void main() { + ivec3 thread_id = ivec3(gl_GlobalInvocationID); + + if (all(lessThan(thread_id.xyz, u_info.dst_extent.xyz))) { + imageStore(dst, + ivec3(u_info.dst_offset.xy + thread_id.xy, thread_id.z), + u_info.clear_value); + } +} \ No newline at end of file diff --git a/src/dxvk/shaders/dxvk_clear_image2darr_u.comp b/src/dxvk/shaders/dxvk_clear_image2darr_u.comp new file mode 100644 index 000000000..1630e1e0f --- /dev/null +++ b/src/dxvk/shaders/dxvk_clear_image2darr_u.comp @@ -0,0 +1,26 @@ +#version 450 + +layout( + local_size_x = 8, + local_size_y = 8, + local_size_z = 1) in; + +layout(binding = 0) +writeonly uniform uimage2DArray dst; + +layout(push_constant) +uniform u_info_t { + uvec4 clear_value; + ivec4 dst_offset; + ivec4 dst_extent; +} u_info; + +void main() { + ivec3 thread_id = ivec3(gl_GlobalInvocationID); + + if (all(lessThan(thread_id.xyz, u_info.dst_extent.xyz))) { + imageStore(dst, + ivec3(u_info.dst_offset.xy + thread_id.xy, thread_id.z), + u_info.clear_value); + } +} \ No newline at end of file