case PIPE_CAP_IMAGE_LOAD_FORMATTED:
case PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA:
case PIPE_CAP_FRAGMENT_SHADER_INTERLOCK:
+ case PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED:
return 0;
case PIPE_CAP_MAX_GS_INVOCATIONS:
OpenMAX should use a compute-based blit instead of pipe_context::blit.
* ``PIPE_CAP_FRAGMENT_SHADER_INTERLOCK``: True if fragment shader interlock
functionality is supported.
+* ``PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED``: True if driver handles
+ gl_LocalInvocationIndex and gl_GlobalInvocationID. Otherwise, state tracker will
+ lower those system values.
.. _pipe_capf:
PIPE_CAP_PREFER_COMPUTE_BLIT_FOR_MULTIMEDIA,
PIPE_CAP_FRAGMENT_SHADER_INTERLOCK,
PIPE_CAP_FBFETCH_COHERENT,
+ PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED,
};
/**
screen->get_param(screen, PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS);
c->LowerTessLevel =
!screen->get_param(screen, PIPE_CAP_NIR_COMPACT_ARRAYS);
- c->LowerCsDerivedVariables = true;
+ c->LowerCsDerivedVariables =
+ !screen->get_param(screen, PIPE_CAP_CS_DERIVED_SYSTEM_VALUES_SUPPORTED);
c->PrimitiveRestartForPatches =
screen->get_param(screen, PIPE_CAP_PRIMITIVE_RESTART_FOR_PATCHES);