gallium: move pipe_draw_info::start/count to the beginning and pad empty space
for memcmp and merging draw calls
Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7056>
diff --git a/src/gallium/include/pipe/p_state.h b/src/gallium/include/pipe/p_state.h
index 1d907bd..06f9565 100644
--- a/src/gallium/include/pipe/p_state.h
+++ b/src/gallium/include/pipe/p_state.h
@@ -726,12 +726,6 @@
*/
struct pipe_draw_info
{
- ubyte index_size; /**< if 0, the draw is not indexed. */
- enum pipe_prim_type mode:8; /**< the mode of the primitive */
- unsigned primitive_restart:1;
- unsigned has_user_indices:1; /**< if true, use index.user_buffer */
- ubyte vertices_per_patch; /**< the number of vertices per patch */
-
/**
* Direct draws: start is the index of the first vertex
* Non-indexed indirect draws: not used
@@ -740,6 +734,13 @@
unsigned start;
unsigned count; /**< number of vertices */
+ enum pipe_prim_type mode:8; /**< the mode of the primitive */
+ ubyte vertices_per_patch; /**< the number of vertices per patch */
+ ubyte index_size; /**< if 0, the draw is not indexed. */
+ bool primitive_restart:1;
+ bool has_user_indices:1; /**< if true, use index.user_buffer */
+ char _pad:6; /**< padding for memcmp */
+
unsigned start_instance; /**< first instance id */
unsigned instance_count; /**< number of instances */
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index 676db28..996d985 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -183,6 +183,7 @@
info.restart_index = 0;
info.start_instance = base_instance;
info.instance_count = num_instances;
+ info._pad = 0;
if (ib) {
struct gl_buffer_object *bufobj = ib->obj;