[PATCH 1/5] wined3d: Use renderbuffers if the resource type is RB.

Stefan Dösinger stefan at codeweavers.com
Tue Jun 9 02:28:06 CDT 2015


Surface_private_setup sets surface->locations = WINED3D_LOCATION_DISCARDED
for depth stencil surfaces, so right now we don't have to worry about
initializing the renderbuffer. Adding a new WINED3D_LOCATION_CLEAR
location or similar that clears the surface in load_location may be an
idea in the long run.
---
 dlls/wined3d/resource.c | 2 ++
 dlls/wined3d/surface.c  | 3 +++
 2 files changed, 5 insertions(+)

diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index e9e586f..7818deb 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -402,6 +402,8 @@ void wined3d_resource_update_draw_binding(struct wined3d_resource *resource)
         resource->draw_binding = WINED3D_LOCATION_DRAWABLE;
     else if (resource->multisample_type)
         resource->draw_binding = WINED3D_LOCATION_RB_MULTISAMPLE;
+    else if (resource->gl_type == WINED3D_GL_RES_TYPE_RB)
+        resource->draw_binding = WINED3D_LOCATION_RB_RESOLVED;
     else
         resource->draw_binding = WINED3D_LOCATION_TEXTURE_RGB;
 }
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 552a079..4df6ca8 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -3716,6 +3716,9 @@ void surface_load_ds_location(struct wined3d_surface *surface, struct wined3d_co
             case WINED3D_LOCATION_RB_MULTISAMPLE:
                 surface_prepare_rb(surface, gl_info, TRUE);
                 break;
+            case WINED3D_LOCATION_RB_RESOLVED:
+                surface_prepare_rb(surface, gl_info, FALSE);
+                break;
             case WINED3D_LOCATION_DRAWABLE:
                 /* Nothing to do */
                 break;
-- 
2.3.6




More information about the wine-patches mailing list