From 1dcf222ab2b82938a4fad60d897ea80727fb24d5 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Thu, 12 Mar 2009 09:53:15 +0100 Subject: [PATCH] wined3d: Get rid of some calls to getFormatDescEntry(). Use the format description stored in the resource instead. --- dlls/wined3d/device.c | 27 ++++++++++----------------- dlls/wined3d/state.c | 5 ++--- dlls/wined3d/surface.c | 12 ++++-------- dlls/wined3d/volume.c | 3 +-- 4 files changed, 17 insertions(+), 30 deletions(-) diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 63f7352a736..683c9f427e2 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -911,8 +911,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateTexture(IWineD3DDevice *iface, HRESULT hr; unsigned int pow2Width; unsigned int pow2Height; - const struct GlPixelFormatDesc *glDesc; - getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc); TRACE("(%p) : Width %d, Height %d, Levels %d, Usage %#x\n", This, Width, Height, Levels, Usage); TRACE("Format %#x (%s), Pool %#x, ppTexture %p, pSharedHandle %p, parent %p\n", @@ -1000,7 +998,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateTexture(IWineD3DDevice *iface, object->width = Width; object->height = Height; - if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) { + if (object->resource.format_desc->Flags & WINED3DFMT_FLAG_FILTERING) + { object->baseTexture.minMipLookup = minMipLookup; object->baseTexture.magLookup = magLookup; } else { @@ -1068,7 +1067,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateTexture(IWineD3DDevice *iface, tmpW = max(1, tmpW >> 1); tmpH = max(1, tmpH >> 1); } - object->baseTexture.shader_color_fixup = glDesc->color_fixup; + object->baseTexture.shader_color_fixup = object->resource.format_desc->color_fixup; object->baseTexture.internal_preload = texture_internal_preload; TRACE("(%p) : Created texture %p\n", This, object); @@ -1085,11 +1084,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolumeTexture(IWineD3DDevice *ifa UINT tmpW; UINT tmpH; UINT tmpD; - const struct GlPixelFormatDesc *glDesc; HRESULT hr; - getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc); - /* TODO: It should only be possible to create textures for formats that are reported as supported */ if (WINED3DFMT_UNKNOWN >= Format) { @@ -1157,7 +1153,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolumeTexture(IWineD3DDevice *ifa object->baseTexture.pow2Matrix[10] = 1.0; object->baseTexture.pow2Matrix[15] = 1.0; - if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) { + if (object->resource.format_desc->Flags & WINED3DFMT_FLAG_FILTERING) + { object->baseTexture.minMipLookup = minMipLookup; object->baseTexture.magLookup = magLookup; } else { @@ -1191,7 +1188,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolumeTexture(IWineD3DDevice *ifa tmpH = max(1, tmpH >> 1); tmpD = max(1, tmpD >> 1); } - object->baseTexture.shader_color_fixup = glDesc->color_fixup; + object->baseTexture.shader_color_fixup = object->resource.format_desc->color_fixup; object->baseTexture.internal_preload = volumetexture_internal_preload; *ppVolumeTexture = (IWineD3DVolumeTexture *) object; @@ -1270,8 +1267,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface UINT tmpW; HRESULT hr; unsigned int pow2EdgeLength; - const struct GlPixelFormatDesc *glDesc; - getFormatDescEntry(Format, &GLINFO_LOCATION, &glDesc); /* TODO: It should only be possible to create textures for formats that are reported as supported */ @@ -1352,7 +1347,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface object->baseTexture.pow2Matrix[15] = 1.0; } - if(glDesc->Flags & WINED3DFMT_FLAG_FILTERING) { + if (object->resource.format_desc->Flags & WINED3DFMT_FLAG_FILTERING) + { object->baseTexture.minMipLookup = minMipLookup; object->baseTexture.magLookup = magLookup; } else { @@ -1390,7 +1386,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface } tmpW = max(1, tmpW >> 1); } - object->baseTexture.shader_color_fixup = glDesc->color_fixup; + object->baseTexture.shader_color_fixup = object->resource.format_desc->color_fixup; object->baseTexture.internal_preload = cubetexture_internal_preload; TRACE("(%p) : Created Cube Texture %p\n", This, object); @@ -5806,7 +5802,6 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetFrontBufferData(IWineD3DDevice *if static HRESULT WINAPI IWineD3DDeviceImpl_ValidateDevice(IWineD3DDevice *iface, DWORD* pNumPasses) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; IWineD3DBaseTextureImpl *texture; - const struct GlPixelFormatDesc *gl_info; DWORD i; TRACE("(%p) : %p\n", This, pNumPasses); @@ -5822,9 +5817,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_ValidateDevice(IWineD3DDevice *iface, } texture = (IWineD3DBaseTextureImpl *) This->stateBlock->textures[i]; - if(!texture) continue; - getFormatDescEntry(texture->resource.format, &GLINFO_LOCATION, &gl_info); - if(gl_info->Flags & WINED3DFMT_FLAG_FILTERING) continue; + if (!texture || texture->resource.format_desc->Flags & WINED3DFMT_FLAG_FILTERING) continue; if(This->stateBlock->samplerState[i][WINED3DSAMP_MAGFILTER] != WINED3DTEXF_POINT) { WARN("Non-filterable texture and mag filter enabled on samper %u, returning E_FAIL\n", i); diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index c8f252f563f..390bed093c0 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -243,12 +243,11 @@ static void state_blend(DWORD state, IWineD3DStateBlockImpl *stateblock, WineD3D if (stateblock->renderState[WINED3DRS_ALPHABLENDENABLE] || stateblock->renderState[WINED3DRS_EDGEANTIALIAS] || stateblock->renderState[WINED3DRS_ANTIALIASEDLINEENABLE]) { - const struct GlPixelFormatDesc *glDesc; - getFormatDescEntry(target->resource.format, &GLINFO_LOCATION, &glDesc); /* Disable blending in all cases even without pixelshaders. With blending on we could face a big performance penalty. * The d3d9 visual test confirms the behavior. */ - if(!(glDesc->Flags & WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING)) { + if (!(target->resource.format_desc->Flags & WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING)) + { glDisable(GL_BLEND); checkGLcall("glDisable GL_BLEND"); return; diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index f2ad9eb630f..c4c0b4b7fd3 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -445,12 +445,10 @@ void surface_set_compatible_renderbuffer(IWineD3DSurface *iface, unsigned int wi } if (!renderbuffer) { - const struct GlPixelFormatDesc *glDesc; - getFormatDescEntry(This->resource.format, &GLINFO_LOCATION, &glDesc); - GL_EXTCALL(glGenRenderbuffersEXT(1, &renderbuffer)); GL_EXTCALL(glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffer)); - GL_EXTCALL(glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, glDesc->glInternal, width, height)); + GL_EXTCALL(glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, + This->resource.format_desc->glInternal, width, height)); entry = HeapAlloc(GetProcessHeap(), 0, sizeof(renderbuffer_entry_t)); entry->width = width; @@ -1604,9 +1602,8 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_ReleaseDC(IWineD3DSurface *iface, HDC HRESULT d3dfmt_get_conv(IWineD3DSurfaceImpl *This, BOOL need_alpha_ck, BOOL use_texturing, GLenum *format, GLenum *internal, GLenum *type, CONVERT_TYPES *convert, int *target_bpp, BOOL srgb_mode) { BOOL colorkey_active = need_alpha_ck && (This->CKeyFlags & WINEDDSD_CKSRCBLT); - const struct GlPixelFormatDesc *glDesc; + const struct GlPixelFormatDesc *glDesc = This->resource.format_desc; IWineD3DDeviceImpl *device = This->resource.wineD3DDevice; - getFormatDescEntry(This->resource.format, &GLINFO_LOCATION, &glDesc); /* Default values: From the surface */ *format = glDesc->glFormat; @@ -3838,10 +3835,9 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_RealizePalette(IWineD3DSurface *iface) static HRESULT WINAPI IWineD3DSurfaceImpl_PrivateSetup(IWineD3DSurface *iface) { /** Check against the maximum texture sizes supported by the video card **/ IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface; + const struct GlPixelFormatDesc *glDesc = This->resource.format_desc; unsigned int pow2Width, pow2Height; - const struct GlPixelFormatDesc *glDesc; - getFormatDescEntry(This->resource.format, &GLINFO_LOCATION, &glDesc); /* Setup some glformat defaults */ This->glDescription.glFormat = glDesc->glFormat; This->glDescription.glFormatInternal = glDesc->glInternal; diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c index 4bae1cb8c26..c4bdb746c61 100644 --- a/dlls/wined3d/volume.c +++ b/dlls/wined3d/volume.c @@ -301,9 +301,8 @@ static HRESULT WINAPI IWineD3DVolumeImpl_SetContainer(IWineD3DVolume *iface, IWi static HRESULT WINAPI IWineD3DVolumeImpl_LoadTexture(IWineD3DVolume *iface, int gl_level, BOOL srgb_mode) { IWineD3DVolumeImpl *This = (IWineD3DVolumeImpl *)iface; + const struct GlPixelFormatDesc *glDesc = This->resource.format_desc; WINED3DFORMAT format = This->resource.format; - const struct GlPixelFormatDesc *glDesc; - getFormatDescEntry(format, &GLINFO_LOCATION, &glDesc); TRACE("(%p) : level %u, format %s (0x%08x)\n", This, gl_level, debug_d3dformat(format), format);