nvfx: match Gallium's gl_PointCoord brokenness
authorLuca Barbieri <luca@luca-barbieri.com>
Mon, 23 Aug 2010 13:20:31 +0000 (15:20 +0200)
committerLuca Barbieri <luca@luca-barbieri.com>
Mon, 23 Aug 2010 13:20:31 +0000 (15:20 +0200)
Gallium always puts gl_PointCoord in GENERIC[0] if
point_quad_rasterization is enabled.

This is silly, but for now it makes mesa-demos/glsl/pointcoord work.

src/gallium/drivers/nvfx/nvfx_fragprog.c

index 23a85c9342e52b5764051a50830f7a4cff960a21..049b814d49ff716a2e774e07c7bdbc22a54cdb70 100644 (file)
@@ -1181,8 +1181,11 @@ nvfx_fragprog_validate(struct nvfx_context *nvfx)
        struct nouveau_channel* chan = nvfx->screen->base.channel;
        struct nvfx_pipe_fragment_program *pfp = nvfx->fragprog;
        struct nvfx_vertex_program* vp;
-       unsigned sprite_coord_enable = nvfx->rasterizer->pipe.point_quad_rasterization * nvfx->rasterizer->pipe.sprite_coord_enable;
-       // TODO: correct or flipped?
+       /* Gallium always puts the point coord in GENERIC[0]
+        * TODO: this is wrong, Gallium needs to be fixed
+        */
+       unsigned sprite_coord_enable = nvfx->rasterizer->pipe.point_quad_rasterization * (nvfx->rasterizer->pipe.sprite_coord_enable | 1);
+
        boolean emulate_sprite_flipping = sprite_coord_enable && nvfx->rasterizer->pipe.sprite_coord_mode;
        unsigned key = emulate_sprite_flipping;
        struct nvfx_fragment_program* fp;