Mesa (master): lima: upload the shader to a BO at shader creation

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu Mar 4 18:40:09 UTC 2021


Module: Mesa
Branch: master
Commit: 4ac3f850540f8fffd15e4994de6bbf54b17dc649
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ac3f850540f8fffd15e4994de6bbf54b17dc649

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Feb 16 12:49:01 2021 -0800

lima: upload the shader to a BO at shader creation

No need to conditionally upload later.

Signed-off-by: Erico Nunes <nunes.erico at gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9089>

---

 src/gallium/drivers/lima/lima_program.c | 48 +++++++++++++++------------------
 1 file changed, 22 insertions(+), 26 deletions(-)

diff --git a/src/gallium/drivers/lima/lima_program.c b/src/gallium/drivers/lima/lima_program.c
index 6248dea640d..5a96c833d70 100644
--- a/src/gallium/drivers/lima/lima_program.c
+++ b/src/gallium/drivers/lima/lima_program.c
@@ -300,6 +300,16 @@ lima_fs_compile_shader(struct lima_context *ctx,
    fs->uses_discard = nir->info.fs.uses_discard;
    ralloc_free(nir);
 
+   fs->bo = lima_bo_create(screen, fs->shader_size, 0);
+   if (!fs->bo) {
+      fprintf(stderr, "lima: create fs shader bo fail\n");
+      return false;
+   }
+
+   memcpy(lima_bo_map(fs->bo), fs->shader, fs->shader_size);
+   ralloc_free(fs->shader);
+   fs->shader = NULL;
+
    return true;
 }
 
@@ -387,6 +397,18 @@ lima_vs_compile_shader(struct lima_context *ctx,
    }
 
    ralloc_free(nir);
+
+   struct lima_screen *screen = lima_screen(ctx->base.screen);
+   vs->bo = lima_bo_create(screen, vs->shader_size, 0);
+   if (!vs->bo) {
+      fprintf(stderr, "lima: create vs shader bo fail\n");
+      return false;
+   }
+
+   memcpy(lima_bo_map(vs->bo), vs->shader, vs->shader_size);
+   ralloc_free(vs->shader);
+   vs->shader = NULL;
+
    return true;
 }
 
@@ -440,19 +462,6 @@ lima_update_vs_state(struct lima_context *ctx)
 
    ctx->vs = vs;
 
-   if (!vs->bo) {
-      struct lima_screen *screen = lima_screen(ctx->base.screen);
-      vs->bo = lima_bo_create(screen, vs->shader_size, 0);
-      if (!vs->bo) {
-         fprintf(stderr, "lima: create vs shader bo fail\n");
-         return false;
-      }
-
-      memcpy(lima_bo_map(vs->bo), vs->shader, vs->shader_size);
-      ralloc_free(vs->shader);
-      vs->shader = NULL;
-   }
-
    if (ctx->vs != old_vs)
       ctx->dirty |= LIMA_CONTEXT_DIRTY_COMPILED_VS;
 
@@ -523,19 +532,6 @@ lima_update_fs_state(struct lima_context *ctx)
 
    ctx->fs = fs;
 
-   if (!fs->bo) {
-      struct lima_screen *screen = lima_screen(ctx->base.screen);
-      fs->bo = lima_bo_create(screen, fs->shader_size, 0);
-      if (!fs->bo) {
-         fprintf(stderr, "lima: create fs shader bo fail\n");
-         return false;
-      }
-
-      memcpy(lima_bo_map(fs->bo), fs->shader, fs->shader_size);
-      ralloc_free(fs->shader);
-      fs->shader = NULL;
-   }
-
    if (ctx->fs != old_fs)
       ctx->dirty |= LIMA_CONTEXT_DIRTY_COMPILED_FS;
 



More information about the mesa-commit mailing list