mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-23 14:50:24 +01:00
mesa: Simplify calling Driver.ProgramStringNotify after previous refactors
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com> Reviewed-by: Brian Paul <brianp@vmware.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Marek Olšák <maraeo@gmail.com>
This commit is contained in:
parent
77d67a44cc
commit
e2bdef5380
2 changed files with 21 additions and 54 deletions
|
|
@ -3288,31 +3288,20 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]);
|
||||
|
||||
if (linked_prog) {
|
||||
bool ok = true;
|
||||
static const GLenum targets[] = {
|
||||
GL_VERTEX_PROGRAM_ARB,
|
||||
GL_FRAGMENT_PROGRAM_ARB,
|
||||
GL_GEOMETRY_PROGRAM_NV
|
||||
};
|
||||
|
||||
switch (prog->_LinkedShaders[i]->Type) {
|
||||
case GL_VERTEX_SHADER:
|
||||
if (i == MESA_SHADER_VERTEX) {
|
||||
((struct gl_vertex_program *)linked_prog)->UsesClipDistance
|
||||
= prog->Vert.UsesClipDistance;
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
|
||||
linked_prog);
|
||||
break;
|
||||
case GL_FRAGMENT_SHADER:
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
ok = ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB,
|
||||
linked_prog);
|
||||
break;
|
||||
case GL_GEOMETRY_SHADER:
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV,
|
||||
linked_prog);
|
||||
break;
|
||||
}
|
||||
if (!ok) {
|
||||
}
|
||||
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
if (!ctx->Driver.ProgramStringNotify(ctx, targets[i], linked_prog)) {
|
||||
return GL_FALSE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5180,39 +5180,17 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
|
|||
linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]);
|
||||
|
||||
if (linked_prog) {
|
||||
bool ok = true;
|
||||
static const GLenum targets[] = {
|
||||
GL_VERTEX_PROGRAM_ARB,
|
||||
GL_FRAGMENT_PROGRAM_ARB,
|
||||
GL_GEOMETRY_PROGRAM_NV
|
||||
};
|
||||
|
||||
switch (prog->_LinkedShaders[i]->Type) {
|
||||
case GL_VERTEX_SHADER:
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB,
|
||||
linked_prog);
|
||||
if (!ok) {
|
||||
_mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL);
|
||||
}
|
||||
break;
|
||||
case GL_FRAGMENT_SHADER:
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
ok = ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB,
|
||||
linked_prog);
|
||||
if (!ok) {
|
||||
_mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL);
|
||||
}
|
||||
break;
|
||||
case GL_GEOMETRY_SHADER:
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV,
|
||||
linked_prog);
|
||||
if (!ok) {
|
||||
_mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
if (!ok) {
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program, NULL);
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
linked_prog);
|
||||
if (!ctx->Driver.ProgramStringNotify(ctx, targets[i], linked_prog)) {
|
||||
_mesa_reference_program(ctx, &prog->_LinkedShaders[i]->Program,
|
||||
NULL);
|
||||
_mesa_reference_program(ctx, &linked_prog, NULL);
|
||||
return GL_FALSE;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue