projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
freedreno/a4xx: add BPTC support
[mesa.git]
/
src
/
gallium
/
drivers
/
freedreno
/
a4xx
/
fd4_blend.c
diff --git
a/src/gallium/drivers/freedreno/a4xx/fd4_blend.c
b/src/gallium/drivers/freedreno/a4xx/fd4_blend.c
index 396caa532fc77bd5f2e2efe93c8391bf24c41657..d5e823ef69d22f265635c654799793c35c588e68 100644
(file)
--- a/
src/gallium/drivers/freedreno/a4xx/fd4_blend.c
+++ b/
src/gallium/drivers/freedreno/a4xx/fd4_blend.c
@@
-61,7
+61,7
@@
fd4_blend_state_create(struct pipe_context *pctx,
struct fd4_blend_stateobj *so;
// enum a3xx_rop_code rop = ROP_COPY;
bool reads_dest = false;
struct fd4_blend_stateobj *so;
// enum a3xx_rop_code rop = ROP_COPY;
bool reads_dest = false;
-
int i
;
+
unsigned i, mrt_blend = 0
;
if (cso->logicop_enable) {
// rop = cso->logicop_func; /* maps 1:1 */
if (cso->logicop_enable) {
// rop = cso->logicop_func; /* maps 1:1 */
@@
-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;
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++) {
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)) |
so->rb_mrt[i].blend_control =
A4XX_RB_MRT_BLEND_CONTROL_RGB_SRC_FACTOR(fd_blend_factor(rt->rgb_src_factor)) |
@@
-115,7
+115,7
@@
fd4_blend_state_create(struct pipe_context *pctx,
A4XX_RB_MRT_CONTROL_READ_DEST_ENABLE |
A4XX_RB_MRT_CONTROL_BLEND |
A4XX_RB_MRT_CONTROL_BLEND2;
A4XX_RB_MRT_CONTROL_READ_DEST_ENABLE |
A4XX_RB_MRT_CONTROL_BLEND |
A4XX_RB_MRT_CONTROL_BLEND2;
-
so->rb_fs_output |= A4XX_RB_FS_OUTPUT_ENABLE_BLEND(1
);
+
mrt_blend |= (1 << i
);
}
if (reads_dest)
}
if (reads_dest)
@@
-125,5
+125,7
@@
fd4_blend_state_create(struct pipe_context *pctx,
so->rb_mrt[i].buf_info |= A4XX_RB_MRT_BUF_INFO_DITHER_MODE(DITHER_ALWAYS);
}
so->rb_mrt[i].buf_info |= A4XX_RB_MRT_BUF_INFO_DITHER_MODE(DITHER_ALWAYS);
}
+ so->rb_fs_output = A4XX_RB_FS_OUTPUT_ENABLE_BLEND(mrt_blend);
+
return so;
}
return so;
}