[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