[virglrenderer-devel] [PATCH] shader: Invert y coordonate if we use gles

Elie Tournier tournier.elie at gmail.com
Fri Apr 20 16:17:47 UTC 2018


OpenGL ES didn't support GL_POINT_SPRITE_COORD_ORIGIN.
So when we read from an fbo, the image is upside down.
This patch invert the y coordonate.

Fixes: dEQP-GLES2.functional.shaders.builtin_variable.pointcoord

Signed-off-by: Elie Tournier <elie.tournier at collabora.com>
---
 src/vrend_shader.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/vrend_shader.c b/src/vrend_shader.c
index bab603e..f7f3b86 100644
--- a/src/vrend_shader.c
+++ b/src/vrend_shader.c
@@ -415,7 +415,10 @@ iter_declaration(struct tgsi_iterate_context *iter,
       case TGSI_SEMANTIC_GENERIC:
          if (iter->processor.Processor == TGSI_PROCESSOR_FRAGMENT) {
             if (ctx->key->coord_replace & (1 << ctx->inputs[i].sid)) {
-               name_prefix = "vec4(gl_PointCoord, 0.0, 1.0)";
+               if (ctx->cfg->use_gles)
+                  name_prefix = "vec4(gl_PointCoord.x, 1.0 - gl_PointCoord.y, 0.0, 1.0)";
+               else
+                  name_prefix = "vec4(gl_PointCoord, 0.0, 1.0)";
                ctx->inputs[i].glsl_predefined_no_emit = true;
                ctx->inputs[i].glsl_no_index = true;
                break;
-- 
2.17.0



More information about the virglrenderer-devel mailing list