nouveau: nv10: stencil functions
This commit is contained in:
parent
29484f24fb
commit
faada2485a
|
@ -41,18 +41,10 @@ static void nv10AlphaFunc(GLcontext *ctx, GLenum func, GLfloat ref)
|
|||
CLAMPED_FLOAT_TO_UBYTE(ubRef, ref);
|
||||
|
||||
BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC_FUNC, 2);
|
||||
OUT_RING_CACHE(func); /* NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC_FUNC */
|
||||
OUT_RING_CACHE(ubRef); /* NV10_TCL_PRIMITIVE_3D_ALPHA_FUNC_REF */
|
||||
OUT_RING_CACHE(func);
|
||||
OUT_RING_CACHE(ubRef);
|
||||
}
|
||||
|
||||
/*
|
||||
Supported blend extensions on NV10
|
||||
EXT_blend_color
|
||||
EXT_blend_minmax
|
||||
EXT_blend_subtract
|
||||
NV_blend_square
|
||||
*/
|
||||
|
||||
static void nv10BlendColor(GLcontext *ctx, const GLfloat color[4])
|
||||
{
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
|
@ -88,7 +80,7 @@ static void nv10BlendFuncSeparate(GLcontext *ctx, GLenum sfactorRGB, GLenum dfac
|
|||
|
||||
BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_BLEND_FUNC_SRC, 2);
|
||||
OUT_RING_CACHE(sfactorRGB);
|
||||
OUT_RING_CACHE(dfactorRGB); /* NV10_TCL_PRIMITIVE_3D_BLEND_FUNC_DST */
|
||||
OUT_RING_CACHE(dfactorRGB);
|
||||
}
|
||||
|
||||
static void nv10Clear(GLcontext *ctx, GLbitfield mask)
|
||||
|
@ -549,21 +541,40 @@ static void nv10ShadeModel(GLcontext *ctx, GLenum mode)
|
|||
OUT_RING_CACHE(mode);
|
||||
}
|
||||
|
||||
/** OpenGL 2.0 two-sided StencilFunc */
|
||||
static void nv10StencilFuncSeparate(GLcontext *ctx, GLenum face, GLenum func,
|
||||
GLint ref, GLuint mask)
|
||||
{
|
||||
/* Not for NV10 */
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
|
||||
/* NV10 do not have separate FRONT and BACK stencils */
|
||||
BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_STENCIL_FUNC_FUNC, 3);
|
||||
OUT_RING_CACHE(func);
|
||||
OUT_RING_CACHE(ref);
|
||||
OUT_RING_CACHE(mask);
|
||||
}
|
||||
|
||||
/** OpenGL 2.0 two-sided StencilMask */
|
||||
static void nv10StencilMaskSeparate(GLcontext *ctx, GLenum face, GLuint mask)
|
||||
{
|
||||
/* Not for NV10 */
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
|
||||
/* NV10 do not have separate FRONT and BACK stencils */
|
||||
BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_STENCIL_MASK, 1);
|
||||
OUT_RING_CACHE(mask);
|
||||
}
|
||||
|
||||
/** OpenGL 2.0 two-sided StencilOp */
|
||||
static void nv10StencilOpSeparate(GLcontext *ctx, GLenum face, GLenum fail,
|
||||
GLenum zfail, GLenum zpass)
|
||||
{
|
||||
/* Not for NV10 */
|
||||
nouveauContextPtr nmesa = NOUVEAU_CONTEXT(ctx);
|
||||
|
||||
/* NV10 do not have separate FRONT and BACK stencils */
|
||||
BEGIN_RING_CACHE(NvSub3D, NV10_TCL_PRIMITIVE_3D_STENCIL_OP_FAIL, 3);
|
||||
OUT_RING_CACHE(fail);
|
||||
OUT_RING_CACHE(zfail);
|
||||
OUT_RING_CACHE(zpass);
|
||||
}
|
||||
|
||||
/** Control the generation of texture coordinates */
|
||||
|
@ -641,9 +652,9 @@ void nv10InitStateFuncs(GLcontext *ctx, struct dd_function_table *func)
|
|||
/* func->RenderMode = nv10RenderMode;*/
|
||||
func->Scissor = nv10Scissor;
|
||||
func->ShadeModel = nv10ShadeModel;
|
||||
func->StencilFuncSeparate = nv10StencilFuncSeparate; /* Not for NV10 */
|
||||
func->StencilMaskSeparate = nv10StencilMaskSeparate; /* Not for NV10 */
|
||||
func->StencilOpSeparate = nv10StencilOpSeparate; /* Not for NV10 */
|
||||
func->StencilFuncSeparate = nv10StencilFuncSeparate;
|
||||
func->StencilMaskSeparate = nv10StencilMaskSeparate;
|
||||
func->StencilOpSeparate = nv10StencilOpSeparate;
|
||||
/* func->TexGen = nv10TexGen;*/
|
||||
/* func->TexParameter = nv10TexParameter;*/
|
||||
func->TextureMatrix = nv10TextureMatrix;
|
||||
|
|
Loading…
Reference in New Issue