static void nv04_emit_blend(struct nv04_context* nv04)
{
	uint32_t blend;

	blend=0x4; // texture MODULATE_ALPHA
	blend|=0x20; // alpha is MSB
	blend|=(2<<6); // flat shading
	blend|=(1<<8); // persp correct
	blend|=(0<<16); // no fog
	blend|=(nv04->blend->b_enable<<20);
	blend|=(nv04_blend_func(nv04->blend->b_src)<<24);
	blend|=(nv04_blend_func(nv04->blend->b_dst)<<28);

	BEGIN_RING(fahrenheit, NV04_DX5_TEXTURED_TRIANGLE_BLEND, 1);
	OUT_RING(blend);
}
Exemple #2
0
static void nv04_emit_blend(GLcontext *ctx)
{
	nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
	uint32_t blend;

	blend=0x4; // texture MODULATE_ALPHA
	blend|=0x20; // alpha is MSB
	switch(ctx->Light.ShadeModel) {
		case GL_SMOOTH:blend|=(1<<6);break;
		case GL_FLAT:  blend|=(2<<6);break;
		default:break;
	}
	if (ctx->Hint.PerspectiveCorrection!=GL_FASTEST)
		blend|=(1<<8);
	blend|=(ctx->Fog.Enabled<<16);
	blend|=(ctx->Color.BlendEnabled<<20);
	blend|=(nv04_blend_func(ctx->Color.BlendSrcRGB)<<24);
	blend|=(nv04_blend_func(ctx->Color.BlendDstRGB)<<28);

	BEGIN_RING_CACHE(NvSub3D, NV04_DX5_TEXTURED_TRIANGLE_BLEND, 1);
	OUT_RING_CACHE(blend);
}