Henri Verbeet : wined3d: Get rid of surface_set_texture_target().
Alexandre Julliard
julliard at winehq.org
Wed Apr 23 14:17:33 CDT 2014
Module: wine
Branch: master
Commit: 5cf9fe1c6338de3dfc3a288939af57267b0b2c2c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5cf9fe1c6338de3dfc3a288939af57267b0b2c2c
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Wed Apr 23 14:35:22 2014 +0200
wined3d: Get rid of surface_set_texture_target().
---
dlls/wined3d/surface.c | 41 +++++++++++-----------------------------
dlls/wined3d/texture.c | 9 ++++-----
dlls/wined3d/wined3d_private.h | 4 ++--
3 files changed, 17 insertions(+), 37 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 0e85b08..680a815 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -671,8 +671,6 @@ static HRESULT surface_private_setup(struct wined3d_surface *surface)
TRACE("surface %p.\n", surface);
- surface->texture_target = GL_TEXTURE_2D;
-
/* Non-power2 support */
if (gl_info->supported[ARB_TEXTURE_NON_POWER_OF_TWO] || gl_info->supported[WINED3D_GL_NORMALIZED_TEXRECT]
|| gl_info->supported[ARB_TEXTURE_RECTANGLE])
@@ -1436,26 +1434,6 @@ static const struct wined3d_surface_ops gdi_surface_ops =
gdi_surface_unmap,
};
-void surface_set_texture_target(struct wined3d_surface *surface, GLenum target, GLint level)
-{
- TRACE("surface %p, target %#x.\n", surface, target);
-
- if (surface->texture_target != target)
- {
- if (target == GL_TEXTURE_RECTANGLE_ARB)
- {
- surface->flags &= ~SFLAG_NORMCOORD;
- }
- else if (surface->texture_target == GL_TEXTURE_RECTANGLE_ARB)
- {
- surface->flags |= SFLAG_NORMCOORD;
- }
- }
- surface->texture_target = target;
- surface->texture_level = level;
- surface_force_reload(surface);
-}
-
/* This call just downloads data, the caller is responsible for binding the
* correct texture. */
/* Context activation is done by the caller. */
@@ -6300,7 +6278,7 @@ cpu:
}
static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_texture *container,
- const struct wined3d_resource_desc *desc, DWORD flags)
+ const struct wined3d_resource_desc *desc, GLenum target, GLint level, DWORD flags)
{
struct wined3d_device *device = container->resource.device;
const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
@@ -6370,7 +6348,8 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text
list_init(&surface->overlays);
/* Flags */
- surface->flags |= SFLAG_NORMCOORD; /* Default to normalized coords. */
+ if (target != GL_TEXTURE_RECTANGLE_ARB)
+ surface->flags |= SFLAG_NORMCOORD;
if (flags & WINED3D_SURFACE_DISCARD)
surface->flags |= SFLAG_DISCARD;
if (flags & WINED3D_SURFACE_PIN_SYSMEM)
@@ -6379,6 +6358,8 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text
surface->resource.access_flags |= WINED3D_RESOURCE_ACCESS_CPU;
surface->map_binding = WINED3D_LOCATION_SYSMEM;
+ surface->texture_target = target;
+ surface->texture_level = level;
/* Call the private setup routine */
hr = surface->surface_ops->surface_private_setup(surface);
@@ -6407,8 +6388,8 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text
return hr;
}
-HRESULT CDECL wined3d_surface_create(struct wined3d_texture *container,
- const struct wined3d_resource_desc *desc, DWORD flags, struct wined3d_surface **surface)
+HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc,
+ GLenum target, GLint level, DWORD flags, struct wined3d_surface **surface)
{
struct wined3d_device_parent *device_parent = container->resource.device->device_parent;
const struct wined3d_parent_ops *parent_ops;
@@ -6416,16 +6397,16 @@ HRESULT CDECL wined3d_surface_create(struct wined3d_texture *container,
void *parent;
HRESULT hr;
- TRACE("container %p, width %u, height %u, format %s, usage %s (%#x), "
- "pool %s, multisample_type %#x, multisample_quality %u, flags %#x, surface %p.\n",
+ TRACE("container %p, width %u, height %u, format %s, usage %s (%#x), pool %s, "
+ "multisample_type %#x, multisample_quality %u, target %#x, level %d, flags %#x, surface %p.\n",
container, desc->width, desc->height, debug_d3dformat(desc->format),
debug_d3dusage(desc->usage), desc->usage, debug_d3dpool(desc->pool),
- desc->multisample_type, desc->multisample_quality, flags, surface);
+ desc->multisample_type, desc->multisample_quality, target, level, flags, surface);
if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object))))
return E_OUTOFMEMORY;
- if (FAILED(hr = surface_init(object, container, desc, flags)))
+ if (FAILED(hr = surface_init(object, container, desc, target, level, flags)))
{
WARN("Failed to initialize surface, returning %#x.\n", hr);
HeapFree(GetProcessHeap(), 0, object);
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 897af19..4291fd0 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -744,7 +744,6 @@ static void texture2d_sub_resource_cleanup(struct wined3d_resource *sub_resource
{
struct wined3d_surface *surface = surface_from_resource(sub_resource);
- surface_set_texture_target(surface, 0, 0);
surface_set_container(surface, NULL);
wined3d_surface_decref(surface);
}
@@ -879,14 +878,14 @@ static HRESULT cubetexture_init(struct wined3d_texture *texture, const struct wi
UINT idx = j * texture->level_count + i;
struct wined3d_surface *surface;
- if (FAILED(hr = wined3d_surface_create(texture, &surface_desc, surface_flags, &surface)))
+ if (FAILED(hr = wined3d_surface_create(texture, &surface_desc,
+ cube_targets[j], i, surface_flags, &surface)))
{
WARN("Failed to create surface, hr %#x.\n", hr);
wined3d_texture_cleanup(texture);
return hr;
}
- surface_set_texture_target(surface, cube_targets[j], i);
texture->sub_resources[idx] = &surface->resource;
TRACE("Created surface level %u @ %p.\n", i, surface);
}
@@ -1033,14 +1032,14 @@ static HRESULT texture_init(struct wined3d_texture *texture, const struct wined3
{
struct wined3d_surface *surface;
- if (FAILED(hr = wined3d_surface_create(texture, &surface_desc, surface_flags, &surface)))
+ if (FAILED(hr = wined3d_surface_create(texture, &surface_desc,
+ texture->target, i, surface_flags, &surface)))
{
WARN("Failed to create surface, hr %#x.\n", hr);
wined3d_texture_cleanup(texture);
return hr;
}
- surface_set_texture_target(surface, texture->target, i);
texture->sub_resources[i] = &surface->resource;
TRACE("Created surface level %u @ %p.\n", i, surface);
/* Calculate the next mipmap level. */
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 9d526fc..28673b6 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2299,8 +2299,8 @@ void surface_update_draw_binding(struct wined3d_surface *surface) DECLSPEC_HIDDE
HRESULT surface_upload_from_surface(struct wined3d_surface *dst_surface, const POINT *dst_point,
struct wined3d_surface *src_surface, const RECT *src_rect) DECLSPEC_HIDDEN;
void surface_validate_location(struct wined3d_surface *surface, DWORD location) DECLSPEC_HIDDEN;
-HRESULT CDECL wined3d_surface_create(struct wined3d_texture *container,
- const struct wined3d_resource_desc *desc, DWORD flags, struct wined3d_surface **surface) DECLSPEC_HIDDEN;
+HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct wined3d_resource_desc *desc,
+ GLenum target, GLint level, DWORD flags, struct wined3d_surface **surface) DECLSPEC_HIDDEN;
void surface_prepare_map_memory(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void get_drawable_size_swapchain(const struct wined3d_context *context, UINT *width, UINT *height) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list