mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-28 08:10:09 +01:00
freedreno/a3xx: disable blending for integer formats
Also add support for the BLENDABLE bind flag, similarly predicated on non-int formats. Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
parent
8e147e9ec8
commit
f866446e8c
2 changed files with 14 additions and 2 deletions
|
|
@ -573,9 +573,18 @@ fd3_emit_state(struct fd_context *ctx, struct fd_ringbuffer *ring,
|
|||
for (i = 0; i < ARRAY_SIZE(blend->rb_mrt); i++) {
|
||||
bool is_float = util_format_is_float(
|
||||
pipe_surface_format(ctx->framebuffer.cbufs[i]));
|
||||
bool is_int = util_format_is_pure_integer(
|
||||
pipe_surface_format(ctx->framebuffer.cbufs[i]));
|
||||
uint32_t control = blend->rb_mrt[i].control;
|
||||
|
||||
if (is_int) {
|
||||
control &= (A3XX_RB_MRT_CONTROL_COMPONENT_ENABLE__MASK |
|
||||
A3XX_RB_MRT_CONTROL_DITHER_MODE__MASK);
|
||||
control |= A3XX_RB_MRT_CONTROL_ROP_CODE(ROP_COPY);
|
||||
}
|
||||
|
||||
OUT_PKT0(ring, REG_A3XX_RB_MRT_CONTROL(i), 1);
|
||||
OUT_RING(ring, blend->rb_mrt[i].control);
|
||||
OUT_RING(ring, control);
|
||||
|
||||
OUT_PKT0(ring, REG_A3XX_RB_MRT_BLEND_CONTROL(i), 1);
|
||||
OUT_RING(ring, blend->rb_mrt[i].blend_control |
|
||||
|
|
|
|||
|
|
@ -63,13 +63,16 @@ fd3_screen_is_format_supported(struct pipe_screen *pscreen,
|
|||
if ((usage & (PIPE_BIND_RENDER_TARGET |
|
||||
PIPE_BIND_DISPLAY_TARGET |
|
||||
PIPE_BIND_SCANOUT |
|
||||
PIPE_BIND_SHARED)) &&
|
||||
PIPE_BIND_SHARED |
|
||||
PIPE_BIND_BLENDABLE)) &&
|
||||
(fd3_pipe2color(format) != ~0) &&
|
||||
(fd3_pipe2tex(format) != ~0)) {
|
||||
retval |= usage & (PIPE_BIND_RENDER_TARGET |
|
||||
PIPE_BIND_DISPLAY_TARGET |
|
||||
PIPE_BIND_SCANOUT |
|
||||
PIPE_BIND_SHARED);
|
||||
if (!util_format_is_pure_integer(format))
|
||||
retval |= usage & PIPE_BIND_BLENDABLE;
|
||||
}
|
||||
|
||||
if ((usage & PIPE_BIND_DEPTH_STENCIL) &&
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue