mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-24 00:30:34 +01:00
mesa: allow NULL for vertex shader when mesh pipeline
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/36976>
This commit is contained in:
parent
3bc4004ca9
commit
51d6e4404a
3 changed files with 19 additions and 12 deletions
|
|
@ -302,7 +302,7 @@ update_program(struct gl_context *ctx)
|
|||
* _mesa_get_fixed_func_vertex_program() needs to know active
|
||||
* fragprog inputs.
|
||||
*/
|
||||
if (vsProg) {
|
||||
if (vsProg || msProg) {
|
||||
/* Use GLSL vertex shader */
|
||||
assert(VP_MODE_SHADER == ctx->VertexProgram._VPMode);
|
||||
_mesa_reference_program(ctx, &ctx->VertexProgram._Current, vsProg);
|
||||
|
|
@ -770,12 +770,13 @@ set_vertex_processing_mode(struct gl_context *ctx, gl_vertex_processing_mode m)
|
|||
void
|
||||
_mesa_update_vertex_processing_mode(struct gl_context *ctx)
|
||||
{
|
||||
if (ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX])
|
||||
set_vertex_processing_mode(ctx, VP_MODE_SHADER);
|
||||
else if (_mesa_arb_vertex_program_enabled(ctx))
|
||||
set_vertex_processing_mode(ctx, VP_MODE_SHADER);
|
||||
else
|
||||
set_vertex_processing_mode(ctx, VP_MODE_FF);
|
||||
gl_vertex_processing_mode mode =
|
||||
ctx->_Shader->CurrentProgram[MESA_SHADER_VERTEX] ||
|
||||
ctx->_Shader->CurrentProgram[MESA_SHADER_MESH] ||
|
||||
_mesa_arb_vertex_program_enabled(ctx) ?
|
||||
VP_MODE_SHADER : VP_MODE_FF;
|
||||
|
||||
set_vertex_processing_mode(ctx, mode);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -200,14 +200,16 @@ st_update_fp( struct st_context *st )
|
|||
void
|
||||
st_update_vp( struct st_context *st )
|
||||
{
|
||||
struct gl_program *vp;
|
||||
|
||||
/* find active shader and params -- Should be covered by
|
||||
* ST_NEW_VERTEX_PROGRAM
|
||||
*/
|
||||
assert(st->ctx->VertexProgram._Current);
|
||||
vp = st->ctx->VertexProgram._Current;
|
||||
assert(vp->info.stage == MESA_SHADER_VERTEX);
|
||||
struct gl_program *vp = st->ctx->VertexProgram._Current;
|
||||
|
||||
if (!vp) {
|
||||
_mesa_reference_program(st->ctx, &st->vp, NULL);
|
||||
cso_set_vertex_shader_handle(st->cso_context, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
if (st->shader_has_one_variant[MESA_SHADER_VERTEX] &&
|
||||
!st->ctx->Array._PerVertexEdgeFlagsEnabled) {
|
||||
|
|
|
|||
|
|
@ -87,6 +87,10 @@ st_invalidate_buffers(struct st_context *st)
|
|||
static inline bool
|
||||
st_vp_uses_current_values(const struct gl_context *ctx)
|
||||
{
|
||||
/* mesh shader pipeline */
|
||||
if (!ctx->VertexProgram._Current)
|
||||
return false;
|
||||
|
||||
const uint64_t inputs = ctx->VertexProgram._Current->info.inputs_read;
|
||||
|
||||
return ~_mesa_get_enabled_vertex_arrays(ctx) & inputs;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue