From ccc936966085bc23a8f7bcd67b4e1a14e0f8da40 Mon Sep 17 00:00:00 2001
From: Sam Hocevar <sam@hocevar.net>
Date: Wed, 14 Aug 2013 10:05:55 +0000
Subject: [PATCH] gpu: avoid unnecessary OpenGL context changes.

---
 src/scene.cpp | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/scene.cpp b/src/scene.cpp
index 54d6ab97..bd413c47 100644
--- a/src/scene.cpp
+++ b/src/scene.cpp
@@ -190,13 +190,14 @@ Array<Light *> const &Scene::GetLights() const
 void Scene::Render() // XXX: rename to Blit()
 {
     RenderContext rc;
-    rc.SetDepthFunc(DepthFunc::LessOrEqual);
-    rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha);
-    rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f);
 
     /* Early test if nothing needs to be rendered */
     if (data->m_tiles.Count())
     {
+        rc.SetDepthFunc(DepthFunc::LessOrEqual);
+        rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha);
+        rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f);
+
         PushCamera(data->m_default_cam);
 
 #if defined USE_D3D9 || defined _XBOX
@@ -295,6 +296,10 @@ void Scene::Render() // XXX: rename to Blit()
 
     if (data->m_lines.Count())
     {
+        rc.SetDepthFunc(DepthFunc::LessOrEqual);
+        rc.SetBlendFunc(BlendFunc::SrcAlpha, BlendFunc::OneMinusSrcAlpha);
+        rc.SetAlphaFunc(AlphaFunc::GreaterOrEqual, 0.01f);
+
         int linecount = data->m_lines.Count();
 
         if (!data->m_line_shader)