[PATCH 2/5] wined3d: Reuse the FBO for check_fbo_compat().

Henri Verbeet hverbeet at codeweavers.com
Thu Jun 18 02:04:03 CDT 2009


---
 dlls/wined3d/utils.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 1e3e3fb..881736e 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -559,8 +559,8 @@ static BOOL init_format_compression_info(WineD3D_GL_Info *gl_info)
 
 static BOOL check_fbo_compat(const WineD3D_GL_Info *gl_info, GLint internal_format, GLenum format, GLenum type)
 {
-    GLuint tex, fb;
     GLenum status;
+    GLuint tex;
 
     ENTER_GL();
 
@@ -571,12 +571,9 @@ static BOOL check_fbo_compat(const WineD3D_GL_Info *gl_info, GLint internal_form
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
     glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
 
-    GL_EXTCALL(glGenFramebuffersEXT(1, &fb));
-    GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fb));
     GL_EXTCALL(glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, tex, 0));
 
     status = GL_EXTCALL(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT));
-    GL_EXTCALL(glDeleteFramebuffersEXT(1, &fb));
     glDeleteTextures(1, &tex);
 
     checkGLcall("Framebuffer format check");
@@ -589,6 +586,13 @@ static BOOL check_fbo_compat(const WineD3D_GL_Info *gl_info, GLint internal_form
 static void init_format_fbo_compat_info(WineD3D_GL_Info *gl_info)
 {
     unsigned int i;
+    GLuint fbo;
+
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
+    {
+        GL_EXTCALL(glGenFramebuffersEXT(1, &fbo));
+        GL_EXTCALL(glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo));
+    }
 
     for (i = 0; i < sizeof(formats) / sizeof(*formats); ++i)
     {
@@ -652,6 +656,11 @@ static void init_format_fbo_compat_info(WineD3D_GL_Info *gl_info)
             desc->rtInternal = desc->glInternal;
         }
     }
+
+    if (wined3d_settings.offscreen_rendering_mode == ORM_FBO)
+    {
+        GL_EXTCALL(glDeleteFramebuffersEXT(1, &fbo));
+    }
 }
 
 static BOOL init_format_texture_info(WineD3D_GL_Info *gl_info)
-- 
1.6.0.6




More information about the wine-patches mailing list