ddraw: Use wined3d_log2i() to calculate the level count in ddraw_surface_create().
This commit is contained in:
parent
f5939399f0
commit
af9ccb490a
|
@ -5817,14 +5817,7 @@ HRESULT ddraw_surface_create(struct ddraw *ddraw, const DDSURFACEDESC2 *surface_
|
||||||
{
|
{
|
||||||
/* Undocumented feature: Create sublevels until either the
|
/* Undocumented feature: Create sublevels until either the
|
||||||
* width or the height is 1. */
|
* width or the height is 1. */
|
||||||
DWORD min = desc->dwWidth < desc->dwHeight ? desc->dwWidth : desc->dwHeight;
|
desc->u2.dwMipMapCount = wined3d_log2i(min(desc->dwWidth, desc->dwHeight)) + 1;
|
||||||
|
|
||||||
desc->u2.dwMipMapCount = 0;
|
|
||||||
while (min)
|
|
||||||
{
|
|
||||||
++desc->u2.dwMipMapCount;
|
|
||||||
min >>= 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -3929,37 +3929,6 @@ const struct wine_rb_functions wined3d_ffp_vertex_program_rb_functions =
|
||||||
wined3d_ffp_vertex_program_key_compare,
|
wined3d_ffp_vertex_program_key_compare,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Return the integer base-2 logarithm of x. Undefined for x == 0. */
|
|
||||||
UINT wined3d_log2i(UINT32 x)
|
|
||||||
{
|
|
||||||
#ifdef HAVE___BUILTIN_CLZ
|
|
||||||
return __builtin_clz(x) ^ 0x1f;
|
|
||||||
#else
|
|
||||||
static const UINT l[] =
|
|
||||||
{
|
|
||||||
~0U, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
|
|
||||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
|
||||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
|
||||||
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
|
||||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
};
|
|
||||||
UINT32 i;
|
|
||||||
|
|
||||||
return (i = x >> 16) ? (x = i >> 8) ? l[x] + 24 : l[i] + 16 : (i = x >> 8) ? l[i] + 8 : l[x];
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
const struct blit_shader *wined3d_select_blitter(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op,
|
const struct blit_shader *wined3d_select_blitter(const struct wined3d_gl_info *gl_info, enum wined3d_blit_op blit_op,
|
||||||
const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format,
|
const RECT *src_rect, DWORD src_usage, enum wined3d_pool src_pool, const struct wined3d_format *src_format,
|
||||||
const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format)
|
const RECT *dst_rect, DWORD dst_usage, enum wined3d_pool dst_pool, const struct wined3d_format *dst_format)
|
||||||
|
|
|
@ -2824,7 +2824,6 @@ GLenum gl_primitive_type_from_d3d(enum wined3d_primitive_type primitive_type) DE
|
||||||
/* Math utils */
|
/* Math utils */
|
||||||
void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
|
void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
|
||||||
const struct wined3d_matrix *src2) DECLSPEC_HIDDEN;
|
const struct wined3d_matrix *src2) DECLSPEC_HIDDEN;
|
||||||
UINT wined3d_log2i(UINT32 x) DECLSPEC_HIDDEN;
|
|
||||||
unsigned int count_bits(unsigned int mask) DECLSPEC_HIDDEN;
|
unsigned int count_bits(unsigned int mask) DECLSPEC_HIDDEN;
|
||||||
|
|
||||||
void wined3d_release_dc(HWND window, HDC dc) DECLSPEC_HIDDEN;
|
void wined3d_release_dc(HWND window, HDC dc) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -26,6 +26,10 @@
|
||||||
#ifndef __WINE_WINED3D_H
|
#ifndef __WINE_WINED3D_H
|
||||||
#define __WINE_WINED3D_H
|
#define __WINE_WINED3D_H
|
||||||
|
|
||||||
|
#ifndef __WINE_CONFIG_H
|
||||||
|
# error You must include config.h to use this header
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "wine/list.h"
|
#include "wine/list.h"
|
||||||
|
|
||||||
#define WINED3D_OK S_OK
|
#define WINED3D_OK S_OK
|
||||||
|
@ -2555,4 +2559,35 @@ HRESULT __cdecl wined3d_volume_map(struct wined3d_volume *volume,
|
||||||
void __cdecl wined3d_volume_preload(struct wined3d_volume *volume);
|
void __cdecl wined3d_volume_preload(struct wined3d_volume *volume);
|
||||||
HRESULT __cdecl wined3d_volume_unmap(struct wined3d_volume *volume);
|
HRESULT __cdecl wined3d_volume_unmap(struct wined3d_volume *volume);
|
||||||
|
|
||||||
|
/* Return the integer base-2 logarithm of x. Undefined for x == 0. */
|
||||||
|
static inline unsigned int wined3d_log2i(unsigned int x)
|
||||||
|
{
|
||||||
|
#ifdef HAVE___BUILTIN_CLZ
|
||||||
|
return __builtin_clz(x) ^ 0x1f;
|
||||||
|
#else
|
||||||
|
static const unsigned int l[] =
|
||||||
|
{
|
||||||
|
~0u, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||||
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||||
|
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||||
|
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
|
||||||
|
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||||
|
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||||
|
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||||
|
6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
};
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
return (i = x >> 16) ? (x = i >> 8) ? l[x] + 24 : l[i] + 16 : (i = x >> 8) ? l[i] + 8 : l[x];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __WINE_WINED3D_H */
|
#endif /* __WINE_WINED3D_H */
|
||||||
|
|
Loading…
Reference in New Issue