mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-17 23:40:29 +01:00
Fallback if ColorLogicOp is enabled. Cleanup a bit the fallback
function.
This commit is contained in:
parent
8c9366a807
commit
3dcf23171d
1 changed files with 54 additions and 30 deletions
|
|
@ -372,54 +372,78 @@ GLboolean r300_run_vb_render(GLcontext *ctx,
|
|||
return GL_FALSE;
|
||||
}
|
||||
|
||||
#define FALLBACK_IF(expr) \
|
||||
do { \
|
||||
if (expr) { \
|
||||
if (1 || RADEON_DEBUG & DEBUG_FALLBACKS) \
|
||||
WARN_ONCE("Software fallback:%s\n", #expr); \
|
||||
return R300_FALLBACK_RAST; \
|
||||
} \
|
||||
} while(0)
|
||||
#define FALLBACK_IF(expr) \
|
||||
do { \
|
||||
if (expr) { \
|
||||
if (1 || RADEON_DEBUG & DEBUG_FALLBACKS) \
|
||||
WARN_ONCE("Software fallback:%s\n", \
|
||||
#expr); \
|
||||
return R300_FALLBACK_RAST; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
int r300Fallback(GLcontext *ctx)
|
||||
{
|
||||
r300ContextPtr r300 = R300_CONTEXT(ctx);
|
||||
int i;
|
||||
|
||||
FALLBACK_IF(ctx->RenderMode != GL_RENDER); // We do not do SELECT or FEEDBACK (yet ?)
|
||||
|
||||
#if 0 /* These should work now.. */
|
||||
/* We do not do SELECT or FEEDBACK (yet ?)
|
||||
* Is it worth doing them ?
|
||||
*/
|
||||
FALLBACK_IF(ctx->RenderMode != GL_RENDER);
|
||||
|
||||
#if 0
|
||||
/* These should work now.. */
|
||||
FALLBACK_IF(ctx->Color.DitherFlag);
|
||||
FALLBACK_IF(ctx->Color.AlphaEnabled); // GL_ALPHA_TEST
|
||||
FALLBACK_IF(ctx->Color.BlendEnabled); // GL_BLEND
|
||||
FALLBACK_IF(ctx->Polygon.OffsetFill); // GL_POLYGON_OFFSET_FILL
|
||||
/* GL_ALPHA_TEST */
|
||||
FALLBACK_IF(ctx->Color.AlphaEnabled);
|
||||
/* GL_BLEND */
|
||||
FALLBACK_IF(ctx->Color.BlendEnabled);
|
||||
/* GL_POLYGON_OFFSET_FILL */
|
||||
FALLBACK_IF(ctx->Polygon.OffsetFill);
|
||||
/* FOG seems to trigger an unknown output
|
||||
* in vertex program.
|
||||
*/
|
||||
FALLBACK_IF(ctx->Fog.Enabled);
|
||||
#endif
|
||||
|
||||
if(!r300->disable_lowimpact_fallback){
|
||||
FALLBACK_IF(ctx->Polygon.OffsetPoint); // GL_POLYGON_OFFSET_POINT
|
||||
FALLBACK_IF(ctx->Polygon.OffsetLine); // GL_POLYGON_OFFSET_LINE
|
||||
//FALLBACK_IF(ctx->Stencil.Enabled); // GL_STENCIL_TEST
|
||||
|
||||
//FALLBACK_IF(ctx->Polygon.SmoothFlag); // GL_POLYGON_SMOOTH disabling to get blender going
|
||||
FALLBACK_IF(ctx->Polygon.StippleFlag); // GL_POLYGON_STIPPLE
|
||||
FALLBACK_IF(ctx->Multisample.Enabled); // GL_MULTISAMPLE_ARB
|
||||
|
||||
/* GL_POLYGON_OFFSET_POINT */
|
||||
FALLBACK_IF(ctx->Polygon.OffsetPoint);
|
||||
/* GL_POLYGON_OFFSET_LINE */
|
||||
FALLBACK_IF(ctx->Polygon.OffsetLine);
|
||||
#if 0
|
||||
/* GL_STENCIL_TEST */
|
||||
FALLBACK_IF(ctx->Stencil.Enabled);
|
||||
/* GL_POLYGON_SMOOTH disabling to get blender going */
|
||||
FALLBACK_IF(ctx->Polygon.SmoothFlag);
|
||||
#endif
|
||||
/* GL_POLYGON_STIPPLE */
|
||||
FALLBACK_IF(ctx->Polygon.StippleFlag);
|
||||
/* GL_MULTISAMPLE_ARB */
|
||||
FALLBACK_IF(ctx->Multisample.Enabled);
|
||||
/* blender ? */
|
||||
FALLBACK_IF(ctx->Line.StippleFlag);
|
||||
|
||||
/* HW doesnt appear to directly support these */
|
||||
FALLBACK_IF(ctx->Line.SmoothFlag); // GL_LINE_SMOOTH
|
||||
FALLBACK_IF(ctx->Point.SmoothFlag); // GL_POINT_SMOOTH
|
||||
/* GL_LINE_SMOOTH */
|
||||
FALLBACK_IF(ctx->Line.SmoothFlag);
|
||||
/* GL_POINT_SMOOTH */
|
||||
FALLBACK_IF(ctx->Point.SmoothFlag);
|
||||
}
|
||||
|
||||
/* Rest could be done with vertex fragments */
|
||||
if (ctx->Extensions.NV_point_sprite || ctx->Extensions.ARB_point_sprite)
|
||||
FALLBACK_IF(ctx->Point.PointSprite); // GL_POINT_SPRITE_NV
|
||||
/* Fallback for LOGICOP */
|
||||
FALLBACK_IF(ctx->Color.ColorLogicOpEnabled);
|
||||
|
||||
/* Rest could be done with vertex fragments */
|
||||
if (ctx->Extensions.NV_point_sprite ||
|
||||
ctx->Extensions.ARB_point_sprite)
|
||||
/* GL_POINT_SPRITE_NV */
|
||||
FALLBACK_IF(ctx->Point.PointSprite);
|
||||
|
||||
/* Fallback for rectangular texture */
|
||||
for (i = 0; i < ctx->Const.MaxTextureUnits; i++)
|
||||
if (ctx->Texture.Unit[i]._ReallyEnabled & TEXTURE_RECT_BIT)
|
||||
return R300_FALLBACK_TCL;
|
||||
|
||||
|
||||
return R300_FALLBACK_NONE;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue