Mesa (master): st/mesa: Use compressed fog mode for atifs.

Marek Olšák mareko at kemper.freedesktop.org
Sat Apr 8 20:08:03 UTC 2017


Module: Mesa
Branch: master
Commit: a2eae66b8b12749c07743676863d665ac82c0e31
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2eae66b8b12749c07743676863d665ac82c0e31

Author: Gustaw Smolarczyk <wielkiegie at gmail.com>
Date:   Thu Mar 30 20:09:33 2017 +0200

st/mesa: Use compressed fog mode for atifs.

Signed-off-by: Gustaw Smolarczyk <wielkiegie at gmail.com>
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Signed-off-by: Marek Olšák <marek.olsak at amd.com>

---

 src/mesa/state_tracker/st_atifs_to_tgsi.c |  6 +++---
 src/mesa/state_tracker/st_atom_shader.c   | 17 +----------------
 2 files changed, 4 insertions(+), 19 deletions(-)

diff --git a/src/mesa/state_tracker/st_atifs_to_tgsi.c b/src/mesa/state_tracker/st_atifs_to_tgsi.c
index 64879f1b27..90286a1115 100644
--- a/src/mesa/state_tracker/st_atifs_to_tgsi.c
+++ b/src/mesa/state_tracker/st_atifs_to_tgsi.c
@@ -705,7 +705,7 @@ transform_inst:
       }
 
       /* compute the 1 component fog factor f */
-      if (ctx->key->fog == 1) {
+      if (ctx->key->fog == FOG_LINEAR) {
          /* LINEAR formula: f = (end - z) / (end - start)
           * with optimized parameters:
           *    f = MAD(fogcoord, oparams.x, oparams.y)
@@ -721,7 +721,7 @@ transform_inst:
          SET_SRC(&inst, 1, TGSI_FILE_CONSTANT, MAX_NUM_FRAGMENT_CONSTANTS_ATI, X, X, X, X);
          SET_SRC(&inst, 2, TGSI_FILE_CONSTANT, MAX_NUM_FRAGMENT_CONSTANTS_ATI, Y, Y, Y, Y);
          tctx->emit_instruction(tctx, &inst);
-      } else if (ctx->key->fog == 2) {
+      } else if (ctx->key->fog == FOG_EXP) {
          /* EXP formula: f = exp(-dens * z)
           * with optimized parameters:
           *    f = MUL(fogcoord, oparams.z); f= EX2(-f)
@@ -747,7 +747,7 @@ transform_inst:
          SET_SRC(&inst, 0, TGSI_FILE_TEMPORARY, ctx->fog_factor_temp, X, Y, Z, W);
          inst.Src[0].Register.Negate = 1;
          tctx->emit_instruction(tctx, &inst);
-      } else if (ctx->key->fog == 3) {
+      } else if (ctx->key->fog == FOG_EXP2) {
          /* EXP2 formula: f = exp(-(dens * z)^2)
           * with optimized parameters:
           *    f = MUL(fogcoord, oparams.w); f=MUL(f, f); f= EX2(-f)
diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c
index f79afe0b1c..ee97c69df3 100644
--- a/src/mesa/state_tracker/st_atom_shader.c
+++ b/src/mesa/state_tracker/st_atom_shader.c
@@ -54,19 +54,6 @@
 #include "st_texture.h"
 
 
-/** Compress the fog function enums into a 2-bit value */
-static GLuint
-translate_fog_mode(GLenum mode)
-{
-   switch (mode) {
-   case GL_LINEAR: return 1;
-   case GL_EXP:    return 2;
-   case GL_EXP2:   return 3;
-   default:
-      return 0;
-   }
-}
-
 static unsigned
 get_texture_target(struct gl_context *ctx, const unsigned unit)
 {
@@ -132,9 +119,7 @@ update_fp( struct st_context *st )
       _mesa_geometric_samples(st->ctx->DrawBuffer) > 1;
 
    if (stfp->ati_fs) {
-      if (st->ctx->Fog.Enabled) {
-         key.fog = translate_fog_mode(st->ctx->Fog.Mode);
-      }
+      key.fog = st->ctx->Fog._PackedEnabledMode;
 
       for (unsigned u = 0; u < MAX_NUM_FRAGMENT_REGISTERS_ATI; u++) {
          key.texture_targets[u] = get_texture_target(st->ctx, u);




More information about the mesa-commit mailing list