void r200TclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint oldfallback = rmesa->radeon.TclFallback; if (mode) { if (oldfallback == 0) { /* We have to flush before transition */ if ( rmesa->radeon.dma.flush ) rmesa->radeon.dma.flush( &rmesa->radeon.glCtx ); if (R200_DEBUG & RADEON_FALLBACKS) fprintf(stderr, "R200 begin tcl fallback %s\n", getFallbackString( bit )); rmesa->radeon.TclFallback |= bit; transition_to_swtnl( ctx ); } else rmesa->radeon.TclFallback |= bit; } else { if (oldfallback == bit) { /* We have to flush before transition */ if ( rmesa->radeon.dma.flush ) rmesa->radeon.dma.flush( &rmesa->radeon.glCtx ); if (R200_DEBUG & RADEON_FALLBACKS) fprintf(stderr, "R200 end tcl fallback %s\n", getFallbackString( bit )); rmesa->radeon.TclFallback &= ~bit; transition_to_hwtnl( ctx ); } else rmesa->radeon.TclFallback &= ~bit; } }
void mgaFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) { TNLcontext *tnl = TNL_CONTEXT(ctx); mgaContextPtr mmesa = MGA_CONTEXT(ctx); GLuint oldfallback = mmesa->Fallback; if (mode) { mmesa->Fallback |= bit; if (oldfallback == 0) { FLUSH_BATCH(mmesa); _swsetup_Wakeup( ctx ); mmesa->RenderIndex = ~0; if (MGA_DEBUG & DEBUG_VERBOSE_FALLBACK) { fprintf(stderr, "MGA begin rasterization fallback: 0x%x %s\n", bit, getFallbackString(bit)); } } } else { mmesa->Fallback &= ~bit; if (oldfallback == bit) { _swrast_flush( ctx ); tnl->Driver.Render.Start = mgaCheckTexSizes; tnl->Driver.Render.PrimitiveNotify = mgaRenderPrimitive; tnl->Driver.Render.Finish = mgaRenderFinish; tnl->Driver.Render.BuildVertices = mgaBuildVertices; mmesa->NewGLState |= (_MGA_NEW_RENDERSTATE | _MGA_NEW_RASTERSETUP); if (MGA_DEBUG & DEBUG_VERBOSE_FALLBACK) { fprintf(stderr, "MGA end rasterization fallback: 0x%x %s\n", bit, getFallbackString(bit)); } } } }
void i830Fallback( i830ContextPtr imesa, GLuint bit, GLboolean mode ) { GLcontext *ctx = imesa->glCtx; TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint oldfallback = imesa->Fallback; if (mode) { imesa->Fallback |= bit; if (oldfallback == 0) { I830_FIREVERTICES(imesa); if (I830_DEBUG & DEBUG_FALLBACKS) fprintf(stderr, "ENTER FALLBACK %s\n", getFallbackString( bit )); _swsetup_Wakeup( ctx ); imesa->RenderIndex = ~0; } } else { imesa->Fallback &= ~bit; if (oldfallback == bit) { _swrast_flush( ctx ); if (I830_DEBUG & DEBUG_FALLBACKS) fprintf(stderr, "LEAVE FALLBACK %s\n", getFallbackString( bit )); tnl->Driver.Render.Start = i830RenderStart; tnl->Driver.Render.PrimitiveNotify = i830RenderPrimitive; tnl->Driver.Render.Finish = i830RenderFinish; tnl->Driver.Render.BuildVertices = i830BuildVertices; imesa->NewGLState |= (_I830_NEW_RENDERSTATE|_I830_NEW_VERTEX); } } }
void radeonFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint oldfallback = rmesa->radeon.Fallback; if (mode) { rmesa->radeon.Fallback |= bit; if (oldfallback == 0) { radeon_firevertices(&rmesa->radeon); TCL_FALLBACK( ctx, RADEON_TCL_FALLBACK_RASTER, GL_TRUE ); _swsetup_Wakeup( ctx ); rmesa->radeon.swtcl.RenderIndex = ~0; if (RADEON_DEBUG & RADEON_FALLBACKS) { fprintf(stderr, "Radeon begin rasterization fallback: 0x%x %s\n", bit, getFallbackString(bit)); } } } else { rmesa->radeon.Fallback &= ~bit; if (oldfallback == bit) { _swrast_flush( ctx ); tnl->Driver.Render.Start = radeonRenderStart; tnl->Driver.Render.PrimitiveNotify = radeonRenderPrimitive; tnl->Driver.Render.Finish = radeonRenderFinish; tnl->Driver.Render.BuildVertices = _tnl_build_vertices; tnl->Driver.Render.CopyPV = _tnl_copy_pv; tnl->Driver.Render.Interp = _tnl_interp; tnl->Driver.Render.ResetLineStipple = radeonResetLineStipple; TCL_FALLBACK( ctx, RADEON_TCL_FALLBACK_RASTER, GL_FALSE ); if (rmesa->radeon.TclFallback) { /* These are already done if rmesa->radeon.TclFallback goes to * zero above. But not if it doesn't (RADEON_NO_TCL for * example?) */ _tnl_invalidate_vertex_state( ctx, ~0 ); _tnl_invalidate_vertices( ctx, ~0 ); rmesa->radeon.tnl_index_bitset = 0; radeonChooseVertexState( ctx ); radeonChooseRenderState( ctx ); } if (RADEON_DEBUG & RADEON_FALLBACKS) { fprintf(stderr, "Radeon end rasterization fallback: 0x%x %s\n", bit, getFallbackString(bit)); } } } }
bool Fallback::getFallbackBool(const std::string& fall) const { std::string fallback=getFallbackString(fall); if(fallback.empty()) return false; else return boost::lexical_cast<bool>(fallback); }
int Fallback::getFallbackInt(const std::string& fall) const { std::string fallback=getFallbackString(fall); if(fallback.empty()) return 0; else return boost::lexical_cast<int>(fallback); }
bool Map::getFallbackBool(const std::string& fall) const { std::string fallback=getFallbackString(fall); if (fallback.empty()) return false; else return stob(fallback); }
int Map::getFallbackInt(const std::string& fall) const { std::string fallback=getFallbackString(fall); if (fallback.empty()) return 0; else return std::stoi(fallback); }
float Map::getFallbackFloat(const std::string& fall) const { std::string fallback=getFallbackString(fall); if (fallback.empty()) return 0; else return boost::lexical_cast<float>(fallback); }
void intelFallback( intelContextPtr intel, GLuint bit, GLboolean mode ) { GLcontext *ctx = &intel->ctx; TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint oldfallback = intel->Fallback; if (mode) { intel->Fallback |= bit; if (oldfallback == 0) { intelFlush(ctx); if (INTEL_DEBUG & DEBUG_FALLBACKS) fprintf(stderr, "ENTER FALLBACK 0x%x: %s\n", bit, getFallbackString(bit)); _swsetup_Wakeup( ctx ); intel->RenderIndex = ~0; } } else { intel->Fallback &= ~bit; if (oldfallback == bit) { _swrast_flush( ctx ); if (INTEL_DEBUG & DEBUG_FALLBACKS) fprintf(stderr, "LEAVE FALLBACK 0x%x: %s\n", bit, getFallbackString(bit)); tnl->Driver.Render.Start = intelRenderStart; tnl->Driver.Render.PrimitiveNotify = intelRenderPrimitive; tnl->Driver.Render.Finish = intelRenderFinish; tnl->Driver.Render.BuildVertices = _tnl_build_vertices; tnl->Driver.Render.CopyPV = _tnl_copy_pv; tnl->Driver.Render.Interp = _tnl_interp; _tnl_invalidate_vertex_state( ctx, ~0 ); _tnl_invalidate_vertices( ctx, ~0 ); _tnl_install_attrs( ctx, intel->vertex_attrs, intel->vertex_attr_count, intel->ViewportMatrix.m, 0 ); intel->NewGLState |= _INTEL_NEW_RENDERSTATE; } } }
void ffbFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) { ffbContextPtr fmesa = FFB_CONTEXT(ctx); TNLcontext *tnl = TNL_CONTEXT(ctx); GLuint oldfallback = fmesa->bad_fragment_attrs; if (mode) { fmesa->bad_fragment_attrs |= bit; if (oldfallback == 0) { /* FFB_FIREVERTICES(fmesa); */ _swsetup_Wakeup( ctx ); if (fmesa->debugFallbacks) fprintf(stderr, "FFB begin software fallback: 0x%x %s\n", bit, getFallbackString(bit)); } } else { fmesa->bad_fragment_attrs &= ~bit; if (oldfallback == bit) { _swrast_flush( ctx ); tnl->Driver.Render.Start = ffbRenderStart; tnl->Driver.Render.PrimitiveNotify = ffbRenderPrimitive; tnl->Driver.Render.Finish = ffbRenderFinish; fmesa->new_gl_state = ~0; /* Just re-choose everything: */ ffbChooseVertexState(ctx); ffbChooseRenderState(ctx); ffbChooseTriangleState(ctx); ffbChooseLineState(ctx); ffbChoosePointState(ctx); if (fmesa->debugFallbacks) fprintf(stderr, "FFB end software fallback: 0x%x %s\n", bit, getFallbackString(bit)); } } }
void radeonTclFallback( struct gl_context *ctx, GLuint bit, GLboolean mode ) { r100ContextPtr rmesa = R100_CONTEXT(ctx); GLuint oldfallback = rmesa->radeon.TclFallback; if (mode) { rmesa->radeon.TclFallback |= bit; if (oldfallback == 0) { if (RADEON_DEBUG & RADEON_FALLBACKS) fprintf(stderr, "Radeon begin tcl fallback %s\n", getFallbackString( bit )); transition_to_swtnl( ctx ); } } else { rmesa->radeon.TclFallback &= ~bit; if (oldfallback == bit) { if (RADEON_DEBUG & RADEON_FALLBACKS) fprintf(stderr, "Radeon end tcl fallback %s\n", getFallbackString( bit )); transition_to_hwtnl( ctx ); } } }
void r200TclFallback( GLcontext *ctx, GLuint bit, GLboolean mode ) { r200ContextPtr rmesa = R200_CONTEXT(ctx); GLuint oldfallback = rmesa->TclFallback; if (mode) { rmesa->TclFallback |= bit; if (oldfallback == 0) { if (R200_DEBUG & DEBUG_FALLBACKS) fprintf(stderr, "R200 begin tcl fallback %s\n", getFallbackString( bit )); transition_to_swtnl( ctx ); } } else { rmesa->TclFallback &= ~bit; if (oldfallback == bit) { if (R200_DEBUG & DEBUG_FALLBACKS) fprintf(stderr, "R200 end tcl fallback %s\n", getFallbackString( bit )); transition_to_hwtnl( ctx ); } } }
Ogre::ColourValue Fallback::getFallbackColour(const std::string& fall) const { std::string sum=getFallbackString(fall); if(sum.empty()) return Ogre::ColourValue(0,0,0); else { std::string ret[3]; unsigned int j=0; for(unsigned int i=0;i<sum.length();++i){ if(sum[i]==',') j++; else if (sum[i] != ' ') ret[j]+=sum[i]; } return Ogre::ColourValue(boost::lexical_cast<int>(ret[0])/255.f,boost::lexical_cast<int>(ret[1])/255.f,boost::lexical_cast<int>(ret[2])/255.f); } }
osg::Vec4f Map::getFallbackColour(const std::string& fall) const { std::string sum=getFallbackString(fall); if (sum.empty()) return osg::Vec4f(0.5f,0.5f,0.5f,1.f); else { std::string ret[3]; unsigned int j=0; for(unsigned int i=0;i<sum.length();++i){ if(sum[i]==',') j++; else if (sum[i] != ' ') ret[j]+=sum[i]; } return osg::Vec4f(std::stoi(ret[0])/255.f,std::stoi(ret[1])/255.f,std::stoi(ret[2])/255.f, 1.f); } }