This looks ok to me (though I hope uint16_t for stride isn't a problem). Although it doesn't save all that much...
Roland Am 11.04.2017 um 22:15 schrieb Marek Olšák: > From: Marek Olšák <marek.ol...@amd.com> > > New interface: > > union pipe_buffer_binding { > struct pipe_resource *buffer; /**< the actual buffer */ > const void *user_buffer; /**< pointer to a user buffer */ > }; > > struct pipe_vertex_buffer > { > uint16_t stride; /**< stride to same attrib in next vertex, in bytes */ > bool is_user_buffer; > unsigned buffer_offset; /**< offset to start of data in buffer, in bytes > */ > union pipe_buffer_binding u; > }; > --- > src/gallium/include/pipe/p_state.h | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/src/gallium/include/pipe/p_state.h > b/src/gallium/include/pipe/p_state.h > index ce9ca34..9576f18 100644 > --- a/src/gallium/include/pipe/p_state.h > +++ b/src/gallium/include/pipe/p_state.h > @@ -534,6 +534,11 @@ struct pipe_transfer > }; > > > +union pipe_buffer_binding { > + struct pipe_resource *buffer; /**< the actual buffer */ > + const void *user_buffer; /**< pointer to a user buffer */ > +}; > + > > /** > * A vertex buffer. Typically, all the vertex data/attributes for > @@ -542,10 +547,10 @@ struct pipe_transfer > */ > struct pipe_vertex_buffer > { > - unsigned stride; /**< stride to same attrib in next vertex, in bytes */ > + uint16_t stride; /**< stride to same attrib in next vertex, in bytes */ > + bool is_user_buffer; > unsigned buffer_offset; /**< offset to start of data in buffer, in bytes > */ > - struct pipe_resource *buffer; /**< the actual buffer */ > - const void *user_buffer; /**< pointer to a user buffer if buffer == NULL > */ > + union pipe_buffer_binding u; > }; > > > _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev