With Timothy's comment on patch #3 addressed, the series is
Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com> On 24.03.2017 00:42, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com> --- src/mesa/drivers/common/driverfuncs.c | 1 - src/mesa/main/arbprogram.c | 3 -- src/mesa/main/atifragshader.c | 3 -- src/mesa/main/dd.h | 3 -- src/mesa/main/state.c | 55 +++++------------------------------ src/mesa/tnl/t_vp_build.c | 8 ----- 6 files changed, 7 insertions(+), 66 deletions(-) diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 642cd91..db0a107 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -106,21 +106,20 @@ _mesa_init_driver_functions(struct dd_function_table *driver) driver->DeleteTexture = _mesa_delete_texture_object; driver->NewTextureImage = _swrast_new_texture_image; driver->DeleteTextureImage = _swrast_delete_texture_image; driver->AllocTextureImageBuffer = _swrast_alloc_texture_image_buffer; driver->FreeTextureImageBuffer = _swrast_free_texture_image_buffer; driver->MapTextureImage = _swrast_map_teximage; driver->UnmapTextureImage = _swrast_unmap_teximage; driver->DrawTex = _mesa_meta_DrawTex; /* Vertex/fragment programs */ - driver->BindProgram = NULL; driver->NewProgram = _mesa_new_program; driver->DeleteProgram = _mesa_delete_program; /* ATI_fragment_shader */ driver->NewATIfs = NULL; /* simple state commands */ driver->AlphaFunc = NULL; driver->BlendColor = NULL; driver->BlendEquationSeparate = NULL; diff --git a/src/mesa/main/arbprogram.c b/src/mesa/main/arbprogram.c index 2c60310..f3a0a54c 100644 --- a/src/mesa/main/arbprogram.c +++ b/src/mesa/main/arbprogram.c @@ -111,23 +111,20 @@ _mesa_BindProgramARB(GLenum target, GLuint id) if (target == GL_VERTEX_PROGRAM_ARB) { _mesa_reference_program(ctx, &ctx->VertexProgram.Current, newProg); } else if (target == GL_FRAGMENT_PROGRAM_ARB) { _mesa_reference_program(ctx, &ctx->FragmentProgram.Current, newProg); } /* Never null pointers */ assert(ctx->VertexProgram.Current); assert(ctx->FragmentProgram.Current); - - if (ctx->Driver.BindProgram) - ctx->Driver.BindProgram(ctx, target, newProg); } /** * Delete a list of programs. * \note Not compiled into display lists. * \note Called by both glDeleteProgramsNV and glDeleteProgramsARB. */ void GLAPIENTRY _mesa_DeleteProgramsARB(GLsizei n, const GLuint *ids) diff --git a/src/mesa/main/atifragshader.c b/src/mesa/main/atifragshader.c index 83a449a..27d8b86 100644 --- a/src/mesa/main/atifragshader.c +++ b/src/mesa/main/atifragshader.c @@ -257,23 +257,20 @@ _mesa_BindFragmentShaderATI(GLuint id) } } /* do actual bind */ ctx->ATIFragmentShader.Current = newProg; assert(ctx->ATIFragmentShader.Current); if (newProg) newProg->RefCount++; - - /*if (ctx->Driver.BindProgram) - ctx->Driver.BindProgram(ctx, target, prog); */ } void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id) { GET_CURRENT_CONTEXT(ctx); if (ctx->ATIFragmentShader.Compiling) { _mesa_error(ctx, GL_INVALID_OPERATION, "glDeleteFragmentShaderATI(insideShader)"); return; diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index f300ad6..b3a85f1 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -462,23 +462,20 @@ struct dd_function_table { GLboolean (*BindRenderbufferTexImage)(struct gl_context *ctx, struct gl_renderbuffer *rb, struct gl_texture_image *texImage); /*@}*/ /** * \name Vertex/fragment program functions */ /*@{*/ - /** Bind a vertex/fragment program */ - void (*BindProgram)(struct gl_context *ctx, GLenum target, - struct gl_program *prog); /** Allocate a new program */ struct gl_program * (*NewProgram)(struct gl_context *ctx, GLenum target, GLuint id, bool is_arb_asm); /** Delete a program */ void (*DeleteProgram)(struct gl_context *ctx, struct gl_program *prog); /** * Allocate a program to associate with the new ATI fragment shader (optional) */ struct gl_program * (*NewATIfs)(struct gl_context *ctx, struct ati_fragment_shader *curProg); diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 07629d8..5a760f5 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -73,22 +73,21 @@ update_program_enables(struct gl_context *ctx) && ctx->VertexProgram.Current->arb.Instructions; ctx->FragmentProgram._Enabled = ctx->FragmentProgram.Enabled && ctx->FragmentProgram.Current->arb.Instructions; ctx->ATIFragmentShader._Enabled = ctx->ATIFragmentShader.Enabled && ctx->ATIFragmentShader.Current->Instructions[0]; } /** * Update the ctx->*Program._Current pointers to point to the - * current/active programs. Then call ctx->Driver.BindProgram() to - * tell the driver which programs to use. + * current/active programs. * * Programs may come from 3 sources: GLSL shaders, ARB/NV_vertex/fragment * programs or programs derived from fixed-function state. * * This function needs to be called after texture state validation in case * we're generating a fragment program from fixed-function texture state. * * \return bitfield which will indicate _NEW_PROGRAM state if a new vertex * or fragment program is being used. */ @@ -231,67 +230,27 @@ update_program(struct gl_context *ctx) if (csProg) { /* Use GLSL compute shader */ _mesa_reference_program(ctx, &ctx->ComputeProgram._Current, csProg); } else { /* no compute program */ _mesa_reference_program(ctx, &ctx->ComputeProgram._Current, NULL); } /* Let the driver know what's happening: */ - if (ctx->FragmentProgram._Current != prevFP) { + if (ctx->FragmentProgram._Current != prevFP || + ctx->VertexProgram._Current != prevVP || + ctx->GeometryProgram._Current != prevGP || + ctx->TessEvalProgram._Current != prevTEP || + ctx->TessCtrlProgram._Current != prevTCP || + ctx->ComputeProgram._Current != prevCP) new_state |= _NEW_PROGRAM; - if (ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_FRAGMENT_PROGRAM_ARB, - ctx->FragmentProgram._Current); - } - } - - if (ctx->GeometryProgram._Current != prevGP) { - new_state |= _NEW_PROGRAM; - if (ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_GEOMETRY_PROGRAM_NV, - ctx->GeometryProgram._Current); - } - } - - if (ctx->TessEvalProgram._Current != prevTEP) { - new_state |= _NEW_PROGRAM; - if (ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_TESS_EVALUATION_PROGRAM_NV, - ctx->TessEvalProgram._Current); - } - } - - if (ctx->TessCtrlProgram._Current != prevTCP) { - new_state |= _NEW_PROGRAM; - if (ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_TESS_CONTROL_PROGRAM_NV, - ctx->TessCtrlProgram._Current); - } - } - - if (ctx->VertexProgram._Current != prevVP) { - new_state |= _NEW_PROGRAM; - if (ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_VERTEX_PROGRAM_ARB, - ctx->VertexProgram._Current); - } - } - - if (ctx->ComputeProgram._Current != prevCP) { - new_state |= _NEW_PROGRAM; - if (ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_COMPUTE_PROGRAM_NV, - ctx->ComputeProgram._Current); - } - } return new_state; } /** * Examine shader constants and return either _NEW_PROGRAM_CONSTANTS or 0. */ static GLbitfield update_program_constants(struct gl_context *ctx) diff --git a/src/mesa/tnl/t_vp_build.c b/src/mesa/tnl/t_vp_build.c index 18d105f..3d8210c 100644 --- a/src/mesa/tnl/t_vp_build.c +++ b/src/mesa/tnl/t_vp_build.c @@ -41,19 +41,11 @@ void _tnl_UpdateFixedFunctionProgram( struct gl_context *ctx ) { const struct gl_program *prev = ctx->VertexProgram._Current; if (!ctx->VertexProgram._Current || ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) { ctx->VertexProgram._Current = ctx->VertexProgram._TnlProgram = _mesa_get_fixed_func_vertex_program(ctx); } - - /* Tell the driver about the change. Could define a new target for - * this? - */ - if (ctx->VertexProgram._Current != prev && ctx->Driver.BindProgram) { - ctx->Driver.BindProgram(ctx, GL_VERTEX_PROGRAM_ARB, - ctx->VertexProgram._Current); - } }
-- Lerne, wie die Welt wirklich ist, Aber vergiss niemals, wie sie sein sollte. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev