From a2f08dd574ad3da47b99bd1865b069f0b5b06c4c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mathias=20Fr=C3=B6hlich?= Date: Sat, 10 Mar 2018 16:01:31 +0100 Subject: [PATCH] gallium: Use struct gl_array_attributes* as st_pipe_vertex_format argument. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Brian Paul Reviewed-by: Eric Engestrom Signed-off-by: Mathias Fröhlich --- 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 68388a5674d..2567ad30df1 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 ff7a5d07467..2fd67e8d840 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 46a12848c0d..fa96b4e2e25 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 */ -- 2.30.2