Mesa (main): freedreno/a6xx: Move the format table to common code.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 5 20:44:49 UTC 2021
Module: Mesa
Branch: main
Commit: bdddcc4d3fbf3a51491b0a959a3c97e96c63b121
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bdddcc4d3fbf3a51491b0a959a3c97e96c63b121
Author: Emma Anholt <emma at anholt.net>
Date: Fri Sep 24 13:57:34 2021 -0700
freedreno/a6xx: Move the format table to common code.
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13046>
---
src/freedreno/fdl/fd6_format_table.c | 389 ++++++++++++++++++++++++
src/freedreno/fdl/fd6_format_table.h | 44 +++
src/freedreno/fdl/meson.build | 2 +
src/gallium/drivers/freedreno/a6xx/fd6_format.c | 358 ----------------------
src/gallium/drivers/freedreno/a6xx/fd6_format.h | 6 +-
5 files changed, 436 insertions(+), 363 deletions(-)
diff --git a/src/freedreno/fdl/fd6_format_table.c b/src/freedreno/fdl/fd6_format_table.c
new file mode 100644
index 00000000000..f550dc6bfcb
--- /dev/null
+++ b/src/freedreno/fdl/fd6_format_table.c
@@ -0,0 +1,389 @@
+/*
+ * Copyright (C) 2016 Rob Clark <robclark at freedesktop.org>
+ * Copyright © 2018 Google, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Authors:
+ * Rob Clark <robclark at freedesktop.org>
+ */
+
+#include "pipe/p_defines.h"
+#include "util/format/u_format.h"
+
+#include "fd6_format_table.h"
+
+/* Specifies the table of all the formats and their features. Also supplies
+ * the helpers that look up various data in those tables.
+ */
+
+struct fd6_format {
+ enum a6xx_format vtx;
+ enum a6xx_format tex;
+ enum a6xx_format rb;
+ enum a3xx_color_swap swap;
+ boolean present;
+};
+
+#define FMT(pipe, vtxfmt, texfmt, rbfmt, swapfmt) \
+ [PIPE_FORMAT_##pipe] = {.present = 1, \
+ .vtx = FMT6_##vtxfmt, \
+ .tex = FMT6_##texfmt, \
+ .rb = FMT6_##rbfmt, \
+ .swap = swapfmt}
+
+/* vertex + texture + color */
+#define VTC(pipe, fmt, swapfmt) FMT(pipe, fmt, fmt, fmt, swapfmt)
+
+#define _TC(pipe, fmt, swapfmt) FMT(pipe, NONE, fmt, fmt, swapfmt)
+#define _T_(pipe, fmt, swapfmt) FMT(pipe, NONE, fmt, NONE, swapfmt)
+#define VT_(pipe, fmt, swapfmt) FMT(pipe, fmt, fmt, NONE, swapfmt)
+#define V__(pipe, fmt, swapfmt) FMT(pipe, fmt, NONE, NONE, swapfmt)
+
+/* clang-format off */
+static struct fd6_format formats[PIPE_FORMAT_COUNT] = {
+ /* 8-bit */
+ VTC(R8_UNORM, 8_UNORM, WZYX),
+ VTC(R8_SNORM, 8_SNORM, WZYX),
+ VTC(R8_UINT, 8_UINT, WZYX),
+ VTC(R8_SINT, 8_SINT, WZYX),
+ V__(R8_USCALED, 8_UINT, WZYX),
+ V__(R8_SSCALED, 8_SINT, WZYX),
+
+ FMT(A8_UNORM, NONE, 8_UNORM, A8_UNORM, WZYX),
+ _TC(L8_UNORM, 8_UNORM, WZYX),
+ _T_(I8_UNORM, 8_UNORM, WZYX),
+
+ _T_(A8_UINT, 8_UINT, WZYX),
+ _T_(A8_SINT, 8_SINT, WZYX),
+ _T_(L8_UINT, 8_UINT, WZYX),
+ _T_(L8_SINT, 8_SINT, WZYX),
+ _T_(I8_UINT, 8_UINT, WZYX),
+ _T_(I8_SINT, 8_SINT, WZYX),
+
+ _TC(S8_UINT, 8_UINT, WZYX),
+
+ /* 16-bit */
+ VTC(R16_UNORM, 16_UNORM, WZYX),
+ VTC(R16_SNORM, 16_SNORM, WZYX),
+ VTC(R16_UINT, 16_UINT, WZYX),
+ VTC(R16_SINT, 16_SINT, WZYX),
+ V__(R16_USCALED, 16_UINT, WZYX),
+ V__(R16_SSCALED, 16_SINT, WZYX),
+ VTC(R16_FLOAT, 16_FLOAT, WZYX),
+ _TC(Z16_UNORM, 16_UNORM, WZYX),
+
+ _T_(A16_UNORM, 16_UNORM, WZYX),
+ _T_(A16_SNORM, 16_SNORM, WZYX),
+ _T_(A16_UINT, 16_UINT, WZYX),
+ _T_(A16_SINT, 16_SINT, WZYX),
+ _T_(L16_UNORM, 16_UNORM, WZYX),
+ _T_(L16_SNORM, 16_SNORM, WZYX),
+ _T_(L16_UINT, 16_UINT, WZYX),
+ _T_(L16_SINT, 16_SINT, WZYX),
+ _T_(I16_UNORM, 16_UNORM, WZYX),
+ _T_(I16_SNORM, 16_SNORM, WZYX),
+ _T_(I16_UINT, 16_UINT, WZYX),
+ _T_(I16_SINT, 16_SINT, WZYX),
+
+ VTC(R8G8_UNORM, 8_8_UNORM, WZYX),
+ VTC(R8G8_SNORM, 8_8_SNORM, WZYX),
+ VTC(R8G8_UINT, 8_8_UINT, WZYX),
+ VTC(R8G8_SINT, 8_8_SINT, WZYX),
+ V__(R8G8_USCALED, 8_8_UINT, WZYX),
+ V__(R8G8_SSCALED, 8_8_SINT, WZYX),
+
+ _T_(L8A8_UINT, 8_8_UINT, WZYX),
+ _T_(L8A8_SINT, 8_8_SINT, WZYX),
+
+ _TC(B5G6R5_UNORM, 5_6_5_UNORM, WXYZ),
+ _TC(B5G5R5A1_UNORM, 5_5_5_1_UNORM, WXYZ),
+ _TC(B5G5R5X1_UNORM, 5_5_5_1_UNORM, WXYZ),
+ _TC(B4G4R4A4_UNORM, 4_4_4_4_UNORM, WXYZ),
+
+ /* 24-bit */
+ V__(R8G8B8_UNORM, 8_8_8_UNORM, WZYX),
+ V__(R8G8B8_SNORM, 8_8_8_SNORM, WZYX),
+ V__(R8G8B8_UINT, 8_8_8_UINT, WZYX),
+ V__(R8G8B8_SINT, 8_8_8_SINT, WZYX),
+ V__(R8G8B8_USCALED, 8_8_8_UINT, WZYX),
+ V__(R8G8B8_SSCALED, 8_8_8_SINT, WZYX),
+
+ /* 32-bit */
+ V__(R32_UNORM, 32_UNORM, WZYX),
+ V__(R32_SNORM, 32_SNORM, WZYX),
+ VTC(R32_UINT, 32_UINT, WZYX),
+ VTC(R32_SINT, 32_SINT, WZYX),
+ V__(R32_USCALED, 32_UINT, WZYX),
+ V__(R32_SSCALED, 32_SINT, WZYX),
+ VTC(R32_FLOAT, 32_FLOAT, WZYX),
+ V__(R32_FIXED, 32_FIXED, WZYX),
+
+ _T_(A32_UINT, 32_UINT, WZYX),
+ _T_(A32_SINT, 32_SINT, WZYX),
+ _T_(L32_UINT, 32_UINT, WZYX),
+ _T_(L32_SINT, 32_SINT, WZYX),
+ _T_(I32_UINT, 32_UINT, WZYX),
+ _T_(I32_SINT, 32_SINT, WZYX),
+
+ VTC(R16G16_UNORM, 16_16_UNORM, WZYX),
+ VTC(R16G16_SNORM, 16_16_SNORM, WZYX),
+ VTC(R16G16_UINT, 16_16_UINT, WZYX),
+ VTC(R16G16_SINT, 16_16_SINT, WZYX),
+ VT_(R16G16_USCALED, 16_16_UINT, WZYX),
+ VT_(R16G16_SSCALED, 16_16_SINT, WZYX),
+ VTC(R16G16_FLOAT, 16_16_FLOAT, WZYX),
+
+ _T_(L16A16_UNORM, 16_16_UNORM, WZYX),
+ _T_(L16A16_SNORM, 16_16_SNORM, WZYX),
+ _T_(L16A16_UINT, 16_16_UINT, WZYX),
+ _T_(L16A16_SINT, 16_16_SINT, WZYX),
+
+ VTC(R8G8B8A8_UNORM, 8_8_8_8_UNORM, WZYX),
+ _TC(R8G8B8X8_UNORM, 8_8_8_8_UNORM, WZYX),
+ _TC(R8G8B8A8_SRGB, 8_8_8_8_UNORM, WZYX),
+ _TC(R8G8B8X8_SRGB, 8_8_8_8_UNORM, WZYX),
+ VTC(R8G8B8A8_SNORM, 8_8_8_8_SNORM, WZYX),
+ VTC(R8G8B8A8_UINT, 8_8_8_8_UINT, WZYX),
+ VTC(R8G8B8A8_SINT, 8_8_8_8_SINT, WZYX),
+ V__(R8G8B8A8_USCALED, 8_8_8_8_UINT, WZYX),
+ V__(R8G8B8A8_SSCALED, 8_8_8_8_SINT, WZYX),
+
+ VTC(B8G8R8A8_UNORM, 8_8_8_8_UNORM, WXYZ),
+ _TC(B8G8R8X8_UNORM, 8_8_8_8_UNORM, WXYZ),
+ VTC(B8G8R8A8_SRGB, 8_8_8_8_UNORM, WXYZ),
+ _TC(B8G8R8X8_SRGB, 8_8_8_8_UNORM, WXYZ),
+
+ VTC(A8B8G8R8_UNORM, 8_8_8_8_UNORM, XYZW),
+ _TC(X8B8G8R8_UNORM, 8_8_8_8_UNORM, XYZW),
+ _TC(A8B8G8R8_SRGB, 8_8_8_8_UNORM, XYZW),
+ _TC(X8B8G8R8_SRGB, 8_8_8_8_UNORM, XYZW),
+
+ VTC(A8R8G8B8_UNORM, 8_8_8_8_UNORM, ZYXW),
+ _TC(X8R8G8B8_UNORM, 8_8_8_8_UNORM, ZYXW),
+ _TC(A8R8G8B8_SRGB, 8_8_8_8_UNORM, ZYXW),
+ _TC(X8R8G8B8_SRGB, 8_8_8_8_UNORM, ZYXW),
+
+ FMT(R10G10B10A2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM_DEST, WZYX),
+ FMT(B10G10R10A2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM_DEST, WXYZ),
+ FMT(B10G10R10X2_UNORM, NONE, 10_10_10_2_UNORM, 10_10_10_2_UNORM_DEST, WXYZ),
+ V__(R10G10B10A2_SNORM, 10_10_10_2_SNORM, WZYX),
+ V__(B10G10R10A2_SNORM, 10_10_10_2_SNORM, WXYZ),
+ VTC(R10G10B10A2_UINT, 10_10_10_2_UINT, WZYX),
+ VTC(B10G10R10A2_UINT, 10_10_10_2_UINT, WXYZ),
+ V__(R10G10B10A2_USCALED, 10_10_10_2_UINT, WZYX),
+ V__(B10G10R10A2_USCALED, 10_10_10_2_UINT, WXYZ),
+ V__(R10G10B10A2_SSCALED, 10_10_10_2_SINT, WZYX),
+ V__(B10G10R10A2_SSCALED, 10_10_10_2_SINT, WXYZ),
+
+ VTC(R11G11B10_FLOAT, 11_11_10_FLOAT, WZYX),
+ _T_(R9G9B9E5_FLOAT, 9_9_9_E5_FLOAT, WZYX),
+
+ _TC(Z24X8_UNORM, Z24_UNORM_S8_UINT, WZYX),
+ _TC(X24S8_UINT, 8_8_8_8_UINT, WZYX),
+ _TC(Z24_UNORM_S8_UINT, Z24_UNORM_S8_UINT, WZYX),
+ _TC(Z32_FLOAT, 32_FLOAT, WZYX),
+ _TC(Z32_FLOAT_S8X24_UINT, 32_FLOAT, WZYX),
+ _TC(X32_S8X24_UINT, 8_UINT, WZYX),
+
+ /* special format for blits: */
+ _TC(Z24_UNORM_S8_UINT_AS_R8G8B8A8, Z24_UNORM_S8_UINT_AS_R8G8B8A8, WZYX),
+
+ /* 48-bit */
+ V__(R16G16B16_UNORM, 16_16_16_UNORM, WZYX),
+ V__(R16G16B16_SNORM, 16_16_16_SNORM, WZYX),
+ V__(R16G16B16_UINT, 16_16_16_UINT, WZYX),
+ V__(R16G16B16_SINT, 16_16_16_SINT, WZYX),
+ V__(R16G16B16_USCALED, 16_16_16_UINT, WZYX),
+ V__(R16G16B16_SSCALED, 16_16_16_SINT, WZYX),
+ V__(R16G16B16_FLOAT, 16_16_16_FLOAT, WZYX),
+
+ /* 64-bit */
+ VTC(R16G16B16A16_UNORM, 16_16_16_16_UNORM, WZYX),
+ VTC(R16G16B16X16_UNORM, 16_16_16_16_UNORM, WZYX),
+ VTC(R16G16B16A16_SNORM, 16_16_16_16_SNORM, WZYX),
+ VTC(R16G16B16X16_SNORM, 16_16_16_16_SNORM, WZYX),
+ VTC(R16G16B16A16_UINT, 16_16_16_16_UINT, WZYX),
+ VTC(R16G16B16X16_UINT, 16_16_16_16_UINT, WZYX),
+ VTC(R16G16B16A16_SINT, 16_16_16_16_SINT, WZYX),
+ VTC(R16G16B16X16_SINT, 16_16_16_16_SINT, WZYX),
+ VT_(R16G16B16A16_USCALED, 16_16_16_16_UINT, WZYX),
+ VT_(R16G16B16A16_SSCALED, 16_16_16_16_SINT, WZYX),
+ VTC(R16G16B16A16_FLOAT, 16_16_16_16_FLOAT, WZYX),
+ VTC(R16G16B16X16_FLOAT, 16_16_16_16_FLOAT, WZYX),
+
+ V__(R32G32_UNORM, 32_32_UNORM, WZYX),
+ V__(R32G32_SNORM, 32_32_SNORM, WZYX),
+ VTC(R32G32_UINT, 32_32_UINT, WZYX),
+ VTC(R32G32_SINT, 32_32_SINT, WZYX),
+ V__(R32G32_USCALED, 32_32_UINT, WZYX),
+ V__(R32G32_SSCALED, 32_32_SINT, WZYX),
+ VTC(R32G32_FLOAT, 32_32_FLOAT, WZYX),
+ V__(R32G32_FIXED, 32_32_FIXED, WZYX),
+
+ _T_(L32A32_UINT, 32_32_UINT, WZYX),
+ _T_(L32A32_SINT, 32_32_SINT, WZYX),
+
+ /* 96-bit */
+ V__(R32G32B32_UNORM, 32_32_32_UNORM, WZYX),
+ V__(R32G32B32_SNORM, 32_32_32_SNORM, WZYX),
+ VT_(R32G32B32_UINT, 32_32_32_UINT, WZYX),
+ VT_(R32G32B32_SINT, 32_32_32_SINT, WZYX),
+ V__(R32G32B32_USCALED, 32_32_32_UINT, WZYX),
+ V__(R32G32B32_SSCALED, 32_32_32_SINT, WZYX),
+ VT_(R32G32B32_FLOAT, 32_32_32_FLOAT, WZYX),
+ V__(R32G32B32_FIXED, 32_32_32_FIXED, WZYX),
+
+ /* 128-bit */
+ V__(R32G32B32A32_UNORM, 32_32_32_32_UNORM, WZYX),
+ V__(R32G32B32A32_SNORM, 32_32_32_32_SNORM, WZYX),
+ VTC(R32G32B32A32_UINT, 32_32_32_32_UINT, WZYX),
+ _TC(R32G32B32X32_UINT, 32_32_32_32_UINT, WZYX),
+ VTC(R32G32B32A32_SINT, 32_32_32_32_SINT, WZYX),
+ _TC(R32G32B32X32_SINT, 32_32_32_32_SINT, WZYX),
+ V__(R32G32B32A32_USCALED, 32_32_32_32_UINT, WZYX),
+ V__(R32G32B32A32_SSCALED, 32_32_32_32_SINT, WZYX),
+ VTC(R32G32B32A32_FLOAT, 32_32_32_32_FLOAT, WZYX),
+ _TC(R32G32B32X32_FLOAT, 32_32_32_32_FLOAT, WZYX),
+ V__(R32G32B32A32_FIXED, 32_32_32_32_FIXED, WZYX),
+
+ /* compressed */
+ _T_(ETC1_RGB8, ETC1, WZYX),
+ _T_(ETC2_RGB8, ETC2_RGB8, WZYX),
+ _T_(ETC2_SRGB8, ETC2_RGB8, WZYX),
+ _T_(ETC2_RGB8A1, ETC2_RGB8A1, WZYX),
+ _T_(ETC2_SRGB8A1, ETC2_RGB8A1, WZYX),
+ _T_(ETC2_RGBA8, ETC2_RGBA8, WZYX),
+ _T_(ETC2_SRGBA8, ETC2_RGBA8, WZYX),
+ _T_(ETC2_R11_UNORM, ETC2_R11_UNORM, WZYX),
+ _T_(ETC2_R11_SNORM, ETC2_R11_SNORM, WZYX),
+ _T_(ETC2_RG11_UNORM, ETC2_RG11_UNORM, WZYX),
+ _T_(ETC2_RG11_SNORM, ETC2_RG11_SNORM, WZYX),
+
+ _T_(DXT1_RGB, DXT1, WZYX),
+ _T_(DXT1_SRGB, DXT1, WZYX),
+ _T_(DXT1_RGBA, DXT1, WZYX),
+ _T_(DXT1_SRGBA, DXT1, WZYX),
+ _T_(DXT3_RGBA, DXT3, WZYX),
+ _T_(DXT3_SRGBA, DXT3, WZYX),
+ _T_(DXT5_RGBA, DXT5, WZYX),
+ _T_(DXT5_SRGBA, DXT5, WZYX),
+
+ _T_(BPTC_RGBA_UNORM, BPTC, WZYX),
+ _T_(BPTC_SRGBA, BPTC, WZYX),
+ _T_(BPTC_RGB_FLOAT, BPTC_FLOAT, WZYX),
+ _T_(BPTC_RGB_UFLOAT, BPTC_UFLOAT, WZYX),
+
+ _T_(RGTC1_UNORM, RGTC1_UNORM, WZYX),
+ _T_(RGTC1_SNORM, RGTC1_SNORM, WZYX),
+ _T_(RGTC2_UNORM, RGTC2_UNORM, WZYX),
+ _T_(RGTC2_SNORM, RGTC2_SNORM, WZYX),
+ _T_(LATC1_UNORM, RGTC1_UNORM, WZYX),
+ _T_(LATC1_SNORM, RGTC1_SNORM, WZYX),
+ _T_(LATC2_UNORM, RGTC2_UNORM, WZYX),
+ _T_(LATC2_SNORM, RGTC2_SNORM, WZYX),
+
+ _T_(ASTC_4x4, ASTC_4x4, WZYX),
+ _T_(ASTC_5x4, ASTC_5x4, WZYX),
+ _T_(ASTC_5x5, ASTC_5x5, WZYX),
+ _T_(ASTC_6x5, ASTC_6x5, WZYX),
+ _T_(ASTC_6x6, ASTC_6x6, WZYX),
+ _T_(ASTC_8x5, ASTC_8x5, WZYX),
+ _T_(ASTC_8x6, ASTC_8x6, WZYX),
+ _T_(ASTC_8x8, ASTC_8x8, WZYX),
+ _T_(ASTC_10x5, ASTC_10x5, WZYX),
+ _T_(ASTC_10x6, ASTC_10x6, WZYX),
+ _T_(ASTC_10x8, ASTC_10x8, WZYX),
+ _T_(ASTC_10x10, ASTC_10x10, WZYX),
+ _T_(ASTC_12x10, ASTC_12x10, WZYX),
+ _T_(ASTC_12x12, ASTC_12x12, WZYX),
+
+ _T_(ASTC_4x4_SRGB, ASTC_4x4, WZYX),
+ _T_(ASTC_5x4_SRGB, ASTC_5x4, WZYX),
+ _T_(ASTC_5x5_SRGB, ASTC_5x5, WZYX),
+ _T_(ASTC_6x5_SRGB, ASTC_6x5, WZYX),
+ _T_(ASTC_6x6_SRGB, ASTC_6x6, WZYX),
+ _T_(ASTC_8x5_SRGB, ASTC_8x5, WZYX),
+ _T_(ASTC_8x6_SRGB, ASTC_8x6, WZYX),
+ _T_(ASTC_8x8_SRGB, ASTC_8x8, WZYX),
+ _T_(ASTC_10x5_SRGB, ASTC_10x5, WZYX),
+ _T_(ASTC_10x6_SRGB, ASTC_10x6, WZYX),
+ _T_(ASTC_10x8_SRGB, ASTC_10x8, WZYX),
+ _T_(ASTC_10x10_SRGB, ASTC_10x10, WZYX),
+ _T_(ASTC_12x10_SRGB, ASTC_12x10, WZYX),
+ _T_(ASTC_12x12_SRGB, ASTC_12x12, WZYX),
+
+ _T_(R8_G8B8_420_UNORM, R8_G8B8_2PLANE_420_UNORM, WZYX),
+};
+/* clang-format on */
+
+/* convert pipe format to vertex buffer format: */
+enum a6xx_format
+fd6_pipe2vtx(enum pipe_format format)
+{
+ if (!formats[format].present)
+ return FMT6_NONE;
+ return formats[format].vtx;
+}
+
+/* convert pipe format to texture sampler format: */
+enum a6xx_format
+fd6_pipe2tex(enum pipe_format format)
+{
+ if (!formats[format].present)
+ return FMT6_NONE;
+ return formats[format].tex;
+}
+
+/* convert pipe format to MRT / copydest format used for render-target: */
+enum a6xx_format
+fd6_pipe2color(enum pipe_format format)
+{
+ if (!formats[format].present)
+ return FMT6_NONE;
+ return formats[format].rb;
+}
+
+enum a3xx_color_swap
+fd6_pipe2swap(enum pipe_format format)
+{
+ if (!formats[format].present)
+ return WZYX;
+ return formats[format].swap;
+}
+
+enum a6xx_depth_format
+fd6_pipe2depth(enum pipe_format format)
+{
+ switch (format) {
+ case PIPE_FORMAT_Z16_UNORM:
+ return DEPTH6_16;
+ case PIPE_FORMAT_Z24X8_UNORM:
+ case PIPE_FORMAT_Z24_UNORM_S8_UINT:
+ case PIPE_FORMAT_X8Z24_UNORM:
+ case PIPE_FORMAT_S8_UINT_Z24_UNORM:
+ return DEPTH6_24_8;
+ case PIPE_FORMAT_Z32_FLOAT:
+ case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
+ return DEPTH6_32;
+ default:
+ return ~0;
+ }
+}
diff --git a/src/freedreno/fdl/fd6_format_table.h b/src/freedreno/fdl/fd6_format_table.h
new file mode 100644
index 00000000000..c618d7718a4
--- /dev/null
+++ b/src/freedreno/fdl/fd6_format_table.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2016 Rob Clark <robclark at freedesktop.org>
+ * Copyright © 2018 Google, Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Authors:
+ * Rob Clark <robclark at freedesktop.org>
+ */
+
+#ifndef FD6_FORMAT_TABLE_H
+#define FD6_FORMAT_TABLE_H
+
+#include "util/format/u_format.h"
+#include "util/u_math.h"
+
+#include "adreno_pm4.xml.h"
+#include "adreno_common.xml.h"
+#include "a6xx.xml.h"
+
+enum a6xx_format fd6_pipe2vtx(enum pipe_format format);
+enum a6xx_format fd6_pipe2tex(enum pipe_format format);
+enum a6xx_format fd6_pipe2color(enum pipe_format format);
+enum a3xx_color_swap fd6_pipe2swap(enum pipe_format format);
+enum a6xx_depth_format fd6_pipe2depth(enum pipe_format format);
+
+#endif /* FD6_FORMAT_TABLE_H */
diff --git a/src/freedreno/fdl/meson.build b/src/freedreno/fdl/meson.build
index 83becbbb33d..bc6c3322b23 100644
--- a/src/freedreno/fdl/meson.build
+++ b/src/freedreno/fdl/meson.build
@@ -22,8 +22,10 @@ libfreedreno_layout = static_library(
'freedreno_layout',
[
'fd5_layout.c',
+ 'fd6_format_table.c',
'fd6_layout.c',
'freedreno_layout.c',
+ freedreno_xml_header_files,
],
include_directories : [inc_freedreno, inc_include, inc_src, inc_mapi, inc_mesa, inc_gallium, inc_gallium_aux],
c_args : [no_override_init_args],
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_format.c b/src/gallium/drivers/freedreno/a6xx/fd6_format.c
index aaa521c46c8..42a7189e2bb 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_format.c
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_format.c
@@ -31,364 +31,6 @@
#include "fd6_format.h"
#include "freedreno_resource.h"
-/* Specifies the table of all the formats and their features. Also supplies
- * the helpers that look up various data in those tables.
- */
-
-struct fd6_format {
- enum a6xx_format vtx;
- enum a6xx_format tex;
- enum a6xx_format rb;
- enum a3xx_color_swap swap;
- boolean present;
-};
-
-#define FMT(pipe, vtxfmt, texfmt, rbfmt, swapfmt) \
- [PIPE_FORMAT_##pipe] = {.present = 1, \
- .vtx = FMT6_##vtxfmt, \
- .tex = FMT6_##texfmt, \
- .rb = FMT6_##rbfmt, \
- .swap = swapfmt}
-
-/* vertex + texture + color */
-#define VTC(pipe, fmt, swapfmt) FMT(pipe, fmt, fmt, fmt, swapfmt)
-
-#define _TC(pipe, fmt, swapfmt) FMT(pipe, NONE, fmt, fmt, swapfmt)
-#define _T_(pipe, fmt, swapfmt) FMT(pipe, NONE, fmt, NONE, swapfmt)
-#define VT_(pipe, fmt, swapfmt) FMT(pipe, fmt, fmt, NONE, swapfmt)
-#define V__(pipe, fmt, swapfmt) FMT(pipe, fmt, NONE, NONE, swapfmt)
-
-/* clang-format off */
-static struct fd6_format formats[PIPE_FORMAT_COUNT] = {
- /* 8-bit */
- VTC(R8_UNORM, 8_UNORM, WZYX),
- VTC(R8_SNORM, 8_SNORM, WZYX),
- VTC(R8_UINT, 8_UINT, WZYX),
- VTC(R8_SINT, 8_SINT, WZYX),
- V__(R8_USCALED, 8_UINT, WZYX),
- V__(R8_SSCALED, 8_SINT, WZYX),
-
- FMT(A8_UNORM, NONE, 8_UNORM, A8_UNORM, WZYX),
- _TC(L8_UNORM, 8_UNORM, WZYX),
- _T_(I8_UNORM, 8_UNORM, WZYX),
-
- _T_(A8_UINT, 8_UINT, WZYX),
- _T_(A8_SINT, 8_SINT, WZYX),
- _T_(L8_UINT, 8_UINT, WZYX),
- _T_(L8_SINT, 8_SINT, WZYX),
- _T_(I8_UINT, 8_UINT, WZYX),
- _T_(I8_SINT, 8_SINT, WZYX),
-
- _TC(S8_UINT, 8_UINT, WZYX),
-
- /* 16-bit */
- VTC(R16_UNORM, 16_UNORM, WZYX),
- VTC(R16_SNORM, 16_SNORM, WZYX),
- VTC(R16_UINT, 16_UINT, WZYX),
- VTC(R16_SINT, 16_SINT, WZYX),
- V__(R16_USCALED, 16_UINT, WZYX),
- V__(R16_SSCALED, 16_SINT, WZYX),
- VTC(R16_FLOAT, 16_FLOAT, WZYX),
- _TC(Z16_UNORM, 16_UNORM, WZYX),
-
- _T_(A16_UNORM, 16_UNORM, WZYX),
- _T_(A16_SNORM, 16_SNORM, WZYX),
- _T_(A16_UINT, 16_UINT, WZYX),
- _T_(A16_SINT, 16_SINT, WZYX),
- _T_(L16_UNORM, 16_UNORM, WZYX),
- _T_(L16_SNORM, 16_SNORM, WZYX),
- _T_(L16_UINT, 16_UINT, WZYX),
- _T_(L16_SINT, 16_SINT, WZYX),
- _T_(I16_UNORM, 16_UNORM, WZYX),
- _T_(I16_SNORM, 16_SNORM, WZYX),
- _T_(I16_UINT, 16_UINT, WZYX),
- _T_(I16_SINT, 16_SINT, WZYX),
-
- VTC(R8G8_UNORM, 8_8_UNORM, WZYX),
- VTC(R8G8_SNORM, 8_8_SNORM, WZYX),
- VTC(R8G8_UINT, 8_8_UINT, WZYX),
- VTC(R8G8_SINT, 8_8_SINT, WZYX),
- V__(R8G8_USCALED, 8_8_UINT, WZYX),
- V__(R8G8_SSCALED, 8_8_SINT, WZYX),
-
- _T_(L8A8_UINT, 8_8_UINT, WZYX),
- _T_(L8A8_SINT, 8_8_SINT, WZYX),
-
- _TC(B5G6R5_UNORM, 5_6_5_UNORM, WXYZ),
- _TC(B5G5R5A1_UNORM, 5_5_5_1_UNORM, WXYZ),
- _TC(B5G5R5X1_UNORM, 5_5_5_1_UNORM, WXYZ),
- _TC(B4G4R4A4_UNORM, 4_4_4_4_UNORM, WXYZ),
-
- /* 24-bit */
- V__(R8G8B8_UNORM, 8_8_8_UNORM, WZYX),
- V__(R8G8B8_SNORM, 8_8_8_SNORM, WZYX),
- V__(R8G8B8_UINT, 8_8_8_UINT, WZYX),
- V__(R8G8B8_SINT, 8_8_8_SINT, WZYX),
- V__(R8G8B8_USCALED, 8_8_8_UINT, WZYX),
- V__(R8G8B8_SSCALED, 8_8_8_SINT, WZYX),
-
- /* 32-bit */
- V__(R32_UNORM, 32_UNORM, WZYX),
- V__(R32_SNORM, 32_SNORM, WZYX),
- VTC(R32_UINT, 32_UINT, WZYX),
- VTC(R32_SINT, 32_SINT, WZYX),
- V__(R32_USCALED, 32_UINT, WZYX),
- V__(R32_SSCALED, 32_SINT, WZYX),
- VTC(R32_FLOAT, 32_FLOAT, WZYX),
- V__(R32_FIXED, 32_FIXED, WZYX),
-
- _T_(A32_UINT, 32_UINT, WZYX),
- _T_(A32_SINT, 32_SINT, WZYX),
- _T_(L32_UINT, 32_UINT, WZYX),
- _T_(L32_SINT, 32_SINT, WZYX),
- _T_(I32_UINT, 32_UINT, WZYX),
- _T_(I32_SINT, 32_SINT, WZYX),
-
- VTC(R16G16_UNORM, 16_16_UNORM, WZYX),
- VTC(R16G16_SNORM, 16_16_SNORM, WZYX),
- VTC(R16G16_UINT, 16_16_UINT, WZYX),
- VTC(R16G16_SINT, 16_16_SINT, WZYX),
- VT_(R16G16_USCALED, 16_16_UINT, WZYX),
- VT_(R16G16_SSCALED, 16_16_SINT, WZYX),
- VTC(R16G16_FLOAT, 16_16_FLOAT, WZYX),
-
- _T_(L16A16_UNORM, 16_16_UNORM, WZYX),
- _T_(L16A16_SNORM, 16_16_SNORM, WZYX),
- _T_(L16A16_UINT, 16_16_UINT, WZYX),
- _T_(L16A16_SINT, 16_16_SINT, WZYX),
-
- VTC(R8G8B8A8_UNORM, 8_8_8_8_UNORM, WZYX),
- _TC(R8G8B8X8_UNORM, 8_8_8_8_UNORM, WZYX),
- _TC(R8G8B8A8_SRGB, 8_8_8_8_UNORM, WZYX),
- _TC(R8G8B8X8_SRGB, 8_8_8_8_UNORM, WZYX),
- VTC(R8G8B8A8_SNORM, 8_8_8_8_SNORM, WZYX),
- VTC(R8G8B8A8_UINT, 8_8_8_8_UINT, WZYX),
- VTC(R8G8B8A8_SINT, 8_8_8_8_SINT, WZYX),
- V__(R8G8B8A8_USCALED, 8_8_8_8_UINT, WZYX),
- V__(R8G8B8A8_SSCALED, 8_8_8_8_SINT, WZYX),
-
- VTC(B8G8R8A8_UNORM, 8_8_8_8_UNORM, WXYZ),
- _TC(B8G8R8X8_UNORM, 8_8_8_8_UNORM, WXYZ),
- VTC(B8G8R8A8_SRGB, 8_8_8_8_UNORM, WXYZ),
- _TC(B8G8R8X8_SRGB, 8_8_8_8_UNORM, WXYZ),
-
- VTC(A8B8G8R8_UNORM, 8_8_8_8_UNORM, XYZW),
- _TC(X8B8G8R8_UNORM, 8_8_8_8_UNORM, XYZW),
- _TC(A8B8G8R8_SRGB, 8_8_8_8_UNORM, XYZW),
- _TC(X8B8G8R8_SRGB, 8_8_8_8_UNORM, XYZW),
-
- VTC(A8R8G8B8_UNORM, 8_8_8_8_UNORM, ZYXW),
- _TC(X8R8G8B8_UNORM, 8_8_8_8_UNORM, ZYXW),
- _TC(A8R8G8B8_SRGB, 8_8_8_8_UNORM, ZYXW),
- _TC(X8R8G8B8_SRGB, 8_8_8_8_UNORM, ZYXW),
-
- FMT(R10G10B10A2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM_DEST, WZYX),
- FMT(B10G10R10A2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM, 10_10_10_2_UNORM_DEST, WXYZ),
- FMT(B10G10R10X2_UNORM, NONE, 10_10_10_2_UNORM, 10_10_10_2_UNORM_DEST, WXYZ),
- V__(R10G10B10A2_SNORM, 10_10_10_2_SNORM, WZYX),
- V__(B10G10R10A2_SNORM, 10_10_10_2_SNORM, WXYZ),
- VTC(R10G10B10A2_UINT, 10_10_10_2_UINT, WZYX),
- VTC(B10G10R10A2_UINT, 10_10_10_2_UINT, WXYZ),
- V__(R10G10B10A2_USCALED, 10_10_10_2_UINT, WZYX),
- V__(B10G10R10A2_USCALED, 10_10_10_2_UINT, WXYZ),
- V__(R10G10B10A2_SSCALED, 10_10_10_2_SINT, WZYX),
- V__(B10G10R10A2_SSCALED, 10_10_10_2_SINT, WXYZ),
-
- VTC(R11G11B10_FLOAT, 11_11_10_FLOAT, WZYX),
- _T_(R9G9B9E5_FLOAT, 9_9_9_E5_FLOAT, WZYX),
-
- _TC(Z24X8_UNORM, Z24_UNORM_S8_UINT, WZYX),
- _TC(X24S8_UINT, 8_8_8_8_UINT, WZYX),
- _TC(Z24_UNORM_S8_UINT, Z24_UNORM_S8_UINT, WZYX),
- _TC(Z32_FLOAT, 32_FLOAT, WZYX),
- _TC(Z32_FLOAT_S8X24_UINT, 32_FLOAT, WZYX),
- _TC(X32_S8X24_UINT, 8_UINT, WZYX),
-
- /* special format for blits: */
- _TC(Z24_UNORM_S8_UINT_AS_R8G8B8A8, Z24_UNORM_S8_UINT_AS_R8G8B8A8, WZYX),
-
- /* 48-bit */
- V__(R16G16B16_UNORM, 16_16_16_UNORM, WZYX),
- V__(R16G16B16_SNORM, 16_16_16_SNORM, WZYX),
- V__(R16G16B16_UINT, 16_16_16_UINT, WZYX),
- V__(R16G16B16_SINT, 16_16_16_SINT, WZYX),
- V__(R16G16B16_USCALED, 16_16_16_UINT, WZYX),
- V__(R16G16B16_SSCALED, 16_16_16_SINT, WZYX),
- V__(R16G16B16_FLOAT, 16_16_16_FLOAT, WZYX),
-
- /* 64-bit */
- VTC(R16G16B16A16_UNORM, 16_16_16_16_UNORM, WZYX),
- VTC(R16G16B16X16_UNORM, 16_16_16_16_UNORM, WZYX),
- VTC(R16G16B16A16_SNORM, 16_16_16_16_SNORM, WZYX),
- VTC(R16G16B16X16_SNORM, 16_16_16_16_SNORM, WZYX),
- VTC(R16G16B16A16_UINT, 16_16_16_16_UINT, WZYX),
- VTC(R16G16B16X16_UINT, 16_16_16_16_UINT, WZYX),
- VTC(R16G16B16A16_SINT, 16_16_16_16_SINT, WZYX),
- VTC(R16G16B16X16_SINT, 16_16_16_16_SINT, WZYX),
- VT_(R16G16B16A16_USCALED, 16_16_16_16_UINT, WZYX),
- VT_(R16G16B16A16_SSCALED, 16_16_16_16_SINT, WZYX),
- VTC(R16G16B16A16_FLOAT, 16_16_16_16_FLOAT, WZYX),
- VTC(R16G16B16X16_FLOAT, 16_16_16_16_FLOAT, WZYX),
-
- V__(R32G32_UNORM, 32_32_UNORM, WZYX),
- V__(R32G32_SNORM, 32_32_SNORM, WZYX),
- VTC(R32G32_UINT, 32_32_UINT, WZYX),
- VTC(R32G32_SINT, 32_32_SINT, WZYX),
- V__(R32G32_USCALED, 32_32_UINT, WZYX),
- V__(R32G32_SSCALED, 32_32_SINT, WZYX),
- VTC(R32G32_FLOAT, 32_32_FLOAT, WZYX),
- V__(R32G32_FIXED, 32_32_FIXED, WZYX),
-
- _T_(L32A32_UINT, 32_32_UINT, WZYX),
- _T_(L32A32_SINT, 32_32_SINT, WZYX),
-
- /* 96-bit */
- V__(R32G32B32_UNORM, 32_32_32_UNORM, WZYX),
- V__(R32G32B32_SNORM, 32_32_32_SNORM, WZYX),
- VT_(R32G32B32_UINT, 32_32_32_UINT, WZYX),
- VT_(R32G32B32_SINT, 32_32_32_SINT, WZYX),
- V__(R32G32B32_USCALED, 32_32_32_UINT, WZYX),
- V__(R32G32B32_SSCALED, 32_32_32_SINT, WZYX),
- VT_(R32G32B32_FLOAT, 32_32_32_FLOAT, WZYX),
- V__(R32G32B32_FIXED, 32_32_32_FIXED, WZYX),
-
- /* 128-bit */
- V__(R32G32B32A32_UNORM, 32_32_32_32_UNORM, WZYX),
- V__(R32G32B32A32_SNORM, 32_32_32_32_SNORM, WZYX),
- VTC(R32G32B32A32_UINT, 32_32_32_32_UINT, WZYX),
- _TC(R32G32B32X32_UINT, 32_32_32_32_UINT, WZYX),
- VTC(R32G32B32A32_SINT, 32_32_32_32_SINT, WZYX),
- _TC(R32G32B32X32_SINT, 32_32_32_32_SINT, WZYX),
- V__(R32G32B32A32_USCALED, 32_32_32_32_UINT, WZYX),
- V__(R32G32B32A32_SSCALED, 32_32_32_32_SINT, WZYX),
- VTC(R32G32B32A32_FLOAT, 32_32_32_32_FLOAT, WZYX),
- _TC(R32G32B32X32_FLOAT, 32_32_32_32_FLOAT, WZYX),
- V__(R32G32B32A32_FIXED, 32_32_32_32_FIXED, WZYX),
-
- /* compressed */
- _T_(ETC1_RGB8, ETC1, WZYX),
- _T_(ETC2_RGB8, ETC2_RGB8, WZYX),
- _T_(ETC2_SRGB8, ETC2_RGB8, WZYX),
- _T_(ETC2_RGB8A1, ETC2_RGB8A1, WZYX),
- _T_(ETC2_SRGB8A1, ETC2_RGB8A1, WZYX),
- _T_(ETC2_RGBA8, ETC2_RGBA8, WZYX),
- _T_(ETC2_SRGBA8, ETC2_RGBA8, WZYX),
- _T_(ETC2_R11_UNORM, ETC2_R11_UNORM, WZYX),
- _T_(ETC2_R11_SNORM, ETC2_R11_SNORM, WZYX),
- _T_(ETC2_RG11_UNORM, ETC2_RG11_UNORM, WZYX),
- _T_(ETC2_RG11_SNORM, ETC2_RG11_SNORM, WZYX),
-
- _T_(DXT1_RGB, DXT1, WZYX),
- _T_(DXT1_SRGB, DXT1, WZYX),
- _T_(DXT1_RGBA, DXT1, WZYX),
- _T_(DXT1_SRGBA, DXT1, WZYX),
- _T_(DXT3_RGBA, DXT3, WZYX),
- _T_(DXT3_SRGBA, DXT3, WZYX),
- _T_(DXT5_RGBA, DXT5, WZYX),
- _T_(DXT5_SRGBA, DXT5, WZYX),
-
- _T_(BPTC_RGBA_UNORM, BPTC, WZYX),
- _T_(BPTC_SRGBA, BPTC, WZYX),
- _T_(BPTC_RGB_FLOAT, BPTC_FLOAT, WZYX),
- _T_(BPTC_RGB_UFLOAT, BPTC_UFLOAT, WZYX),
-
- _T_(RGTC1_UNORM, RGTC1_UNORM, WZYX),
- _T_(RGTC1_SNORM, RGTC1_SNORM, WZYX),
- _T_(RGTC2_UNORM, RGTC2_UNORM, WZYX),
- _T_(RGTC2_SNORM, RGTC2_SNORM, WZYX),
- _T_(LATC1_UNORM, RGTC1_UNORM, WZYX),
- _T_(LATC1_SNORM, RGTC1_SNORM, WZYX),
- _T_(LATC2_UNORM, RGTC2_UNORM, WZYX),
- _T_(LATC2_SNORM, RGTC2_SNORM, WZYX),
-
- _T_(ASTC_4x4, ASTC_4x4, WZYX),
- _T_(ASTC_5x4, ASTC_5x4, WZYX),
- _T_(ASTC_5x5, ASTC_5x5, WZYX),
- _T_(ASTC_6x5, ASTC_6x5, WZYX),
- _T_(ASTC_6x6, ASTC_6x6, WZYX),
- _T_(ASTC_8x5, ASTC_8x5, WZYX),
- _T_(ASTC_8x6, ASTC_8x6, WZYX),
- _T_(ASTC_8x8, ASTC_8x8, WZYX),
- _T_(ASTC_10x5, ASTC_10x5, WZYX),
- _T_(ASTC_10x6, ASTC_10x6, WZYX),
- _T_(ASTC_10x8, ASTC_10x8, WZYX),
- _T_(ASTC_10x10, ASTC_10x10, WZYX),
- _T_(ASTC_12x10, ASTC_12x10, WZYX),
- _T_(ASTC_12x12, ASTC_12x12, WZYX),
-
- _T_(ASTC_4x4_SRGB, ASTC_4x4, WZYX),
- _T_(ASTC_5x4_SRGB, ASTC_5x4, WZYX),
- _T_(ASTC_5x5_SRGB, ASTC_5x5, WZYX),
- _T_(ASTC_6x5_SRGB, ASTC_6x5, WZYX),
- _T_(ASTC_6x6_SRGB, ASTC_6x6, WZYX),
- _T_(ASTC_8x5_SRGB, ASTC_8x5, WZYX),
- _T_(ASTC_8x6_SRGB, ASTC_8x6, WZYX),
- _T_(ASTC_8x8_SRGB, ASTC_8x8, WZYX),
- _T_(ASTC_10x5_SRGB, ASTC_10x5, WZYX),
- _T_(ASTC_10x6_SRGB, ASTC_10x6, WZYX),
- _T_(ASTC_10x8_SRGB, ASTC_10x8, WZYX),
- _T_(ASTC_10x10_SRGB, ASTC_10x10, WZYX),
- _T_(ASTC_12x10_SRGB, ASTC_12x10, WZYX),
- _T_(ASTC_12x12_SRGB, ASTC_12x12, WZYX),
-
- _T_(R8_G8B8_420_UNORM, R8_G8B8_2PLANE_420_UNORM, WZYX),
-};
-/* clang-format on */
-
-/* convert pipe format to vertex buffer format: */
-enum a6xx_format
-fd6_pipe2vtx(enum pipe_format format)
-{
- if (!formats[format].present)
- return FMT6_NONE;
- return formats[format].vtx;
-}
-
-/* convert pipe format to texture sampler format: */
-enum a6xx_format
-fd6_pipe2tex(enum pipe_format format)
-{
- if (!formats[format].present)
- return FMT6_NONE;
- return formats[format].tex;
-}
-
-/* convert pipe format to MRT / copydest format used for render-target: */
-enum a6xx_format
-fd6_pipe2color(enum pipe_format format)
-{
- if (!formats[format].present)
- return FMT6_NONE;
- return formats[format].rb;
-}
-
-enum a3xx_color_swap
-fd6_pipe2swap(enum pipe_format format)
-{
- if (!formats[format].present)
- return WZYX;
- return formats[format].swap;
-}
-
-enum a6xx_depth_format
-fd6_pipe2depth(enum pipe_format format)
-{
- switch (format) {
- case PIPE_FORMAT_Z16_UNORM:
- return DEPTH6_16;
- case PIPE_FORMAT_Z24X8_UNORM:
- case PIPE_FORMAT_Z24_UNORM_S8_UINT:
- case PIPE_FORMAT_X8Z24_UNORM:
- case PIPE_FORMAT_S8_UINT_Z24_UNORM:
- return DEPTH6_24_8;
- case PIPE_FORMAT_Z32_FLOAT:
- case PIPE_FORMAT_Z32_FLOAT_S8X24_UINT:
- return DEPTH6_32;
- default:
- return ~0;
- }
-}
-
enum a6xx_tex_swiz
fd6_pipe2swiz(unsigned swiz)
{
diff --git a/src/gallium/drivers/freedreno/a6xx/fd6_format.h b/src/gallium/drivers/freedreno/a6xx/fd6_format.h
index b9e2f55486e..9c9e8514970 100644
--- a/src/gallium/drivers/freedreno/a6xx/fd6_format.h
+++ b/src/gallium/drivers/freedreno/a6xx/fd6_format.h
@@ -28,16 +28,12 @@
#ifndef FD6_UTIL_H_
#define FD6_UTIL_H_
+#include "fdl/fd6_format_table.h"
#include "freedreno_resource.h"
#include "freedreno_util.h"
#include "a6xx.xml.h"
-enum a6xx_format fd6_pipe2vtx(enum pipe_format format);
-enum a6xx_format fd6_pipe2tex(enum pipe_format format);
-enum a6xx_format fd6_pipe2color(enum pipe_format format);
-enum a3xx_color_swap fd6_pipe2swap(enum pipe_format format);
-enum a6xx_depth_format fd6_pipe2depth(enum pipe_format format);
enum a6xx_tex_swiz fd6_pipe2swiz(unsigned swiz);
void fd6_tex_swiz(enum pipe_format format, unsigned char *swiz,
More information about the mesa-commit
mailing list