Ryujinx/Ryujinx.Graphics.Vulkan/Shaders/ColorCopyWideningComputeShaderSource.comp
gdkchan c3a5716a95
Add copy dependency for some incompatible texture formats (#4380)
* Add copy dependency for some incompatible texture formats

* Simplify compatibility check
2023-02-21 19:21:57 -03:00

31 lines
No EOL
867 B
Text

#version 450 core
layout (std140, binding = 0) uniform ratio_in
{
int ratio;
};
layout (set = 2, binding = 0) uniform usampler2D src;
layout (set = 3, binding = 0) writeonly uniform uimage2D dst;
layout (local_size_x = 32, local_size_y = 32, local_size_z = 1) in;
void main()
{
uvec2 coords = gl_GlobalInvocationID.xy;
ivec2 imageSz = imageSize(dst);
if (int(coords.x) >= imageSz.x || int(coords.y) >= imageSz.y)
{
return;
}
uvec2 srcCoords = uvec2(coords.x << ratio, coords.y);
uint r = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(0, 0)).r;
uint g = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(1, 0)).r;
uint b = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(2, 0)).r;
uint a = texelFetchOffset(src, ivec2(srcCoords), 0, ivec2(3, 0)).r;
imageStore(dst, ivec2(coords), uvec4(r, g, b, a));
}