broadcom/vc5: Update pixel center setup for V3D 4.x.
authorEric Anholt <eric@anholt.net>
Fri, 12 Jan 2018 20:02:17 +0000 (12:02 -0800)
committerEric Anholt <eric@anholt.net>
Sat, 13 Jan 2018 05:57:37 +0000 (21:57 -0800)
The fxcd/fycd instructions now return half-integer pixel centers when not
doing sample-rate shading.

src/gallium/drivers/vc5/vc5_screen.c

index 44b5cdebcd6e8b2526a259e15f53671a2dac6698..1e794bc223f50f115b45322dae3b518dcda7b3e0 100644 (file)
@@ -82,6 +82,8 @@ vc5_screen_destroy(struct pipe_screen *pscreen)
 static int
 vc5_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
 {
+        struct vc5_screen *screen = vc5_screen(pscreen);
+
         switch (param) {
                 /* Supported features (boolean caps). */
         case PIPE_CAP_VERTEX_COLOR_CLAMPED:
@@ -127,11 +129,19 @@ vc5_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
                 return 1;
 
         case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
-        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
                 return 1;
         case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
-        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
                 return 0;
+        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
+                if (screen->devinfo.ver >= 40)
+                        return 0;
+                else
+                        return 1;
+        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
+                if (screen->devinfo.ver >= 40)
+                        return 1;
+                else
+                        return 0;
 
         case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
         case PIPE_CAP_MIXED_COLOR_DEPTH_BITS: