freedreno/a5xx: hide ARB_base_instance
authorRob Clark <robdclark@gmail.com>
Tue, 5 Dec 2017 20:58:31 +0000 (15:58 -0500)
committerRob Clark <robdclark@gmail.com>
Tue, 5 Dec 2017 21:16:18 +0000 (16:16 -0500)
Grrr..

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/freedreno_screen.c

index 35433da4b9f9b17b44888db02b24d7be97326e00..f5c381e82166729377e457e5e7b8b7e27578f7e5 100644 (file)
@@ -246,11 +246,18 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
 
        case PIPE_CAP_TEXTURE_FLOAT_LINEAR:
        case PIPE_CAP_CUBE_MAP_ARRAY:
-       case PIPE_CAP_START_INSTANCE:
        case PIPE_CAP_SAMPLER_VIEW_TARGET:
        case PIPE_CAP_TEXTURE_QUERY_LOD:
                return is_a4xx(screen) || is_a5xx(screen);
 
+       case PIPE_CAP_START_INSTANCE:
+               /* Note that a5xx can do this, it just can't (at least with
+                * current firmware) do draw_indirect with base_instance.
+                * Since draw_indirect is needed sooner (gles31 and gl40 vs
+                * gl42), hide base_instance on a5xx.  :-/
+                */
+               return is_a4xx(screen);
+
        case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
                return 64;