Mesa (master): r300g: support some exotic sampler formats
Marek Olšák
mareko at kemper.freedesktop.org
Sun Apr 11 04:41:00 UTC 2010
Module: Mesa
Branch: master
Commit: e1208bbeaeefd12a445cef84cbd12b7dc346531f
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e1208bbeaeefd12a445cef84cbd12b7dc346531f
Author: Marek Olšák <maraeo at gmail.com>
Date: Sun Apr 11 04:43:23 2010 +0200
r300g: support some exotic sampler formats
---
src/gallium/drivers/r300/r300_reg.h | 2 +-
src/gallium/drivers/r300/r300_texture.c | 23 ++++++++++++++++-------
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/src/gallium/drivers/r300/r300_reg.h b/src/gallium/drivers/r300/r300_reg.h
index bb87cc7..239f914 100644
--- a/src/gallium/drivers/r300/r300_reg.h
+++ b/src/gallium/drivers/r300/r300_reg.h
@@ -1543,7 +1543,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
# define R300_TX_FORMAT_DXT1 0xF
# define R300_TX_FORMAT_DXT3 0x10
# define R300_TX_FORMAT_DXT5 0x11
-# define R300_TX_FORMAT_Y8 0x12
+# define R300_TX_FORMAT_CxV8U8 0x12
# define R300_TX_FORMAT_AVYU444 0x13
# define R300_TX_FORMAT_VYUY422 0x14
# define R300_TX_FORMAT_YVYU422 0x15
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index 4f1562d..8ed28eb 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -99,12 +99,6 @@ uint32_t r300_translate_texformat(enum pipe_format format,
R300_TX_FORMAT_SIGNED_W,
};
- /* This is truly a special format.
- * It stores R8G8 and B is computed using sqrt(1 - R^2 - G^2). */
- if (format == PIPE_FORMAT_R8G8Bx_SNORM) {
- return ~0; /* Unsupported. */
- }
-
desc = util_format_description(format);
/* Colorspace (return non-RGB formats directly). */
@@ -139,7 +133,15 @@ uint32_t r300_translate_texformat(enum pipe_format format,
result |= R300_TX_FORMAT_GAMMA;
break;
- default:;
+ default:
+ switch (format) {
+ /* Same as YUV but without the YUR->RGB conversion. */
+ case PIPE_FORMAT_R8G8_B8G8_UNORM:
+ return R300_EASY_TX_FORMAT(X, Y, Z, ONE, YVYU422) | result;
+ case PIPE_FORMAT_G8R8_G8B8_UNORM:
+ return R300_EASY_TX_FORMAT(X, Y, Z, ONE, VYUY422) | result;
+ default:;
+ }
}
/* Add swizzle. */
@@ -213,6 +215,13 @@ uint32_t r300_translate_texformat(enum pipe_format format,
}
}
+ /* This is truly a special format.
+ * It stores R8G8 and B is computed using sqrt(1 - R^2 - G^2)
+ * in the sampler unit. Also known as D3DFMT_CxV8U8. */
+ if (format == PIPE_FORMAT_R8G8Bx_SNORM) {
+ return R300_TX_FORMAT_CxV8U8 | result;
+ }
+
/* RGTC formats. */
if (desc->layout == UTIL_FORMAT_LAYOUT_RGTC) {
switch (format) {
More information about the mesa-commit
mailing list