gallium: disable hardware select for crocus
piglit select tests fail, so add a gallium cap to disable
for crocus explicitly.
crocus may choose to enable hardware select only for GPU
SKU which tested to be OK again.
Fixes: 6489af145c
("mesa: enable HardwareAcceleratedSelect")
Closes: #6644
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Emma Anholt <emma@anholt.net>
Signed-off-by: Qiang Yu <yuq825@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16955>
This commit is contained in:
parent
934bc2e8ca
commit
fd27d5157f
|
@ -641,6 +641,7 @@ The integer capabilities:
|
|||
* ``PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD``: TRUE if shader sparse texture sample instruction support clamp the minimal lod to prevent read from un-committed pages.
|
||||
* ``PIPE_CAP_ALLOW_DRAW_OUT_OF_ORDER``: TRUE if the driver allows the "draw out of order" optimization to be enabled. See _mesa_update_allow_draw_out_of_order for more details.
|
||||
* ``PIPE_CAP_MAX_CONSTANT_BUFFER_SIZE_UINT``: Maximum bound constant buffer size in bytes. This is unsigned integer with the maximum of 4GB - 1. This applies to all constant buffers used by UBOs, unlike `PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE`, which is specifically for GLSL uniforms.
|
||||
* ``PIPE_CAP_HARDWARE_GL_SELECT``: Enable hardware accelerated GL_SELECT for this driver.
|
||||
|
||||
.. _pipe_capf:
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
#include "pipe/p_screen.h"
|
||||
#include "util/u_screen.h"
|
||||
#include "util/u_debug.h"
|
||||
|
||||
/**
|
||||
* Helper to use from a pipe_screen->get_param() implementation to return
|
||||
|
@ -497,6 +498,22 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||
return pscreen->get_shader_param(pscreen, PIPE_SHADER_FRAGMENT,
|
||||
PIPE_SHADER_CAP_MAX_CONST_BUFFER0_SIZE);
|
||||
|
||||
case PIPE_CAP_HARDWARE_GL_SELECT: {
|
||||
/* =0: on CPU, always disabled
|
||||
* >0: on GPU, enable by default, user can disable it manually
|
||||
* <0: unknown, disable by default, user can enable it manually
|
||||
*/
|
||||
int accel = pscreen->get_param(pscreen, PIPE_CAP_ACCELERATED);
|
||||
|
||||
return !!accel && debug_get_bool_option("MESA_HW_ACCEL_SELECT", accel > 0) &&
|
||||
/* internal geometry shader need indirect array access */
|
||||
pscreen->get_shader_param(pscreen, PIPE_SHADER_GEOMETRY,
|
||||
PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR) &&
|
||||
/* internal geometry shader need SSBO support */
|
||||
pscreen->get_shader_param(pscreen, PIPE_SHADER_GEOMETRY,
|
||||
PIPE_SHADER_CAP_MAX_SHADER_BUFFERS);
|
||||
}
|
||||
|
||||
default:
|
||||
unreachable("bad PIPE_CAP_*");
|
||||
}
|
||||
|
|
|
@ -392,6 +392,9 @@ crocus_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_PCI_FUNCTION:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_HARDWARE_GL_SELECT:
|
||||
return 0;
|
||||
|
||||
default:
|
||||
return u_pipe_screen_get_param_defaults(pscreen, param);
|
||||
}
|
||||
|
|
|
@ -416,6 +416,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS:
|
||||
case PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY:
|
||||
case PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD:
|
||||
case PIPE_CAP_HARDWARE_GL_SELECT:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_VENDOR_ID:
|
||||
|
|
|
@ -437,6 +437,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
|||
case PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS:
|
||||
case PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY:
|
||||
case PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD:
|
||||
case PIPE_CAP_HARDWARE_GL_SELECT:
|
||||
return 0;
|
||||
|
||||
case PIPE_CAP_VENDOR_ID:
|
||||
|
|
|
@ -1009,6 +1009,7 @@ enum pipe_cap
|
|||
PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD,
|
||||
PIPE_CAP_ALLOW_DRAW_OUT_OF_ORDER,
|
||||
PIPE_CAP_MAX_CONSTANT_BUFFER_SIZE_UINT,
|
||||
PIPE_CAP_HARDWARE_GL_SELECT,
|
||||
|
||||
PIPE_CAP_LAST,
|
||||
/* XXX do not add caps after PIPE_CAP_LAST! */
|
||||
|
|
|
@ -627,17 +627,8 @@ void st_init_limits(struct pipe_screen *screen,
|
|||
c->SparseTextureFullArrayCubeMipmaps =
|
||||
screen->get_param(screen, PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS);
|
||||
|
||||
/* =0: on CPU, always disabled
|
||||
* >0: on GPU, enable by default, user can disable it manually
|
||||
* <0: unknown, disable by default, user can enable it manually
|
||||
*/
|
||||
int accel = screen->get_param(screen, PIPE_CAP_ACCELERATED);
|
||||
c->HardwareAcceleratedSelect =
|
||||
accel && debug_get_bool_option("MESA_HW_ACCEL_SELECT", accel > 0) &&
|
||||
/* internal geometry shader need indirect array access */
|
||||
!c->ShaderCompilerOptions[MESA_SHADER_GEOMETRY].EmitNoIndirectTemp &&
|
||||
/* internal geometry shader need SSBO support */
|
||||
c->Program[MESA_SHADER_GEOMETRY].MaxShaderStorageBlocks;
|
||||
screen->get_param(screen, PIPE_CAP_HARDWARE_GL_SELECT);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue