mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 03:48:06 +02:00
r300g: Clean up blend masks, change caps.
progs/tests/drawbuffers should work, except I can't test it. GG new shader parser. GG.
This commit is contained in:
parent
2e481e9fad
commit
0087322729
3 changed files with 18 additions and 13 deletions
|
|
@ -406,7 +406,14 @@ void r300_emit_fb_state(struct r300_context* r300, void* state)
|
|||
R300_ZB_ZCACHE_CTLSTAT_ZC_FREE_FREE);
|
||||
|
||||
/* Set the number of colorbuffers. */
|
||||
OUT_CS_REG(R300_RB3D_CCTL, R300_RB3D_CCTL_NUM_MULTIWRITES(fb->nr_cbufs));
|
||||
if (fb->nr_cbufs > 1) {
|
||||
OUT_CS_REG(R300_RB3D_CCTL,
|
||||
R300_RB3D_CCTL_NUM_MULTIWRITES(fb->nr_cbufs) |
|
||||
R300_RB3D_CCTL_INDEPENDENT_COLOR_CHANNEL_MASK_ENABLE |
|
||||
R300_RB3D_CCTL_INDEPENDENT_COLORFORMAT_ENABLE_ENABLE);
|
||||
} else {
|
||||
OUT_CS_REG(R300_RB3D_CCTL, 0x0);
|
||||
}
|
||||
|
||||
/* Set up colorbuffers. */
|
||||
for (i = 0; i < fb->nr_cbufs; i++) {
|
||||
|
|
|
|||
|
|
@ -113,6 +113,9 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
|
|||
* ~ C.
|
||||
*/
|
||||
return 1;
|
||||
case PIPE_CAP_DUAL_SOURCE_BLEND:
|
||||
/* XXX need to figure out how to do it */
|
||||
return 0;
|
||||
case PIPE_CAP_ANISOTROPIC_FILTER:
|
||||
return 1;
|
||||
case PIPE_CAP_POINT_SPRITE:
|
||||
|
|
@ -150,6 +153,7 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
|
|||
return 0;
|
||||
}
|
||||
case PIPE_CAP_INDEP_BLEND_ENABLE:
|
||||
return 1;
|
||||
case PIPE_CAP_INDEP_BLEND_FUNC:
|
||||
return 0;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -288,18 +288,12 @@ static void* r300_create_blend_state(struct pipe_context* pipe,
|
|||
(state->logicop_func) << R300_RB3D_ROPCNTL_ROP_SHIFT;
|
||||
}
|
||||
|
||||
/* Color Channel Mask */
|
||||
if (state->rt[0].colormask & PIPE_MASK_R) {
|
||||
blend->color_channel_mask |= RB3D_COLOR_CHANNEL_MASK_RED_MASK0;
|
||||
}
|
||||
if (state->rt[0].colormask & PIPE_MASK_G) {
|
||||
blend->color_channel_mask |= RB3D_COLOR_CHANNEL_MASK_GREEN_MASK0;
|
||||
}
|
||||
if (state->rt[0].colormask & PIPE_MASK_B) {
|
||||
blend->color_channel_mask |= RB3D_COLOR_CHANNEL_MASK_BLUE_MASK0;
|
||||
}
|
||||
if (state->rt[0].colormask & PIPE_MASK_A) {
|
||||
blend->color_channel_mask |= RB3D_COLOR_CHANNEL_MASK_ALPHA_MASK0;
|
||||
/* Color channel masks for all MRTs. */
|
||||
blend->color_channel_mask = state->rt[0].colormask;
|
||||
if (state->independent_blend_enable) {
|
||||
blend->color_channel_mask |= (state->rt[1].colormask << 4);
|
||||
blend->color_channel_mask |= (state->rt[2].colormask << 8);
|
||||
blend->color_channel_mask |= (state->rt[3].colormask << 12);
|
||||
}
|
||||
|
||||
if (state->dither) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue