panfrost: Pass is_blit flag around
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Fri, 12 Feb 2021 02:32:39 +0000 (21:32 -0500)
committerMarge Bot <eric+marge@anholt.net>
Fri, 12 Feb 2021 12:33:19 +0000 (12:33 +0000)
There are blit shader specific optimizations available.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9002>

src/panfrost/bifrost/bifrost_compile.c
src/panfrost/bifrost/compiler.h
src/panfrost/lib/pan_blit.c
src/panfrost/util/pan_ir.h

index 52b3232..e81f775 100644 (file)
@@ -2445,6 +2445,7 @@ bifrost_compile_shader_nir(void *mem_ctx, nir_shader *nir,
         ctx->quirks = bifrost_get_quirks(inputs->gpu_id);
         ctx->arch = inputs->gpu_id >> 12;
         ctx->is_blend = inputs->is_blend;
+        ctx->is_blit = inputs->is_blit;
         ctx->blend_desc = inputs->blend.bifrost_blend_desc;
         ctx->push = &program->push;
         memcpy(ctx->blend_constants, inputs->blend.constants, sizeof(ctx->blend_constants));
index 0009d2c..278006a 100644 (file)
@@ -503,8 +503,8 @@ typedef struct {
        unsigned arch;
        unsigned tls_size;
 
-       /* Is internally a blend shader? Depends on stage == FRAGMENT */
-       bool is_blend;
+       /* Is internally a blend/blit shader? Depends on stage == FRAGMENT */
+       bool is_blend, is_blit;
 
        /* Blend constants */
        float blend_constants[4];
index af6ff75..02d5566 100644 (file)
@@ -104,6 +104,7 @@ panfrost_build_blit_shader(struct panfrost_device *dev,
 
         struct panfrost_compile_inputs inputs = {
                 .gpu_id = dev->gpu_id,
+                .is_blit = true,
         };
 
         panfrost_program *program =
index 9622a4b..c513275 100644 (file)
@@ -145,7 +145,7 @@ typedef struct {
 
 struct panfrost_compile_inputs {
         unsigned gpu_id;
-        bool is_blend;
+        bool is_blend, is_blit;
         struct {
                 unsigned rt;
                 unsigned nr_samples;