Mesa (master): radeonsi: implement BPTC texture support

Marek Olšák mareko at kemper.freedesktop.org
Thu Aug 14 18:46:07 UTC 2014


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

Author: Grigori Goronzy <greg at chown.ath.cx>
Date:   Wed Aug 13 02:39:02 2014 +0200

radeonsi: implement BPTC texture support

Passes all piglit tests.

v2: rebased

Signed-off-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/radeonsi/si_state.c |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index d22c112..98c19d6 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -1102,6 +1102,22 @@ static uint32_t si_translate_texformat(struct pipe_screen *screen,
 		}
 	}
 
+	if (desc->layout == UTIL_FORMAT_LAYOUT_BPTC) {
+		if (!enable_s3tc)
+			goto out_unknown;
+
+		switch (format) {
+		case PIPE_FORMAT_BPTC_RGBA_UNORM:
+		case PIPE_FORMAT_BPTC_SRGBA:
+			return V_008F14_IMG_DATA_FORMAT_BC7;
+		case PIPE_FORMAT_BPTC_RGB_FLOAT:
+		case PIPE_FORMAT_BPTC_RGB_UFLOAT:
+			return V_008F14_IMG_DATA_FORMAT_BC6;
+		default:
+			goto out_unknown;
+		}
+	}
+
 	if (desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED) {
 		switch (format) {
 		case PIPE_FORMAT_R8G8_B8G8_UNORM:
@@ -2470,12 +2486,16 @@ static struct pipe_sampler_view *si_create_sampler_view(struct pipe_context *ctx
 				case PIPE_FORMAT_DXT1_SRGBA:
 				case PIPE_FORMAT_DXT3_SRGBA:
 				case PIPE_FORMAT_DXT5_SRGBA:
+				case PIPE_FORMAT_BPTC_SRGBA:
 					num_format = V_008F14_IMG_NUM_FORMAT_SRGB;
 					break;
 				case PIPE_FORMAT_RGTC1_SNORM:
 				case PIPE_FORMAT_LATC1_SNORM:
 				case PIPE_FORMAT_RGTC2_SNORM:
 				case PIPE_FORMAT_LATC2_SNORM:
+				/* implies float, so use SNORM/UNORM to determine
+				   whether data is signed or not */
+				case PIPE_FORMAT_BPTC_RGB_FLOAT:
 					num_format = V_008F14_IMG_NUM_FORMAT_SNORM;
 					break;
 				default:




More information about the mesa-commit mailing list