SH-2038 FIX -- [PUBLIC] Severe performance drop on MacBook Pros

EXP-997 FIX -- Significant FPS degradation in 2.8.0 Beta on Mac equipped ATI video card

* Disabled VBO's on mac to avoid stalls in renderer
* Placed valid data into the padding between triangles in the vertex buffer to remove uninitialized craziness
* Removed invalid rendering checks causing GL errors in debug mode

Reviewed by davep
meow-7.2.2
Leslie Linden 2011-07-19 13:31:32 -07:00
parent 2eaadf9024
commit 76249c58f6
4 changed files with 13 additions and 18 deletions

View File

@ -1,4 +1,4 @@
version 28
version 29
// NOTE: This is mostly identical to featuretable_mac.txt with a few differences
// Should be combined into one table
@ -47,7 +47,7 @@ RenderTerrainLODFactor 1 2.0
RenderTransparentWater 1 1
RenderTreeLODFactor 1 1.0
RenderUseImpostors 1 1
RenderVBOEnable 1 1
RenderVBOEnable 1 0
RenderVBOMappingDisable 1 0
RenderVolumeLODFactor 1 2.0
UseStartScreen 1 1

View File

@ -1524,11 +1524,6 @@ BOOL LLDrawable::isAnimating() const
return TRUE;
}
if (!LLVertexBuffer::sUseStreamDraw && mVObjp->isFlexible())
{
return TRUE;
}
return FALSE;
}

View File

@ -1621,6 +1621,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
if (rebuild_pos)
{
llassert(num_vertices > 0);
mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, map_range);
vertices = (LLVector4a*) vert.get();
@ -1649,7 +1651,15 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume,
index_dst += 4;
}
while (index_dst < index_end);
S32 aligned_pad_vertices = mGeomCount - num_vertices;
LLVector4a* last_vec = end - 1;
while (aligned_pad_vertices > 0)
{
--aligned_pad_vertices;
*dst++ = *last_vec;
}
if (map_range)
{
mVertexBuffer->setBuffer(0);

View File

@ -3686,8 +3686,6 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate)
LLVertexBuffer::unbind();
LLGLState::checkStates();
//LLGLState::checkTextureChannels();
//LLGLState::checkClientArrays();
LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights");
@ -3825,8 +3823,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera)
llerrs << "GL matrix stack corrupted!" << llendl;
}
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
}
}
}
@ -3919,8 +3915,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera)
llerrs << "GL matrix stack corrupted!" << llendl;
}
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
}
}
}
@ -3995,8 +3989,6 @@ void LLPipeline::renderGeomShadow(LLCamera& camera)
LLVertexBuffer::unbind();
LLGLState::checkStates();
LLGLState::checkTextureChannels();
LLGLState::checkClientArrays();
}
}
else
@ -8123,8 +8115,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
LLViewerCamera::getInstance()->setUserClipPlane(npnorm);
LLGLState::checkStates();
//LLGLState::checkTextureChannels();
//LLGLState::checkClientArrays();
if (!skip_avatar_update)
{