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

Author: Kenneth Graunke <[email protected]>
Date:   Wed Nov 27 02:41:47 2019 -0800

st/mesa: Add GL_TDFX_texture_compression_FXT1 support

Eric recently added PIPE_FORMAT_FXT1_RGB[A] as part of his format
unification work.  This was really most of the work of implementing
the extension.  We just need to handle it in a couple of places and
expose the extension.

v2: Reject the new formats in llvmpipe_is_format_supported to prevent
    crashes because it doesn't know how to handle the new formats.

Reviewed-by: Marek Olšák <[email protected]> [v1]
Reviewed-by: Eric Anholt <[email protected]> [v1]

---

 src/gallium/drivers/llvmpipe/lp_screen.c | 3 ++-
 src/mesa/state_tracker/st_cb_texture.c   | 2 ++
 src/mesa/state_tracker/st_extensions.c   | 4 ++++
 src/mesa/state_tracker/st_format.c       | 6 ++----
 src/util/format/u_format.h               | 1 +
 5 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c 
b/src/gallium/drivers/llvmpipe/lp_screen.c
index c036108d318..080b0635c64 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -665,7 +665,8 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
    }
 
    if (format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC ||
-       format_desc->layout == UTIL_FORMAT_LAYOUT_ATC) {
+       format_desc->layout == UTIL_FORMAT_LAYOUT_ATC ||
+       format_desc->layout == UTIL_FORMAT_LAYOUT_FXT1) {
       /* Software decoding is not hooked up. */
       return false;
    }
diff --git a/src/mesa/state_tracker/st_cb_texture.c 
b/src/mesa/state_tracker/st_cb_texture.c
index ace19c59b0e..df5f16efd62 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -2046,6 +2046,8 @@ st_GetTexSubImage(struct gl_context * ctx,
       case PIPE_FORMAT_ASTC_12x10:
       case PIPE_FORMAT_ASTC_12x12:
       case PIPE_FORMAT_BPTC_RGBA_UNORM:
+      case PIPE_FORMAT_FXT1_RGB:
+      case PIPE_FORMAT_FXT1_RGBA:
          dst_glformat = GL_RGBA8;
          break;
       case PIPE_FORMAT_RGTC1_SNORM:
diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 252e04c0716..f31ea043ee0 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -877,6 +877,10 @@ void st_init_extensions(struct pipe_screen *screen,
           PIPE_FORMAT_BPTC_RGB_FLOAT,
           PIPE_FORMAT_BPTC_RGB_UFLOAT } },
 
+      { { o(TDFX_texture_compression_FXT1) },
+        { PIPE_FORMAT_FXT1_RGB,
+          PIPE_FORMAT_FXT1_RGBA } },
+
       { { o(KHR_texture_compression_astc_ldr),
           o(KHR_texture_compression_astc_sliced_3d) },
         { PIPE_FORMAT_ASTC_4x4,
diff --git a/src/mesa/state_tracker/st_format.c 
b/src/mesa/state_tracker/st_format.c
index c0e9e25c71d..4bbb781932d 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -332,16 +332,14 @@ static const struct format_mapping format_map[] = {
       { PIPE_FORMAT_DXT5_RGBA, 0 }
    },
 
-#if 0
    {
       { GL_COMPRESSED_RGB_FXT1_3DFX, 0 },
-      { PIPE_FORMAT_RGB_FXT1, 0 }
+      { PIPE_FORMAT_FXT1_RGB, 0 }
    },
    {
       { GL_COMPRESSED_RGBA_FXT1_3DFX, 0 },
-      { PIPE_FORMAT_RGBA_FXT1, 0 }
+      { PIPE_FORMAT_FXT1_RGBA, 0 }
    },
-#endif
 
    /* Depth formats */
    {
diff --git a/src/util/format/u_format.h b/src/util/format/u_format.h
index eec7a185f94..b85bd217b2e 100644
--- a/src/util/format/u_format.h
+++ b/src/util/format/u_format.h
@@ -495,6 +495,7 @@ util_format_is_compressed(enum pipe_format format)
    case UTIL_FORMAT_LAYOUT_BPTC:
    case UTIL_FORMAT_LAYOUT_ASTC:
    case UTIL_FORMAT_LAYOUT_ATC:
+   case UTIL_FORMAT_LAYOUT_FXT1:
       /* XXX add other formats in the future */
       return TRUE;
    default:

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to