gallium: Add PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Fri, 20 Sep 2019 16:21:02 +0000 (09:21 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Mon, 30 Sep 2019 19:44:30 +0000 (12:44 -0700)
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>
src/gallium/auxiliary/util/u_screen.c
src/gallium/docs/source/screen.rst
src/gallium/include/pipe/p_defines.h
src/mesa/state_tracker/st_extensions.c

index a5711e5595cdbdd984dc576169b79affccb67fa2..ba99ec0615dad5f5998b406dcedbae4f012cf64a 100644 (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;
index d853edf92d0b30796c41d99160ffd010bf25ea96..961f0a9c3cc15ea7f76f7d40b2d7c7e63a9d7ab4 100644 (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:
 
index 0d4adcf6f4b66278db8307e903b104534e6ed5fe..1dc880bfc72a0251a12540a3424940e87d2cffbd 100644 (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,
 };
 
 /**
index d111b6cf10ba7b5f341d5869c993d383e6b717be..3f8230a22fb162331c31b7322c6b7d85877a826b 100644 (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               },