[PATCH] wined3d : Set texture target of WINED3DFMT_NULL to 0

Max Qian public at maxqia.com
Thu Jun 2 00:39:44 CDT 2016


This fixes https://bugs.winehq.org/show_bug.cgi?id=40624
Signed-off-by: Max Qian <public at maxqia.com>
---
  dlls/wined3d/context.c         | 4 ++--
  dlls/wined3d/wined3d_private.h | 5 +++++
  2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index f07b3ab..fa95144 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -397,14 +397,14 @@ static inline void 
context_set_fbo_key_for_surface(const struct wined3d_context
          {
              case WINED3D_LOCATION_TEXTURE_RGB:
                  key->objects[idx].object = 
surface_get_texture_name(surface, context, FALSE);
-                key->objects[idx].target = surface->texture_target;
+                key->objects[idx].target = 
surface_get_texture_target(surface);
                  key->objects[idx].level = surface->texture_level;
                  key->objects[idx].layer = surface->texture_layer;
                  break;

              case WINED3D_LOCATION_TEXTURE_SRGB:
                  key->objects[idx].object = 
surface_get_texture_name(surface, context, TRUE);
-                key->objects[idx].target = surface->texture_target;
+                key->objects[idx].target = 
surface_get_texture_target(surface);
                  key->objects[idx].level = surface->texture_level;
                  key->objects[idx].layer = surface->texture_layer;
                  break;
diff --git a/dlls/wined3d/wined3d_private.h 
b/dlls/wined3d/wined3d_private.h
index 814ac49..4240c6e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -3591,6 +3591,11 @@ static inline struct wined3d_surface 
*context_get_rt_surface(const struct wined3
      return 
texture->sub_resources[context->current_rt.sub_resource_idx].u.surface;
  }

+static inline GLuint surface_get_texture_target(const struct 
wined3d_surface *surface)
+{
+    return surface->container->resource.format->id == WINED3DFMT_NULL ? 
0 : surface->texture_target;
+}
+
  /* The WNDCLASS-Name for the fake window which we use to retrieve the 
GL capabilities */
  #define WINED3D_OPENGL_WINDOW_CLASS_NAME "WineD3D_OpenGL"

-- 
2.8.3




More information about the wine-patches mailing list