Stefan Dösinger : d3d: Calculate the size of WINED3DFVF_XYZBx FVFs.

Alexandre Julliard julliard at wine.codeweavers.com
Thu May 3 08:57:08 CDT 2007


Module: wine
Branch: master
Commit: d913744f1eff5002b50be0cf1b20a2352c09d8ea
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d913744f1eff5002b50be0cf1b20a2352c09d8ea

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Wed Apr 25 00:38:32 2007 +0200

d3d: Calculate the size of WINED3DFVF_XYZBx FVFs.

---

 dlls/ddraw/utils.c   |    9 +++++++--
 dlls/wined3d/utils.c |    9 +++++++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/dlls/ddraw/utils.c b/dlls/ddraw/utils.c
index 204342a..07b386c 100644
--- a/dlls/ddraw/utils.c
+++ b/dlls/ddraw/utils.c
@@ -894,9 +894,14 @@ get_flexible_vertex_size(DWORD d3dvtVertexType)
     if (d3dvtVertexType & D3DFVF_RESERVED1) size += sizeof(DWORD);
     switch (d3dvtVertexType & D3DFVF_POSITION_MASK)
     {
-        case D3DFVF_XYZ: size += 3 * sizeof(D3DVALUE); break;
+        case D3DFVF_XYZ:    size += 3 * sizeof(D3DVALUE); break;
         case D3DFVF_XYZRHW: size += 4 * sizeof(D3DVALUE); break;
-        default: TRACE(" matrix weighting not handled yet...\n");
+        case D3DFVF_XYZB1:  size += 4 * sizeof(D3DVALUE); break;
+        case D3DFVF_XYZB2:  size += 5 * sizeof(D3DVALUE); break;
+        case D3DFVF_XYZB3:  size += 6 * sizeof(D3DVALUE); break;
+        case D3DFVF_XYZB4:  size += 7 * sizeof(D3DVALUE); break;
+        case D3DFVF_XYZB5:  size += 8 * sizeof(D3DVALUE); break;
+        default: ERR("Unexpected position mask\n");
     }
     for (i = 0; i < GET_TEXCOUNT_FROM_FVF(d3dvtVertexType); i++)
     {
diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index b39f648..9ab4e76 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -2488,9 +2488,14 @@ DWORD get_flexible_vertex_size(DWORD d3dvtVertexType) {
     if (d3dvtVertexType & WINED3DFVF_SPECULAR) size += sizeof(DWORD);
     if (d3dvtVertexType & WINED3DFVF_PSIZE) size += sizeof(DWORD);
     switch (d3dvtVertexType & WINED3DFVF_POSITION_MASK) {
-        case WINED3DFVF_XYZ: size += 3 * sizeof(float); break;
+        case WINED3DFVF_XYZ:    size += 3 * sizeof(float); break;
         case WINED3DFVF_XYZRHW: size += 4 * sizeof(float); break;
-        default: TRACE(" matrix weighting not handled yet...\n");
+        case WINED3DFVF_XYZB1:  size += 4 * sizeof(float); break;
+        case WINED3DFVF_XYZB2:  size += 5 * sizeof(float); break;
+        case WINED3DFVF_XYZB3:  size += 6 * sizeof(float); break;
+        case WINED3DFVF_XYZB4:  size += 7 * sizeof(float); break;
+        case WINED3DFVF_XYZB5:  size += 8 * sizeof(float); break;
+        default: ERR("Unexpected position mask\n");
     }
     for (i = 0; i < numTextures; i++) {
         size += GET_TEXCOORD_SIZE_FROM_FVF(d3dvtVertexType, i) * sizeof(float);




More information about the wine-cvs mailing list