Mesa (master): r600g: reorganise rgtc pieces.

Dave Airlie airlied at kemper.freedesktop.org
Fri Feb 18 05:55:59 UTC 2011


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Feb 18 15:59:58 2011 +1000

r600g: reorganise rgtc pieces.

when the cs checker fixes go upstream a lot of this can disappear
into a drm version check.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/gallium/drivers/r600/r600_texture.c |   39 ++++++++++++++++++------------
 1 files changed, 23 insertions(+), 16 deletions(-)

diff --git a/src/gallium/drivers/r600/r600_texture.c b/src/gallium/drivers/r600/r600_texture.c
index 2321231..ce06d74 100644
--- a/src/gallium/drivers/r600/r600_texture.c
+++ b/src/gallium/drivers/r600/r600_texture.c
@@ -808,6 +808,8 @@ uint32_t r600_translate_texformat(enum pipe_format format,
 	uint32_t result = 0, word4 = 0, yuv_format = 0;
 	const struct util_format_description *desc;
 	boolean uniform = TRUE;
+	static int r600_enable_s3tc = -1;
+
 	int i;
 	const uint32_t sign_bit[4] = {
 		S_038010_FORMAT_COMP_X(V_038010_SQ_FORMAT_COMP_SIGNED),
@@ -865,13 +867,28 @@ uint32_t r600_translate_texformat(enum pipe_format format,
 		break;
 	}
 
-	/* S3TC formats. TODO */
-	if (desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
-		static int r600_enable_s3tc = -1;
+	if (r600_enable_s3tc == -1)
+		r600_enable_s3tc = debug_get_bool_option("R600_ENABLE_S3TC", FALSE);
 
-		if (r600_enable_s3tc == -1)
-			r600_enable_s3tc =
-				debug_get_bool_option("R600_ENABLE_S3TC", FALSE);
+	if (desc->layout == UTIL_FORMAT_LAYOUT_RGTC) {
+		if (!r600_enable_s3tc)
+			goto out_unknown;
+
+		switch (format) {
+		case PIPE_FORMAT_RGTC1_UNORM:
+		case PIPE_FORMAT_RGTC1_SNORM:
+			result = FMT_BC4;
+			goto out_word4;
+		case PIPE_FORMAT_RGTC2_UNORM:
+		case PIPE_FORMAT_RGTC2_SNORM:
+			result = FMT_BC5;
+			goto out_word4;
+		default:
+			goto out_unknown;
+		}
+	}
+
+	if (desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
 
 		if (!r600_enable_s3tc)
 			goto out_unknown;
@@ -895,14 +912,6 @@ uint32_t r600_translate_texformat(enum pipe_format format,
 		case PIPE_FORMAT_DXT5_SRGBA:
 			result = FMT_BC3;
 			goto out_word4;
-		case PIPE_FORMAT_RGTC1_UNORM:
-		case PIPE_FORMAT_RGTC1_SNORM:
-			result = FMT_BC4;
-			goto out_word4;
-		case PIPE_FORMAT_RGTC2_UNORM:
-		case PIPE_FORMAT_RGTC2_SNORM:
-			result = FMT_BC5;
-			goto out_word4;
 		default:
 			goto out_unknown;
 		}
@@ -917,8 +926,6 @@ uint32_t r600_translate_texformat(enum pipe_format format,
 
 	/* R8G8Bx_SNORM - TODO CxV8U8 */
 
-	/* RGTC - TODO */
-
 	/* See whether the components are of the same size. */
 	for (i = 1; i < desc->nr_channels; i++) {
 		uniform = uniform && desc->channel[0].size == desc->channel[i].size;




More information about the mesa-commit mailing list