diff options
author | Lionel Landwerlin <[email protected]> | 2019-12-05 14:46:51 +0200 |
---|---|---|
committer | Marge Bot <[email protected]> | 2020-02-13 17:05:05 +0000 |
commit | 6d35610bd57aacb494e49da692b5331b0e4d11b6 (patch) | |
tree | 29d0e5950cfd12b6893e5a4d7affe7525849efdc | |
parent | 5d7e9edba1876523f75c74362242aaa56629fba5 (diff) |
st: add support for INTEL_blackhole_render
Adding a new CSO proved to be fairly difficult especially because this
extension affect draw/dispatch/blit alike.
Instead this change passes the state of the noop into the entry points
emitting the operations affected.
v2: Fix assert in default pipe caps
v3: Drop whitespace changes (Ken)
Signed-off-by: Lionel Landwerlin <[email protected]>
Reviewed-by: Kenneth Graunke <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2964>
-rw-r--r-- | src/gallium/auxiliary/util/u_screen.c | 4 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_context.h | 11 | ||||
-rw-r--r-- | src/gallium/include/pipe/p_defines.h | 2 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_context.c | 3 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_extensions.c | 1 |
5 files changed, 21 insertions, 0 deletions
diff --git a/src/gallium/auxiliary/util/u_screen.c b/src/gallium/auxiliary/util/u_screen.c index 785d1bd3e24..821bb16d539 100644 --- a/src/gallium/auxiliary/util/u_screen.c +++ b/src/gallium/auxiliary/util/u_screen.c @@ -408,6 +408,10 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen, case PIPE_CAP_INTEGER_MULTIPLY_32X16: return 0; + case PIPE_CAP_FRONTEND_NOOP: + /* Enables INTEL_blackhole_render */ + return 0; + default: unreachable("bad PIPE_CAP_*"); } diff --git a/src/gallium/include/pipe/p_context.h b/src/gallium/include/pipe/p_context.h index b8051df57fe..3a8b9eba462 100644 --- a/src/gallium/include/pipe/p_context.h +++ b/src/gallium/include/pipe/p_context.h @@ -469,6 +469,17 @@ struct pipe_context { /** + * INTEL_blackhole_render + */ + /*@{*/ + + void (*set_frontend_noop)(struct pipe_context *, + bool enable); + + /*@}*/ + + + /** * Resource functions for blit-like functionality * * If a driver supports multisampling, blit must implement color resolve. diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h index 4a7edd4e084..ca6d27e9700 100644 --- a/src/gallium/include/pipe/p_defines.h +++ b/src/gallium/include/pipe/p_defines.h @@ -912,6 +912,8 @@ enum pipe_cap PIPE_CAP_MAX_VERTEX_BUFFERS, PIPE_CAP_OPENCL_INTEGER_FUNCTIONS, PIPE_CAP_INTEGER_MULTIPLY_32X16, + /* Turn draw, dispatch, blit into NOOP */ + PIPE_CAP_FRONTEND_NOOP, }; /** diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 2ec0532ce57..b67850e1f04 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -105,6 +105,9 @@ st_Enable(struct gl_context *ctx, GLenum cap, GLboolean state) case GL_DEBUG_OUTPUT_SYNCHRONOUS: st_update_debug_callback(st); break; + case GL_BLACKHOLE_RENDER_INTEL: + st->pipe->set_frontend_noop(st->pipe, ctx->IntelBlackholeRender); + break; default: break; } diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 3c598fef2bd..f3d13d7ad8c 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -793,6 +793,7 @@ void st_init_extensions(struct pipe_screen *screen, { o(OES_texture_float_linear), PIPE_CAP_TEXTURE_FLOAT_LINEAR }, { o(OES_texture_half_float_linear), PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR }, { o(OES_texture_view), PIPE_CAP_SAMPLER_VIEW_TARGET }, + { o(INTEL_blackhole_render), PIPE_CAP_FRONTEND_NOOP, }, }; /* Required: render target and sampler support */ |