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 <lionel.g.landwerlin@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/2964>
This commit is contained in:

committed by
Marge Bot

parent
5d7e9edba1
commit
6d35610bd5
@@ -408,6 +408,10 @@ u_pipe_screen_get_param_defaults(struct pipe_screen *pscreen,
|
|||||||
case PIPE_CAP_INTEGER_MULTIPLY_32X16:
|
case PIPE_CAP_INTEGER_MULTIPLY_32X16:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
case PIPE_CAP_FRONTEND_NOOP:
|
||||||
|
/* Enables INTEL_blackhole_render */
|
||||||
|
return 0;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
unreachable("bad PIPE_CAP_*");
|
unreachable("bad PIPE_CAP_*");
|
||||||
}
|
}
|
||||||
|
@@ -468,6 +468,17 @@ struct pipe_context {
|
|||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* INTEL_blackhole_render
|
||||||
|
*/
|
||||||
|
/*@{*/
|
||||||
|
|
||||||
|
void (*set_frontend_noop)(struct pipe_context *,
|
||||||
|
bool enable);
|
||||||
|
|
||||||
|
/*@}*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resource functions for blit-like functionality
|
* Resource functions for blit-like functionality
|
||||||
*
|
*
|
||||||
|
@@ -912,6 +912,8 @@ enum pipe_cap
|
|||||||
PIPE_CAP_MAX_VERTEX_BUFFERS,
|
PIPE_CAP_MAX_VERTEX_BUFFERS,
|
||||||
PIPE_CAP_OPENCL_INTEGER_FUNCTIONS,
|
PIPE_CAP_OPENCL_INTEGER_FUNCTIONS,
|
||||||
PIPE_CAP_INTEGER_MULTIPLY_32X16,
|
PIPE_CAP_INTEGER_MULTIPLY_32X16,
|
||||||
|
/* Turn draw, dispatch, blit into NOOP */
|
||||||
|
PIPE_CAP_FRONTEND_NOOP,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -105,6 +105,9 @@ st_Enable(struct gl_context *ctx, GLenum cap, GLboolean state)
|
|||||||
case GL_DEBUG_OUTPUT_SYNCHRONOUS:
|
case GL_DEBUG_OUTPUT_SYNCHRONOUS:
|
||||||
st_update_debug_callback(st);
|
st_update_debug_callback(st);
|
||||||
break;
|
break;
|
||||||
|
case GL_BLACKHOLE_RENDER_INTEL:
|
||||||
|
st->pipe->set_frontend_noop(st->pipe, ctx->IntelBlackholeRender);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -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_float_linear), PIPE_CAP_TEXTURE_FLOAT_LINEAR },
|
||||||
{ o(OES_texture_half_float_linear), PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR },
|
{ o(OES_texture_half_float_linear), PIPE_CAP_TEXTURE_HALF_FLOAT_LINEAR },
|
||||||
{ o(OES_texture_view), PIPE_CAP_SAMPLER_VIEW_TARGET },
|
{ o(OES_texture_view), PIPE_CAP_SAMPLER_VIEW_TARGET },
|
||||||
|
{ o(INTEL_blackhole_render), PIPE_CAP_FRONTEND_NOOP, },
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Required: render target and sampler support */
|
/* Required: render target and sampler support */
|
||||||
|
Reference in New Issue
Block a user