The series looks good to me.

Reviewed-by: Brian Paul <[email protected]>

On 09/06/2018 08:31 AM, [email protected] wrote:
From: Mathias Fröhlich <[email protected]>

Introduce a new capability for the maximum value of
pipe_vertex_element::src_offset. Initially just every driver
backend returns the value previously set from _mesa_init_constants.
So this shall end up in no functional change.

Signed-off-by: Mathias Fröhlich <[email protected]>
---
  src/gallium/auxiliary/util/u_screen.c  | 3 +++
  src/gallium/docs/source/screen.rst     | 3 +++
  src/gallium/include/pipe/p_defines.h   | 1 +
  src/mesa/state_tracker/st_extensions.c | 6 ++++++
  4 files changed, 13 insertions(+)

diff --git a/src/gallium/auxiliary/util/u_screen.c 
b/src/gallium/auxiliary/util/u_screen.c
index c41e28820b..d97c3cf5d9 100644
--- a/src/gallium/auxiliary/util/u_screen.c
+++ b/src/gallium/auxiliary/util/u_screen.c
@@ -318,6 +318,9 @@ u_pipe_screen_get_param_defaults(struct pipe_screen 
*pscreen,
     case PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE:
        return 0;
+ case PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET:
+      return 2047;
+
     default:
        unreachable("bad PIPE_CAP_*");
     }
diff --git a/src/gallium/docs/source/screen.rst 
b/src/gallium/docs/source/screen.rst
index 93415a5df1..6e5d123107 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -466,6 +466,9 @@ subpixel precision bias in bits during conservative 
rasterization.
  * ``PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTER_BUFFERS``: Maximum total number of
    atomic counter buffers. A value of 0 means the sum of all per-shader stage
    maximums (see ``PIPE_SHADER_CAP_MAX_HW_ATOMIC_COUNTER_BUFFERS``).
+* ``PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET``: The maximum supported value for
+  of pipe_vertex_element::src_offset.
+
.. _pipe_capf: diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index bdd3f4680f..3a686c4cc3 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -821,6 +821,7 @@ enum pipe_cap
     PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS,
     PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTERS,
     PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTER_BUFFERS,
+   PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET,
  };
/**
diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index 244c12595e..43ef6a40f9 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -403,6 +403,12 @@ void st_init_limits(struct pipe_screen *screen,
     c->MaxVertexAttribStride
        = screen->get_param(screen, PIPE_CAP_MAX_VERTEX_ATTRIB_STRIDE);
+ /* The value cannot be larger than that since pipe_vertex_buffer::src_offset
+    * is only 16 bits.
+    */
+   temp = screen->get_param(screen, PIPE_CAP_MAX_VERTEX_ELEMENT_SRC_OFFSET);
+   c->MaxVertexAttribRelativeOffset = MIN2(0xffff, temp);
+
     c->StripTextureBorder = GL_TRUE;
c->GLSLSkipStrictMaxUniformLimitCheck =


_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to