Module: wine Branch: master Commit: 06b5114342deed6a28d8258e75ca102cd1f4ce1f URL: http://source.winehq.org/git/wine.git/?a=commit;h=06b5114342deed6a28d8258e75...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Mar 9 16:21:54 2016 +0100
wined3d: Introduce helpers functions to calculate texture level dimensions.
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/texture.c | 14 +++++++------- dlls/wined3d/wined3d_private.h | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 3ac6f43..d0f1f91 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -532,8 +532,8 @@ void CDECL wined3d_texture_get_pitch(const struct wined3d_texture *texture, unsigned int level, unsigned int *row_pitch, unsigned int *slice_pitch) { const struct wined3d_resource *resource = &texture->resource; - unsigned int width = max(1, texture->resource.width >> level); - unsigned int height = max(1, texture->resource.height >> level); + unsigned int width = wined3d_texture_get_level_width(texture, level); + unsigned int height = wined3d_texture_get_level_height(texture, level);
if (texture->row_pitch) { @@ -1322,8 +1322,8 @@ BOOL wined3d_texture_check_block_align(const struct wined3d_texture *texture, unsigned int level, const struct wined3d_box *box) { const struct wined3d_format *format = texture->resource.format; - unsigned int height = max(1, texture->resource.height >> level); - unsigned int width = max(1, texture->resource.width >> level); + unsigned int height = wined3d_texture_get_level_height(texture, level); + unsigned int width = wined3d_texture_get_level_width(texture, level); unsigned int width_mask, height_mask;
if ((box->left >= box->right) @@ -1709,9 +1709,9 @@ HRESULT CDECL wined3d_texture_get_sub_resource_desc(const struct wined3d_texture desc->pool = resource->pool;
level_idx = sub_resource_idx % texture->level_count; - desc->width = max(1, resource->width >> level_idx); - desc->height = max(1, resource->height >> level_idx); - desc->depth = max(1, resource->depth >> level_idx); + desc->width = wined3d_texture_get_level_width(texture, level_idx); + desc->height = wined3d_texture_get_level_height(texture, level_idx); + desc->depth = wined3d_texture_get_level_depth(texture, level_idx); desc->size = texture->sub_resources[sub_resource_idx].resource->size;
return WINED3D_OK; diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 64a4d88..57e6e3f 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2414,6 +2414,24 @@ static inline struct gl_texture *wined3d_texture_get_gl_texture(struct wined3d_t return srgb ? &texture->texture_srgb : &texture->texture_rgb; }
+static inline unsigned int wined3d_texture_get_level_width(const struct wined3d_texture *texture, + unsigned int level) +{ + return max(1, texture->resource.width >> level); +} + +static inline unsigned int wined3d_texture_get_level_height(const struct wined3d_texture *texture, + unsigned int level) +{ + return max(1, texture->resource.height >> level); +} + +static inline unsigned int wined3d_texture_get_level_depth(const struct wined3d_texture *texture, + unsigned int level) +{ + return max(1, texture->resource.depth >> level); +} + void wined3d_texture_apply_sampler_desc(struct wined3d_texture *texture, const struct wined3d_sampler_desc *sampler_desc, const struct wined3d_context *context) DECLSPEC_HIDDEN; void wined3d_texture_bind(struct wined3d_texture *texture,