forked from Mirror/Ryujinx
c3a5716a95
* Add copy dependency for some incompatible texture formats * Simplify compatibility check
31 lines
No EOL
867 B
Text
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));
|
|
} |