[PATCH 2/3] etnaviv: Add TS_SAMPLER formats to etnaviv_format
Wladimir J. van der Laan
laanwj at gmail.com
Tue Nov 7 16:43:28 UTC 2017
Sampler TS introduces yet another format enumeration for renderable
formats. Introduce it into etnaviv_format as unobtrusively as possible.
Signed-off-by: Wladimir J. van der Laan <laanwj at gmail.com>
---
src/gallium/drivers/etnaviv/etnaviv_format.c | 19 +++++++++++++++++++
src/gallium/drivers/etnaviv/etnaviv_format.h | 3 +++
2 files changed, 22 insertions(+)
diff --git a/src/gallium/drivers/etnaviv/etnaviv_format.c b/src/gallium/drivers/etnaviv/etnaviv_format.c
index 3dd212f..f3cba46 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_format.c
+++ b/src/gallium/drivers/etnaviv/etnaviv_format.c
@@ -40,6 +40,7 @@ struct etna_format {
unsigned vtx;
unsigned tex;
unsigned rs;
+ unsigned ts;
boolean present;
const unsigned char tex_swiz[4];
};
@@ -53,6 +54,13 @@ struct etna_format {
#define RS_FORMAT_X8B8G8R8 (RS_FORMAT_X8R8G8B8 | RS_FORMAT_RB_SWAP)
#define RS_FORMAT_A8B8G8R8 (RS_FORMAT_A8R8G8B8 | RS_FORMAT_RB_SWAP)
+#define TS_SAMPLER_FORMAT_NONE ETNA_NO_MATCH
+#define TS_SAMPLER_FORMAT_X4R4G4B4 TS_SAMPLER_FORMAT_A4R4G4B4
+#define TS_SAMPLER_FORMAT_X1R5G5B5 TS_SAMPLER_FORMAT_A1R5G5B5
+#define TS_SAMPLER_FORMAT_YUY2 TS_SAMPLER_FORMAT_NONE /* Not supported AFAIK */
+#define TS_SAMPLER_FORMAT_X8B8G8R8 TS_SAMPLER_FORMAT_X8R8G8B8
+#define TS_SAMPLER_FORMAT_A8B8G8R8 TS_SAMPLER_FORMAT_A8R8G8B8
+
#define SWIZ(x,y,z,w) { \
PIPE_SWIZZLE_##x, \
PIPE_SWIZZLE_##y, \
@@ -66,6 +74,7 @@ struct etna_format {
.vtx = FE_DATA_TYPE_##vtxfmt, \
.tex = TEXTURE_FORMAT_##texfmt, \
.rs = RS_FORMAT_##rsfmt, \
+ .ts = TS_SAMPLER_FORMAT_##rsfmt, \
.present = 1, \
.tex_swiz = texswiz, \
}
@@ -76,6 +85,7 @@ struct etna_format {
.vtx = ETNA_NO_MATCH, \
.tex = TEXTURE_FORMAT_##fmt, \
.rs = RS_FORMAT_##rsfmt, \
+ .ts = TS_SAMPLER_FORMAT_##rsfmt, \
.present = 1, \
.tex_swiz = swiz, \
}
@@ -356,3 +366,12 @@ translate_vertex_format_type(enum pipe_format fmt)
return formats[fmt].vtx;
}
+
+uint32_t
+translate_ts_sampler_format(enum pipe_format fmt)
+{
+ if (!formats[fmt].present)
+ return ETNA_NO_MATCH;
+
+ return formats[fmt].ts;
+}
diff --git a/src/gallium/drivers/etnaviv/etnaviv_format.h b/src/gallium/drivers/etnaviv/etnaviv_format.h
index 1672d67..20c8e1b 100644
--- a/src/gallium/drivers/etnaviv/etnaviv_format.h
+++ b/src/gallium/drivers/etnaviv/etnaviv_format.h
@@ -53,4 +53,7 @@ translate_rs_format_rb_swap(enum pipe_format fmt);
uint32_t
translate_vertex_format_type(enum pipe_format fmt);
+uint32_t
+translate_ts_sampler_format(enum pipe_format fmt);
+
#endif /* ETNAVIV_FORMAT_H_ */
--
2.7.4
More information about the etnaviv
mailing list