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

Józef Kucia joseph.kucia at gmail.com
Mon Jun 6 05:13:42 CDT 2016


On Sun, Jun 5, 2016 at 2:02 AM, Max Qian <public at maxqia.com> wrote:
> 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 845ca1d..323e7ac 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 f9a8ffa..00d46c0 100644
> --- a/dlls/wined3d/wined3d_private.h
> +++ b/dlls/wined3d/wined3d_private.h
> @@ -3600,6 +3600,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
>
>

This produces a GL error when glFramebufferTexture2D() is called.



More information about the wine-devel mailing list