Module: wine Branch: master Commit: 691086eac111b2558002d8d35c4ddec4afc3878e URL: http://source.winehq.org/git/wine.git/?a=commit;h=691086eac111b2558002d8d35c...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue Feb 16 17:17:27 2016 +0100
wined3d: Introduce wined3d_texture_get_sub_resource_parent().
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/texture.c | 15 +++++++++++++++ dlls/wined3d/wined3d.spec | 1 + include/wine/wined3d.h | 1 + 3 files changed, 17 insertions(+)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 17a035f..7a24ff0 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -1485,6 +1485,21 @@ HRESULT CDECL wined3d_texture_update_overlay(struct wined3d_texture *texture, un return WINED3D_OK; }
+void * CDECL wined3d_texture_get_sub_resource_parent(struct wined3d_texture *texture, unsigned int sub_resource_idx) +{ + unsigned int sub_count = texture->level_count * texture->layer_count; + + TRACE("texture %p, sub_resource_idx %u.\n", texture, sub_resource_idx); + + if (sub_resource_idx >= sub_count) + { + WARN("sub_resource_idx %u >= sub_count %u.\n", sub_resource_idx, sub_count); + return NULL; + } + + return texture->sub_resources[sub_resource_idx].resource->parent; +} + HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct wined3d_resource_desc *desc, UINT level_count, DWORD flags, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture) diff --git a/dlls/wined3d/wined3d.spec b/dlls/wined3d/wined3d.spec index 47eea42..c31ad7b 100644 --- a/dlls/wined3d/wined3d.spec +++ b/dlls/wined3d/wined3d.spec @@ -251,6 +251,7 @@ @ cdecl wined3d_texture_get_pitch(ptr long ptr ptr) @ cdecl wined3d_texture_get_resource(ptr) @ cdecl wined3d_texture_get_sub_resource(ptr long) +@ cdecl wined3d_texture_get_sub_resource_parent(ptr long) @ cdecl wined3d_texture_incref(ptr) @ cdecl wined3d_texture_preload(ptr) @ cdecl wined3d_texture_release_dc(ptr long ptr) diff --git a/include/wine/wined3d.h b/include/wine/wined3d.h index 555167a..44b54e0 100644 --- a/include/wine/wined3d.h +++ b/include/wine/wined3d.h @@ -2447,6 +2447,7 @@ void __cdecl wined3d_texture_get_pitch(const struct wined3d_texture *texture, struct wined3d_resource * __cdecl wined3d_texture_get_resource(struct wined3d_texture *texture); struct wined3d_resource * __cdecl wined3d_texture_get_sub_resource(const struct wined3d_texture *texture, UINT sub_resource_idx); +void * __cdecl wined3d_texture_get_sub_resource_parent(struct wined3d_texture *texture, unsigned int sub_resource_idx); ULONG __cdecl wined3d_texture_incref(struct wined3d_texture *texture); void __cdecl wined3d_texture_preload(struct wined3d_texture *texture); HRESULT __cdecl wined3d_texture_release_dc(struct wined3d_texture *texture, unsigned int sub_resource_idx, HDC dc);