mesa/st: implement max combined output resources limiting.
authorDave Airlie <airlied@redhat.com>
Tue, 31 Oct 2017 23:54:27 +0000 (09:54 +1000)
committerDave Airlie <airlied@redhat.com>
Wed, 1 Nov 2017 00:07:07 +0000 (10:07 +1000)
if the driver sets the cap, then use the value it gives us.

Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: Dave Airlie <airlied@redhat.com>
src/mesa/state_tracker/st_extensions.c

index 3dec5a87d73a9e82a50aa38a9e3c6b1c7e1f3fcc..fa2d0029e5830c07af7d69f7d6c262d1a63cd935 100644 (file)
@@ -78,6 +78,7 @@ void st_init_limits(struct pipe_screen *screen,
    int supported_irs;
    unsigned sh;
    boolean can_ubo = TRUE;
+   int temp;
 
    c->MaxTextureLevels
       = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS),
@@ -469,6 +470,11 @@ void st_init_limits(struct pipe_screen *screen,
 
    c->UseSTD430AsDefaultPacking =
       screen->get_param(screen, PIPE_CAP_LOAD_CONSTBUF);
+
+   /* limit the max combined shader output resources to a driver limit */
+   temp = screen->get_param(screen, PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES);
+   if (temp > 0 && c->MaxCombinedShaderOutputResources > temp)
+      c->MaxCombinedShaderOutputResources = temp;
 }