diff options
author | Dave Airlie <[email protected]> | 2012-01-29 19:38:28 +0000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2012-01-30 13:23:07 +0000 |
commit | a33937d043f9c1795d2be635117a7cc9646ff0ce (patch) | |
tree | 8d91d7ade0df4930b86083f72cf5413644b54a22 | |
parent | cb40165974856e5fc4fb7b138b3d9b1b0679cf18 (diff) |
r600g: enable blend_bypass for uint/sint
-rw-r--r-- | src/gallium/drivers/r600/r600_state.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/gallium/drivers/r600/r600_state.c b/src/gallium/drivers/r600/r600_state.c index 8e5342c8114..2dcc245ad4d 100644 --- a/src/gallium/drivers/r600/r600_state.c +++ b/src/gallium/drivers/r600/r600_state.c @@ -1467,6 +1467,7 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta unsigned offset; const struct util_format_description *desc; int i; + unsigned blend_bypass = 0, blend_clamp = 1; surf = (struct r600_surface *)state->cbufs[cb]; rtex = (struct r600_resource_texture*)state->cbufs[cb]->texture; @@ -1515,10 +1516,20 @@ static void r600_cb(struct r600_pipe_context *rctx, struct r600_pipe_state *rsta endian = r600_colorformat_endian_swap(format); } + /* set blend bypass according to docs if SINT/UINT or + 8/24 COLOR variants */ + if (ntype == V_0280A0_NUMBER_UINT || ntype == V_0280A0_NUMBER_SINT || + format == V_0280A0_COLOR_8_24 || format == V_0280A0_COLOR_24_8 || + format == V_0280A0_COLOR_X24_8_32_FLOAT) { + blend_clamp = 0; + blend_bypass = 1; + } + color_info = S_0280A0_FORMAT(format) | S_0280A0_COMP_SWAP(swap) | S_0280A0_ARRAY_MODE(rtex->array_mode[level]) | - S_0280A0_BLEND_CLAMP(1) | + S_0280A0_BLEND_BYPASS(blend_bypass) | + S_0280A0_BLEND_CLAMP(blend_clamp) | S_0280A0_NUMBER_TYPE(ntype) | S_0280A0_ENDIAN(endian); |