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's avatarKenneth Graunke <kenneth@whitecape.org>
parent 61fa4b57
......@@ -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;
......
......@@ -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:
......
......@@ -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,
};
/**
......
......@@ -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 },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment