mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-23 05:57:19 +00:00
b4b4a37b2b
According to Erik @ NVidia the open source NVidia driver will not create a EGLImage from a DMABUF if the target is not GL_TEXTURE_EXTERNAL_OES. This change set converts the dmabuf texture from GL_TEXTURE_2D to GL_TEXTURE_EXTERNAL_OES and at runtime performs a global search & replace on fragment shaders as needed to remain compatible, replacing `sampler2D` with `samplerExternalOES`. Ref: https://github.com/NVIDIA/open-gpu-kernel-modules/discussions/243#discussioncomment-3283415
29 lines
584 B
GLSL
29 lines
584 B
GLSL
#version 300 es
|
|
#extension GL_OES_EGL_image_external_essl3 : enable
|
|
|
|
precision highp float;
|
|
|
|
in vec2 fragCoord;
|
|
out vec4 fragColor;
|
|
|
|
uniform sampler2D sampler1;
|
|
uniform vec3 uConfig;
|
|
|
|
void main()
|
|
{
|
|
float pixelSize = uConfig.x;
|
|
float vOffset = uConfig.y;
|
|
float hOffset = uConfig.z;
|
|
|
|
vec2 inRes = vec2(textureSize(sampler1, 0));
|
|
ivec2 point = ivec2(
|
|
(floor((fragCoord * inRes) / pixelSize) * pixelSize) +
|
|
pixelSize / 2.0f
|
|
);
|
|
|
|
point.x += int(pixelSize * hOffset);
|
|
point.y += int(pixelSize * vOffset);
|
|
|
|
fragColor = texelFetch(sampler1, point, 0);
|
|
}
|