gallium: Add PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION

To enable EXT_demote_to_helper_invocation:

    This extension adds a "demote" keyword that is similar to "discard" but
    only suppresses subsequent writes and outputs to the framebuffer, and
    does not terminate the execution of the invocation. For the remainder
    of the execution, the invocation is "demoted" to act like a helper
    invocation.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
Caio Marcelo de Oliveira Filho 2019-09-20 09:21:02 -07:00
parent 61fa4b5707
commit 008de52305
4 changed files with 6 additions and 0 deletions

View File

@ -380,6 +380,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
case PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS:
return 0;
case PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION:
return 0;
case PIPE_CAP_DMABUF:
#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD)
return 1;

View File

@ -557,6 +557,7 @@ The integer capabilities:
efficient manner.
* ``PIPE_CAP_GL_SPIRV``: True if the driver supports ARB_gl_spirv extension.
* ``PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS``: True if the driver supports Variable Pointers in SPIR-V shaders.
* ``PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION``: True if driver supports demote keyword in GLSL programs.
.. _pipe_capf:

View File

@ -901,6 +901,7 @@ enum pipe_cap
PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF,
PIPE_CAP_GL_SPIRV,
PIPE_CAP_GL_SPIRV_VARIABLE_POINTERS,
PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION,
};
/**

View File

@ -749,6 +749,7 @@ void st_init_extensions(struct pipe_screen *screen,
{ o(ARB_fragment_shader_interlock), PIPE_CAP_FRAGMENT_SHADER_INTERLOCK },
{ o(EXT_blend_equation_separate), PIPE_CAP_BLEND_EQUATION_SEPARATE },
{ o(EXT_demote_to_helper_invocation), PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION },
{ o(EXT_depth_bounds_test), PIPE_CAP_DEPTH_BOUNDS_TEST },
{ o(EXT_disjoint_timer_query), PIPE_CAP_QUERY_TIMESTAMP },
{ o(EXT_draw_buffers2), PIPE_CAP_INDEP_BLEND_ENABLE },