Mesa (master): gallium: Use struct gl_array_attributes* as st_pipe_vertex_format argument.

Mathias Fröhlich frohlich at kemper.freedesktop.org
Mon Mar 12 17:56:53 UTC 2018


Module: Mesa
Branch: master
Commit: a2f08dd574ad3da47b99bd1865b069f0b5b06c4c
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a2f08dd574ad3da47b99bd1865b069f0b5b06c4c

Author: Mathias Fröhlich <mathias.froehlich at web.de>
Date:   Sat Mar 10 16:01:31 2018 +0100

gallium: Use struct gl_array_attributes* as st_pipe_vertex_format argument.

Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Eric Engestrom <eric.engestrom at imgtec.com>
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich at web.de>

---

 src/mesa/state_tracker/st_atom.h          |  3 +--
 src/mesa/state_tracker/st_atom_array.c    | 25 +++++++++----------------
 src/mesa/state_tracker/st_draw_feedback.c |  7 +------
 3 files changed, 11 insertions(+), 24 deletions(-)

diff --git a/src/mesa/state_tracker/st_atom.h b/src/mesa/state_tracker/st_atom.h
index 68388a5674..2567ad30df 100644
--- a/src/mesa/state_tracker/st_atom.h
+++ b/src/mesa/state_tracker/st_atom.h
@@ -55,8 +55,7 @@ void st_validate_state( struct st_context *st, enum st_pipeline pipeline );
 GLuint st_compare_func_to_pipe(GLenum func);
 
 enum pipe_format
-st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
-                      GLboolean normalized, GLboolean integer);
+st_pipe_vertex_format(const struct gl_array_attributes *attrib);
 
 
 /* Define ST_NEW_xxx_INDEX */
diff --git a/src/mesa/state_tracker/st_atom_array.c b/src/mesa/state_tracker/st_atom_array.c
index ff7a5d0746..2fd67e8d84 100644
--- a/src/mesa/state_tracker/st_atom_array.c
+++ b/src/mesa/state_tracker/st_atom_array.c
@@ -237,13 +237,18 @@ static const uint16_t vertex_formats[][4][4] = {
  * Return a PIPE_FORMAT_x for the given GL datatype and size.
  */
 enum pipe_format
-st_pipe_vertex_format(GLenum type, GLuint size, GLenum format,
-                      GLboolean normalized, GLboolean integer)
+st_pipe_vertex_format(const struct gl_array_attributes *attrib)
 {
+   const GLubyte size = attrib->Size;
+   const GLenum16 format = attrib->Format;
+   const bool normalized = attrib->Normalized;
+   const bool integer = attrib->Integer;
+   GLenum16 type = attrib->Type;
    unsigned index;
 
    assert(size >= 1 && size <= 4);
    assert(format == GL_RGBA || format == GL_BGRA);
+   assert(attrib->_ElementSize == _mesa_bytes_per_vertex_attrib(size, type));
 
    switch (type) {
    case GL_HALF_FLOAT_OES:
@@ -532,14 +537,8 @@ setup_interleaved_attribs(struct st_context *st,
       ptr = _mesa_vertex_attrib_address(attrib, binding);
 
       src_offset = (unsigned) (ptr - low_addr);
-      assert(attrib->_ElementSize ==
-             _mesa_bytes_per_vertex_attrib(attrib->Size, attrib->Type));
 
-      src_format = st_pipe_vertex_format(attrib->Type,
-                                         attrib->Size,
-                                         attrib->Format,
-                                         attrib->Normalized,
-                                         attrib->Integer);
+      src_format = st_pipe_vertex_format(attrib);
 
       init_velement_lowered(vp, velements, src_offset, src_format,
                             binding->InstanceDivisor, 0,
@@ -623,8 +622,6 @@ setup_non_interleaved_attribs(struct st_context *st,
       attrib = array->VertexAttrib;
       stride = binding->Stride;
       bufobj = binding->BufferObj;
-      assert(attrib->_ElementSize ==
-             _mesa_bytes_per_vertex_attrib(attrib->Size, attrib->Type));
 
       if (_mesa_is_bufferobj(bufobj)) {
          /* Attribute data is in a VBO.
@@ -688,11 +685,7 @@ setup_non_interleaved_attribs(struct st_context *st,
       /* common-case setup */
       vbuffer[bufidx].stride = stride; /* in bytes */
 
-      src_format = st_pipe_vertex_format(attrib->Type,
-                                         attrib->Size,
-                                         attrib->Format,
-                                         attrib->Normalized,
-                                         attrib->Integer);
+      src_format = st_pipe_vertex_format(attrib);
 
       init_velement_lowered(vp, velements, 0, src_format,
                             binding->InstanceDivisor, bufidx,
diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c
index 46a12848c0..fa96b4e2e2 100644
--- a/src/mesa/state_tracker/st_draw_feedback.c
+++ b/src/mesa/state_tracker/st_draw_feedback.c
@@ -240,12 +240,7 @@ st_feedback_draw_vbo(struct gl_context *ctx,
       vbuffers[attr].stride = binding->Stride; /* in bytes */
       velements[attr].instance_divisor = 0;
       velements[attr].vertex_buffer_index = attr;
-      velements[attr].src_format =
-         st_pipe_vertex_format(attrib->Type,
-                               attrib->Size,
-                               attrib->Format,
-                               attrib->Normalized,
-                               attrib->Integer);
+      velements[attr].src_format = st_pipe_vertex_format(attrib);
       assert(velements[attr].src_format);
 
       /* tell draw about this attribute */




More information about the mesa-commit mailing list