[Mesa-dev] [PATCH] mesa: fix texture updates for ATI_fragment_shader

Marek Olšák maraeo at gmail.com
Wed Sep 27 15:39:27 UTC 2017


From: Marek Olšák <marek.olsak at amd.com>

---
 src/mesa/main/texstate.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c
index 269e291..edd2253 100644
--- a/src/mesa/main/texstate.c
+++ b/src/mesa/main/texstate.c
@@ -833,23 +833,25 @@ update_ff_texture_state(struct gl_context *ctx,
 void
 _mesa_update_texture_state(struct gl_context *ctx)
 {
    struct gl_program *prog[MESA_SHADER_STAGES];
    int i;
    int old_max_unit = ctx->Texture._MaxEnabledTexImageUnit;
    BITSET_DECLARE(enabled_texture_units, MAX_COMBINED_TEXTURE_IMAGE_UNITS);
 
    memcpy(prog, ctx->_Shader->CurrentProgram, sizeof(prog));
 
-   if (prog[MESA_SHADER_FRAGMENT] == NULL &&
-       _mesa_arb_fragment_program_enabled(ctx)) {
-      prog[MESA_SHADER_FRAGMENT] = ctx->FragmentProgram.Current;
+   if (prog[MESA_SHADER_FRAGMENT] == NULL) {
+      if (_mesa_arb_fragment_program_enabled(ctx))
+         prog[MESA_SHADER_FRAGMENT] = ctx->FragmentProgram.Current;
+      else if (_mesa_ati_fragment_shader_enabled(ctx))
+         prog[MESA_SHADER_FRAGMENT] = ctx->ATIFragmentShader.Current->Program;
    }
 
    /* TODO: only set this if there are actual changes */
    ctx->NewState |= _NEW_TEXTURE_OBJECT | _NEW_TEXTURE_STATE;
 
    ctx->Texture._GenFlags = 0x0;
    ctx->Texture._TexMatEnabled = 0x0;
    ctx->Texture._TexGenEnabled = 0x0;
    ctx->Texture._MaxEnabledTexImageUnit = -1;
    ctx->Texture._EnabledCoordUnits = 0x0;
-- 
2.7.4



More information about the mesa-dev mailing list