gallium/indices: introduce u_primconvert_config
authorErik Faye-Lund <erik.faye-lund@collabora.com>
Mon, 22 Jun 2020 13:05:17 +0000 (15:05 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 18 Aug 2020 12:12:27 +0000 (12:12 +0000)
This struct allows us to pass the configuration as a struct, which can
more easily be extended to take more arguemnts as long as we're careful
about zero-initialization.

We keep the old create-function, but implement it as a wrapper on top so
we don't have to update all existing call-sites right now.

Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5976>

src/gallium/auxiliary/indices/u_primconvert.c
src/gallium/auxiliary/indices/u_primconvert.h

index 778f174e39c39d7edcf42e1ec0fd034cf6a95bb4..5b3c66a838cfc98d0a5690cd3c1b9fe662b86224 100644 (file)
 struct primconvert_context
 {
    struct pipe_context *pipe;
-   uint32_t primtypes_mask;
+   struct primconvert_config cfg;
    unsigned api_pv;
 };
 
 
 struct primconvert_context *
-util_primconvert_create(struct pipe_context *pipe, uint32_t primtypes_mask)
+util_primconvert_create_config(struct pipe_context *pipe,
+                               struct primconvert_config *cfg)
 {
    struct primconvert_context *pc = CALLOC_STRUCT(primconvert_context);
    if (!pc)
       return NULL;
    pc->pipe = pipe;
-   pc->primtypes_mask = primtypes_mask;
+   pc->cfg = *cfg;
    return pc;
 }
 
+struct primconvert_context *
+util_primconvert_create(struct pipe_context *pipe, uint32_t primtypes_mask)
+{
+   struct primconvert_config cfg = { .primtypes_mask = primtypes_mask };
+   return util_primconvert_create_config(pipe, &cfg);
+}
+
 void
 util_primconvert_destroy(struct primconvert_context *pc)
 {
@@ -110,7 +118,7 @@ util_primconvert_draw_vbo(struct primconvert_context *pc,
       enum pipe_prim_type mode = 0;
       unsigned index_size;
 
-      u_index_translator(pc->primtypes_mask,
+      u_index_translator(pc->cfg.primtypes_mask,
                          info->mode, info->index_size, info->count,
                          pc->api_pv, pc->api_pv,
                          info->primitive_restart ? PR_ENABLE : PR_DISABLE,
@@ -129,7 +137,7 @@ util_primconvert_draw_vbo(struct primconvert_context *pc,
       enum pipe_prim_type mode = 0;
       unsigned index_size;
 
-      u_index_generator(pc->primtypes_mask,
+      u_index_generator(pc->cfg.primtypes_mask,
                         info->mode, info->start, info->count,
                         pc->api_pv, pc->api_pv,
                         &mode, &index_size, &new_info.count,
index 02ee0639dfb69128a59f08660b2997069a3d7eea..dfec9f975cb03881c687a93e112db5cb0d8385e2 100644 (file)
 
 struct primconvert_context;
 
+struct primconvert_config {
+   uint32_t primtypes_mask;
+};
+
 struct primconvert_context *util_primconvert_create(struct pipe_context *pipe,
                                                     uint32_t primtypes_mask);
+struct primconvert_context *util_primconvert_create_config(struct pipe_context *pipe,
+                                                           struct primconvert_config *cfg);
+
 void util_primconvert_destroy(struct primconvert_context *pc);
 void util_primconvert_save_rasterizer_state(struct primconvert_context *pc,
                                             const struct pipe_rasterizer_state