diff options
author | Marek Olšák <[email protected]> | 2013-02-01 21:45:15 +0100 |
---|---|---|
committer | Marek Olšák <[email protected]> | 2013-02-07 00:20:24 +0100 |
commit | 4dc142d521f9161275deb030efcde112f835307c (patch) | |
tree | 37c449cb6c5b3c16dae39c5449618112f786ebe0 /src/gallium/drivers/r300/r300_emit.c | |
parent | 27e216a07501f4d2ade1e1ec8b9a1f709304013b (diff) |
r300g: fix blending and alpha-test with RGBX16F and enable MSAA for it
Diffstat (limited to 'src/gallium/drivers/r300/r300_emit.c')
-rw-r--r-- | src/gallium/drivers/r300/r300_emit.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c index 93f710c6e5c..b038a9719ae 100644 --- a/src/gallium/drivers/r300/r300_emit.c +++ b/src/gallium/drivers/r300/r300_emit.c @@ -47,6 +47,8 @@ void r300_emit_blend_state(struct r300_context* r300, if (fb->nr_cbufs) { if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT) { WRITE_CS_TABLE(blend->cb_noclamp, size); + } else if (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16X16_FLOAT) { + WRITE_CS_TABLE(blend->cb_noclamp_noalpha, size); } else { unsigned swz = r300_surface(fb->cbufs[0])->colormask_swizzle; WRITE_CS_TABLE(blend->cb_clamp[swz], size); @@ -86,7 +88,9 @@ void r300_emit_dsa_state(struct r300_context* r300, unsigned size, void* state) /* Choose the alpha ref value between 8-bit (FG_ALPHA_FUNC.AM_VAL) and * 16-bit (FG_ALPHA_VALUE). */ if (is_r500 && (alpha_func & R300_FG_ALPHA_FUNC_ENABLE)) { - if (fb->nr_cbufs && fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT) { + if (fb->nr_cbufs && + (fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16A16_FLOAT || + fb->cbufs[0]->format == PIPE_FORMAT_R16G16B16X16_FLOAT)) { alpha_func |= R500_FG_ALPHA_FUNC_FP16_ENABLE; } else { alpha_func |= R500_FG_ALPHA_FUNC_8BIT; |