gallium: Add a PIPE_CAP_NIR_COMPACT_ARRAYS capability bit.
Iris would like to use compact arrays for tesslevels and clip/cull distances. radeonsi will likely want to switch to these at some point, since it'll be necessary for GL_ARB_gl_spirv support, but it's not ready for them just yet. Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
This commit is contained in:
parent
cf731564e6
commit
8fa54bc549
|
@ -289,6 +289,7 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||
case PIPE_CAP_POST_DEPTH_COVERAGE:
|
||||
case PIPE_CAP_BINDLESS_TEXTURE:
|
||||
case PIPE_CAP_NIR_SAMPLERS_AS_DEREF:
|
||||
case PIPE_CAP_NIR_COMPACT_ARRAYS:
|
||||
case PIPE_CAP_QUERY_SO_OVERFLOW:
|
||||
case PIPE_CAP_MEMOBJ:
|
||||
case PIPE_CAP_LOAD_CONSTBUF:
|
||||
|
|
|
@ -487,6 +487,7 @@ The integer capabilities:
|
|||
* ``PIPE_CAP_DEST_SURFACE_SRGB_CONTROL``: Indicates whether the drivers
|
||||
supports switching the format between sRGB and linear for a surface that is
|
||||
used as destination in draw and blit calls.
|
||||
* ``PIPE_CAP_NIR_COMPACT_ARRAYS``: True if the compiler backend supports NIR's compact array feature, for all shader stages.
|
||||
|
||||
.. _pipe_capf:
|
||||
|
||||
|
|
|
@ -856,6 +856,7 @@ enum pipe_cap
|
|||
PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE,
|
||||
PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND,
|
||||
PIPE_CAP_DEST_SURFACE_SRGB_CONTROL,
|
||||
PIPE_CAP_NIR_COMPACT_ARRAYS,
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -321,7 +321,9 @@ void st_init_limits(struct pipe_screen *screen,
|
|||
screen->get_shader_param(screen, sh,
|
||||
PIPE_SHADER_CAP_MAX_UNROLL_ITERATIONS_HINT);
|
||||
|
||||
options->LowerCombinedClipCullDistance = true;
|
||||
if (!screen->get_param(screen, PIPE_CAP_NIR_COMPACT_ARRAYS))
|
||||
options->LowerCombinedClipCullDistance = true;
|
||||
|
||||
options->LowerBufferInterfaceBlocks = true;
|
||||
}
|
||||
|
||||
|
@ -336,7 +338,8 @@ void st_init_limits(struct pipe_screen *screen,
|
|||
screen->get_param(screen, PIPE_CAP_GLSL_OPTIMIZE_CONSERVATIVELY);
|
||||
c->GLSLTessLevelsAsInputs =
|
||||
screen->get_param(screen, PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS);
|
||||
c->LowerTessLevel = true;
|
||||
c->LowerTessLevel =
|
||||
!screen->get_param(screen, PIPE_CAP_NIR_COMPACT_ARRAYS);
|
||||
c->LowerCsDerivedVariables = true;
|
||||
c->PrimitiveRestartForPatches =
|
||||
screen->get_param(screen, PIPE_CAP_PRIMITIVE_RESTART_FOR_PATCHES);
|
||||
|
|
Loading…
Reference in New Issue