summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r300/r300_texture.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r300/r300_texture.h')
-rw-r--r--src/gallium/drivers/r300/r300_texture.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_texture.h b/src/gallium/drivers/r300/r300_texture.h
index 961bdcc5b3..b9c3ab8093 100644
--- a/src/gallium/drivers/r300/r300_texture.h
+++ b/src/gallium/drivers/r300/r300_texture.h
@@ -24,6 +24,7 @@
#define R300_TEXTURE_H
#include "pipe/p_video_state.h"
+#include "util/u_format.h"
#include "r300_reg.h"
@@ -37,6 +38,10 @@ unsigned r300_texture_get_stride(struct r300_screen* screen,
unsigned r300_texture_get_offset(struct r300_texture* tex, unsigned level,
unsigned zslice, unsigned face);
+void r300_texture_reinterpret_format(struct pipe_screen *screen,
+ struct pipe_texture *tex,
+ enum pipe_format new_format);
+
/* Translate a pipe_format into a useful texture format for sampling.
*
* R300_EASY_TX_FORMAT swizzles the texture.
@@ -59,12 +64,20 @@ static INLINE uint32_t r300_translate_texformat(enum pipe_format format)
return R300_EASY_TX_FORMAT(X, X, X, ONE, X8) |
R300_TX_FORMAT_GAMMA;
/* X16 */
+ case PIPE_FORMAT_A4R4G4B4_UNORM:
+ return R300_EASY_TX_FORMAT(X, Y, Z, W, W4Z4Y4X4);
case PIPE_FORMAT_R16_UNORM:
case PIPE_FORMAT_Z16_UNORM:
return R300_EASY_TX_FORMAT(X, X, X, X, X16);
case PIPE_FORMAT_R16_SNORM:
return R300_EASY_TX_FORMAT(X, X, X, X, X16) |
R300_TX_FORMAT_SIGNED;
+ /* Z5Y6X5 */
+ case PIPE_FORMAT_R5G6B5_UNORM:
+ return R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5);
+ /* W1Z5Y5X5*/
+ case PIPE_FORMAT_A1R5G5B5_UNORM:
+ return R300_EASY_TX_FORMAT(X, Y, Z, W, W1Z5Y5X5);
/* Y8X8 */
case PIPE_FORMAT_A8L8_UNORM:
return R300_EASY_TX_FORMAT(X, X, X, Y, Y8X8);
@@ -109,7 +122,7 @@ static INLINE uint32_t r300_translate_texformat(enum pipe_format format)
default:
debug_printf("r300: Implementation error: "
"Got unsupported texture format %s in %s\n",
- pf_name(format), __FUNCTION__);
+ util_format_name(format), __FUNCTION__);
assert(0);
break;
}