diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gallium/drivers/nv50/nv50_program.c | 3 | ||||
| -rw-r--r-- | src/gallium/drivers/nv50/nv50_state_validate.c | 27 | 
2 files changed, 28 insertions, 2 deletions
| diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c index fefccd0b2a..e45769c069 100644 --- a/src/gallium/drivers/nv50/nv50_program.c +++ b/src/gallium/drivers/nv50/nv50_program.c @@ -251,7 +251,7 @@ alloc_temp4(struct nv50_pc *pc, struct nv50_reg *dst[4], int idx)  	if (pc->r_temp[idx] || pc->r_temp[idx + 1] ||  	    pc->r_temp[idx + 2] || pc->r_temp[idx + 3]) -		return alloc_temp4(pc, dst, idx + 1); +		return alloc_temp4(pc, dst, idx + 4);  	for (i = 0; i < 4; i++) {  		dst[i] = CALLOC_STRUCT(nv50_reg); @@ -1014,6 +1014,7 @@ emit_tex(struct nv50_pc *pc, struct nv50_reg **dst, unsigned mask,  		break;  	} +	/* some cards need t[0]'s hw index to be a multiple of 4 */  	alloc_temp4(pc, t, 0);  	if (proj) { diff --git a/src/gallium/drivers/nv50/nv50_state_validate.c b/src/gallium/drivers/nv50/nv50_state_validate.c index 42ecf05580..633be78753 100644 --- a/src/gallium/drivers/nv50/nv50_state_validate.c +++ b/src/gallium/drivers/nv50/nv50_state_validate.c @@ -148,7 +148,32 @@ nv50_state_emit(struct nv50_context *nv50)  	struct nouveau_channel *chan = screen->base.channel;  	if (nv50->pctx_id != screen->cur_pctx) { -		nv50->state.dirty |= 0xffffffff; +		if (nv50->state.fb) +			nv50->state.dirty |= NV50_NEW_FRAMEBUFFER; +		if (nv50->state.blend) +			nv50->state.dirty |= NV50_NEW_BLEND; +		if (nv50->state.zsa) +			nv50->state.dirty |= NV50_NEW_ZSA; +		if (nv50->state.vertprog) +			nv50->state.dirty |= NV50_NEW_VERTPROG; +		if (nv50->state.fragprog) +			nv50->state.dirty |= NV50_NEW_FRAGPROG; +		if (nv50->state.rast) +			nv50->state.dirty |= NV50_NEW_RASTERIZER; +		if (nv50->state.blend_colour) +			nv50->state.dirty |= NV50_NEW_BLEND_COLOUR; +		if (nv50->state.stipple) +			nv50->state.dirty |= NV50_NEW_STIPPLE; +		if (nv50->state.scissor) +			nv50->state.dirty |= NV50_NEW_SCISSOR; +		if (nv50->state.viewport) +			nv50->state.dirty |= NV50_NEW_VIEWPORT; +		if (nv50->state.tsc_upload) +			nv50->state.dirty |= NV50_NEW_SAMPLER; +		if (nv50->state.tic_upload) +			nv50->state.dirty |= NV50_NEW_TEXTURE; +		if (nv50->state.vtxfmt && nv50->state.vtxbuf) +			nv50->state.dirty |= NV50_NEW_ARRAYS;  		screen->cur_pctx = nv50->pctx_id;  	} | 
