gallium: add multi-component 64-bit UINT formats for raw double vertex attribs
authorMarek Olšák <marek.olsak@amd.com>
Mon, 14 Jun 2021 23:51:11 +0000 (19:51 -0400)
committerMarge Bot <eric+marge@anholt.net>
Mon, 2 Aug 2021 19:58:28 +0000 (19:58 +0000)
This is the distinction between formats:
- PIPE_FORMAT_R64_FLOAT is the legacy "convert-to-float" vertex format.
- PIPE_FORMAT_R64_UINT is the raw double format.

Reviewed-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11370>

src/gallium/include/pipe/p_format.h
src/util/format/u_format.csv

index f2d4be7..308cd8f 100644 (file)
@@ -41,7 +41,11 @@ extern "C" {
 enum pipe_format {
    PIPE_FORMAT_NONE,
    /* Vertex formats must be first and must be <= 255. */
-   PIPE_FORMAT_R64_FLOAT,
+   PIPE_FORMAT_R64_UINT,    /**< raw doubles (ARB_vertex_attrib_64bit) */
+   PIPE_FORMAT_R64G64_UINT,
+   PIPE_FORMAT_R64G64B64_UINT,
+   PIPE_FORMAT_R64G64B64A64_UINT,
+   PIPE_FORMAT_R64_FLOAT,   /**< doubles converted to float */
    PIPE_FORMAT_R64G64_FLOAT,
    PIPE_FORMAT_R64G64B64_FLOAT,
    PIPE_FORMAT_R64G64B64A64_FLOAT,
@@ -293,7 +297,6 @@ enum pipe_format {
    PIPE_FORMAT_R8A8_UNORM,
    PIPE_FORMAT_A8R8_UNORM,
 
-   PIPE_FORMAT_R64_UINT,
    PIPE_FORMAT_R64_SINT,
 
    PIPE_FORMAT_A8_UINT,
index d7cea46..58d56a6 100644 (file)
@@ -467,6 +467,10 @@ PIPE_FORMAT_R32G32B32_SINT          , plain, 1, 1, 1, sp32, sp32, sp32, , xyz1,
 PIPE_FORMAT_R32G32B32A32_SINT       , plain, 1, 1, 1, sp32, sp32, sp32, sp32, xyzw, rgb
 
 PIPE_FORMAT_R64_UINT                , plain, 1, 1, 1, up64, , , , x001, rgb
+PIPE_FORMAT_R64G64_UINT             , plain, 1, 1, 1, up64, up64, , , xy01, rgb
+PIPE_FORMAT_R64G64B64_UINT          , plain, 1, 1, 1, up64, up64, up64, , xyz1, rgb
+PIPE_FORMAT_R64G64B64A64_UINT       , plain, 1, 1, 1, up64, up64, up64, up64, xyzw, rgb
+
 PIPE_FORMAT_R64_SINT                , plain, 1, 1, 1, sp64, , , , x001, rgb
 
 PIPE_FORMAT_A8_UINT                 , plain, 1, 1, 1, up8, , , , 000x, rgb