panfrost: Use opaque pack for vertex shaders
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 21 Aug 2020 22:06:24 +0000 (18:06 -0400)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Tue, 25 Aug 2020 15:05:39 +0000 (17:05 +0200)
Not much difference but eliminates a reference to shader_meta (and
avoids a memcpy but who cares).

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6440>

src/gallium/drivers/panfrost/pan_assemble.c

index 236acd77046569e3e79298d9815abd843c91e27a..b231fc8e0033b24d72c527aa26ad4a64665cf299 100644 (file)
@@ -104,17 +104,20 @@ pan_upload_shader_descriptor(struct panfrost_context *ctx,
                         struct panfrost_shader_state *state)
 {
         const struct panfrost_device *dev = pan_device(ctx->base.screen);
-        struct mali_shader_meta meta;
+        struct mali_state_packed *out;
 
-        memset(&meta, 0, sizeof(meta));
-        memcpy(&meta.shader, &state->shader, sizeof(state->shader));
-        memcpy(&meta.midgard_props, &state->properties, sizeof(state->properties));
+        u_upload_alloc(ctx->state_uploader, 0, MALI_STATE_LENGTH, MALI_STATE_LENGTH,
+                        &state->upload.offset, &state->upload.rsrc, (void **) &out);
 
-        if (dev->quirks & IS_BIFROST)
-                memcpy(&meta.bifrost_preload, &state->preload, sizeof(state->preload));
+        pan_pack(out, STATE_OPAQUE, cfg) {
+                cfg.shader = state->shader;
+                memcpy(&cfg.properties, &state->properties, sizeof(state->properties));
+
+                if (dev->quirks & IS_BIFROST)
+                        cfg.preload = state->preload;
+        }
 
-        u_upload_data(ctx->state_uploader, 0, sizeof(meta), sizeof(meta),
-                        &meta, &state->upload.offset, &state->upload.rsrc);
+        u_upload_unmap(ctx->state_uploader);
 }
 
 static unsigned