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

Author: Rob Clark <[email protected]>
Date:   Sat Aug  1 16:17:49 2015 -0400

freedreno/a4xx: add independent blend function support

needed for MRT

Signed-off-by: Rob Clark <[email protected]>

---

 src/gallium/drivers/freedreno/a4xx/fd4_blend.c   |   12 ++++++------
 src/gallium/drivers/freedreno/freedreno_screen.c |    6 ++++--
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/src/gallium/drivers/freedreno/a4xx/fd4_blend.c 
b/src/gallium/drivers/freedreno/a4xx/fd4_blend.c
index 9d5ae42..d5e823e 100644
--- a/src/gallium/drivers/freedreno/a4xx/fd4_blend.c
+++ b/src/gallium/drivers/freedreno/a4xx/fd4_blend.c
@@ -84,11 +84,6 @@ fd4_blend_state_create(struct pipe_context *pctx,
                }
        }
 
-       if (cso->independent_blend_enable) {
-               DBG("Unsupported! independent blend state");
-               return NULL;
-       }
-
        so = CALLOC_STRUCT(fd4_blend_stateobj);
        if (!so)
                return NULL;
@@ -96,7 +91,12 @@ fd4_blend_state_create(struct pipe_context *pctx,
        so->base = *cso;
 
        for (i = 0; i < ARRAY_SIZE(so->rb_mrt); i++) {
-               const struct pipe_rt_blend_state *rt = &cso->rt[i];
+               const struct pipe_rt_blend_state *rt;
+
+               if (cso->independent_blend_enable)
+                       rt = &cso->rt[i];
+               else
+                       rt = &cso->rt[0];
 
                so->rb_mrt[i].blend_control =
                                
A4XX_RB_MRT_BLEND_CONTROL_RGB_SRC_FACTOR(fd_blend_factor(rt->rgb_src_factor)) |
diff --git a/src/gallium/drivers/freedreno/freedreno_screen.c 
b/src/gallium/drivers/freedreno/freedreno_screen.c
index bab6131..417d7c6 100644
--- a/src/gallium/drivers/freedreno/freedreno_screen.c
+++ b/src/gallium/drivers/freedreno/freedreno_screen.c
@@ -178,11 +178,13 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum 
pipe_cap param)
        case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
                return is_a3xx(screen) || is_a4xx(screen);
 
-       case PIPE_CAP_INDEP_BLEND_ENABLE:
-       case PIPE_CAP_INDEP_BLEND_FUNC:
        case PIPE_CAP_DEPTH_CLIP_DISABLE:
                return is_a3xx(screen);
 
+       case PIPE_CAP_INDEP_BLEND_ENABLE:
+       case PIPE_CAP_INDEP_BLEND_FUNC:
+               return is_a3xx(screen) || is_a4xx(screen);
+
        case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
                return 256;
 

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to