[WINED3D] Resend: Initialize volume format
Ivan Gyurdiev
ivg2 at cornell.edu
Wed May 10 12:55:02 CDT 2006
This is a resend. No changes were made.
Is anything wrong with this patch?
Changelog was:
=======================
Volumes make use of their currentDesc.Format field, which is never
initialized to anything. Instead that field appears to be maintained in
the common Resource superclass. If you look at the Surface class, you'll
see it has a pointer to the base Resource, and a WINED3DSURFACET_DESC -
which is equivalent to D3DSURFACE_DESC minus the resource fields.
This patch changes the volume class to use the same scheme - create a
WINED3DVOLUMET_DESC, and look up the format field in the resource
superclass [ where it is actually initialized. ]
With this patch D3DFORMAT_UNKNOWN errors disappear in the RollerCoaster
demo, and instead I see the correct format being detected as D3DFORMAT_L8.
-------------- next part --------------
---
dlls/wined3d/volume.c | 12 ++++++------
dlls/wined3d/wined3d_private.h | 9 ++++++++-
2 files changed, 14 insertions(+), 7 deletions(-)
5e5ae60cb8d16cce2bd4ac4775e3594b84b25abe
diff --git a/dlls/wined3d/volume.c b/dlls/wined3d/volume.c
index e8eaa0d..b6b435b 100644
--- a/dlls/wined3d/volume.c
+++ b/dlls/wined3d/volume.c
@@ -291,23 +291,23 @@ HRESULT WINAPI IWineD3DVolumeImpl_LoadTe
TRACE("Calling glTexImage3D %x level=%d, intfmt=%x, w=%d, h=%d,d=%d, 0=%d, glFmt=%x, glType=%x, Mem=%p\n",
GL_TEXTURE_3D,
gl_level,
- D3DFmt2GLIntFmt(myDevice, This->currentDesc.Format),
+ D3DFmt2GLIntFmt(myDevice, This->resource.format),
This->currentDesc.Width,
This->currentDesc.Height,
This->currentDesc.Depth,
0,
- D3DFmt2GLFmt(myDevice, This->currentDesc.Format),
- D3DFmt2GLType(myDevice, This->currentDesc.Format),
+ D3DFmt2GLFmt(myDevice, This->resource.format),
+ D3DFmt2GLType(myDevice, This->resource.format),
This->resource.allocatedMemory);
glTexImage3D(GL_TEXTURE_3D,
gl_level,
- D3DFmt2GLIntFmt(myDevice, This->currentDesc.Format),
+ D3DFmt2GLIntFmt(myDevice, This->resource.format),
This->currentDesc.Width,
This->currentDesc.Height,
This->currentDesc.Depth,
0,
- D3DFmt2GLFmt(myDevice, This->currentDesc.Format),
- D3DFmt2GLType(myDevice, This->currentDesc.Format),
+ D3DFmt2GLFmt(myDevice, This->resource.format),
+ D3DFmt2GLType(myDevice, This->resource.format),
This->resource.allocatedMemory);
checkGLcall("glTexImage3D");
return WINED3D_OK;
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 568cae4..126883a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -765,6 +765,13 @@ typedef struct IWineD3DCubeTextureImpl
extern const IWineD3DCubeTextureVtbl IWineD3DCubeTexture_Vtbl;
+typedef struct _WINED3DVOLUMET_DESC
+{
+ UINT Width;
+ UINT Height;
+ UINT Depth;
+} WINED3DVOLUMET_DESC;
+
/*****************************************************************************
* IWineD3DVolume implementation structure (extends IUnknown)
*/
@@ -775,7 +782,7 @@ typedef struct IWineD3DVolumeImpl
IWineD3DResourceClass resource;
/* WineD3DVolume Information */
- D3DVOLUME_DESC currentDesc;
+ WINED3DVOLUMET_DESC currentDesc;
IWineD3DBase *container;
UINT bytesPerPixel;
--
1.3.1
More information about the wine-patches
mailing list