diff options
author | Roland Scheidegger <[email protected]> | 2006-09-08 00:54:55 +0000 |
---|---|---|
committer | Roland Scheidegger <[email protected]> | 2006-09-08 00:54:55 +0000 |
commit | a5e73e68878ebed7347532285019befc8c7b1106 (patch) | |
tree | cb0c2bf7d1bcba155c98d6aca6bc8741e76aa092 /src/mesa/drivers | |
parent | 3e05902d304e71493d05edef4c31c6ed1a22bf17 (diff) |
cause a vtxfmt fallback directly when hitting NewList for radeon and r200 drivers, otherwise we'll mix up tcl and vtxfmt path for some reason. This fixes a warzone2100 asssertion failure.
Diffstat (limited to 'src/mesa/drivers')
-rw-r--r-- | src/mesa/drivers/dri/r200/r200_vtxfmt.c | 10 | ||||
-rw-r--r-- | src/mesa/drivers/dri/radeon/radeon_vtxfmt.c | 10 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/r200/r200_vtxfmt.c b/src/mesa/drivers/dri/r200/r200_vtxfmt.c index 8480ce73e88..d73fbbafd5f 100644 --- a/src/mesa/drivers/dri/r200/r200_vtxfmt.c +++ b/src/mesa/drivers/dri/r200/r200_vtxfmt.c @@ -57,6 +57,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "tnl/tnl.h" #include "tnl/t_context.h" #include "tnl/t_array_api.h" +#include "tnl/t_save_api.h" #include "dispatch.h" @@ -106,6 +107,12 @@ static void count_funcs( r200ContextPtr rmesa ) count_func( "FogCoordfvEXT", &rmesa->vb.dfn_cache.FogCoordfvEXT );*/ } +static void r200NewList( GLcontext *ctx, GLuint list, GLenum mode ) +{ + VFMT_FALLBACK( __FUNCTION__ ); + _tnl_NewList( ctx, list, mode ); + return; +} void r200_copy_to_current( GLcontext *ctx ) { @@ -395,6 +402,7 @@ static void VFMT_FALLBACK_OUTSIDE_BEGIN_END( const char *caller ) _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = r200FlushVertices; + ctx->Driver.NewList = _tnl_NewList; assert( rmesa->dma.flush == 0 ); rmesa->vb.fell_back = GL_TRUE; @@ -853,6 +861,7 @@ static void r200VtxfmtValidate( GLcontext *ctx ) _mesa_install_exec_vtxfmt( ctx, &rmesa->vb.vtxfmt ); ctx->Driver.FlushVertices = r200VtxFmtFlushVertices; + ctx->Driver.NewList = r200NewList; rmesa->vb.installed = GL_TRUE; } else if (R200_DEBUG & DEBUG_VFMT) @@ -867,6 +876,7 @@ static void r200VtxfmtValidate( GLcontext *ctx ) rmesa->dma.flush( rmesa ); _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = r200FlushVertices; + ctx->Driver.NewList =_tnl_NewList; rmesa->vb.installed = GL_FALSE; } } diff --git a/src/mesa/drivers/dri/radeon/radeon_vtxfmt.c b/src/mesa/drivers/dri/radeon/radeon_vtxfmt.c index e9a76dc92eb..a5a9eb144b5 100644 --- a/src/mesa/drivers/dri/radeon/radeon_vtxfmt.c +++ b/src/mesa/drivers/dri/radeon/radeon_vtxfmt.c @@ -48,6 +48,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "tnl/tnl.h" #include "tnl/t_context.h" #include "tnl/t_array_api.h" +#include "tnl/t_save_api.h" #include "radeon_context.h" #include "radeon_state.h" @@ -343,6 +344,7 @@ static void VFMT_FALLBACK_OUTSIDE_BEGIN_END( const char *caller ) _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = radeonFlushVertices; + ctx->Driver.NewList =_tnl_NewList; assert( rmesa->dma.flush == 0 ); rmesa->vb.fell_back = GL_TRUE; @@ -464,6 +466,12 @@ static void VFMT_FALLBACK( const char *caller ) } } +static void radeonNewList( GLcontext *ctx, GLuint list, GLenum mode ) +{ + VFMT_FALLBACK( __FUNCTION__ ); + _tnl_NewList( ctx, list, mode ); + return; +} static void wrap_buffer( void ) @@ -717,6 +725,7 @@ static void radeonVtxfmtValidate( GLcontext *ctx ) _mesa_install_exec_vtxfmt( ctx, &rmesa->vb.vtxfmt ); ctx->Driver.FlushVertices = radeonVtxfmtFlushVertices; + ctx->Driver.NewList = radeonNewList; rmesa->vb.installed = GL_TRUE; } else if (RADEON_DEBUG & DEBUG_VFMT) @@ -731,6 +740,7 @@ static void radeonVtxfmtValidate( GLcontext *ctx ) rmesa->dma.flush( rmesa ); _tnl_wakeup_exec( ctx ); ctx->Driver.FlushVertices = radeonFlushVertices; + ctx->Driver.NewList =_tnl_NewList; rmesa->vb.installed = GL_FALSE; } } |