From 0c9af4991b6569b92f8623b9b82a9951ad93d78b Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sat, 20 Sep 2008 21:40:21 +0000 Subject: [PATCH] ati_mda_bug var git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2719 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/rendercubes.cpp | 4 +++- source/src/rendergl.cpp | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/source/src/rendercubes.cpp b/source/src/rendercubes.cpp index f0225f1b..332c75f7 100644 --- a/source/src/rendercubes.cpp +++ b/source/src/rendercubes.cpp @@ -34,10 +34,12 @@ stripbatch stripbatches[256]; uchar renderedtex[256]; int renderedtexs = 0; +extern int ati_mda_bug; + #define RENDERSTRIPS(strips, type) \ if(strips.first.length()) \ { \ - if(hasMDA) glMultiDrawArrays_(type, strips.first.getbuf(), strips.count.getbuf(), strips.first.length()); \ + if(hasMDA && !ati_mda_bug) glMultiDrawArrays_(type, strips.first.getbuf(), strips.count.getbuf(), strips.first.length()); \ else loopv(strips.first) glDrawArrays(type, strips.first[i], strips.count[i]); \ strips.first.setsizenodelete(0); \ strips.count.setsizenodelete(0); \ diff --git a/source/src/rendergl.cpp b/source/src/rendergl.cpp index e151469c..316f09b0 100644 --- a/source/src/rendergl.cpp +++ b/source/src/rendergl.cpp @@ -38,6 +38,8 @@ int glext(char *ext) } COMMAND(glext, ARG_1EST); +VAR(ati_mda_bug, 0, 0, 1); + void gl_checkextensions() { const char *vendor = (const char *)glGetString(GL_VENDOR); @@ -64,6 +66,8 @@ void gl_checkextensions() glMultiDrawArrays_ = (PFNGLMULTIDRAWARRAYSEXTPROC) getprocaddress("glMultiDrawArraysEXT"); glMultiDrawElements_ = (PFNGLMULTIDRAWELEMENTSEXTPROC)getprocaddress("glMultiDrawElementsEXT"); hasMDA = true; + + if(strstr(vendor, "ATI")) ati_mda_bug = 1; } #ifndef _DEBUG