[PATCH] WineD3D: Fix the num blend values -> type match=0A=
Stefan Doesinger
stefan at codeweavers.com
Mon Nov 3 00:38:14 CST 2008
=0A=
The old code works, but I think it is ugly. Furthermore it=0A=
contains an implicit cast from a DWORD to a BYTE.=0A=
---=0A=
dlls/d3d9/vertexdeclaration.c | 12 ++++++++++--=0A=
dlls/wined3d/device.c | 12 ++++++++++--=0A=
2 files changed, 20 insertions(+), 4 deletions(-)=0A=
=0A=
diff --git a/dlls/d3d9/vertexdeclaration.c =
b/dlls/d3d9/vertexdeclaration.c=0A=
index 42b46ce..4631248 100644=0A=
--- a/dlls/d3d9/vertexdeclaration.c=0A=
+++ b/dlls/d3d9/vertexdeclaration.c=0A=
@@ -106,8 +106,16 @@ HRESULT vdecl_convert_fvf(=0A=
if (has_blend && (num_blends > 0)) {=0A=
if (((fvf & D3DFVF_XYZB5) =3D=3D D3DFVF_XYZB2) && (fvf & =
D3DFVF_LASTBETA_D3DCOLOR))=0A=
elements[idx].Type =3D D3DDECLTYPE_D3DCOLOR;=0A=
- else=0A=
- elements[idx].Type =3D D3DDECLTYPE_FLOAT1 + num_blends - 1;=0A=
+ else {=0A=
+ switch(num_blends) {=0A=
+ case 1: elements[idx].Type =3D D3DDECLTYPE_FLOAT1; =
break;=0A=
+ case 2: elements[idx].Type =3D D3DDECLTYPE_FLOAT2; =
break;=0A=
+ case 3: elements[idx].Type =3D D3DDECLTYPE_FLOAT3; =
break;=0A=
+ case 4: elements[idx].Type =3D D3DDECLTYPE_FLOAT4; =
break;=0A=
+ default:=0A=
+ ERR("Unexpected amount of blend values: %u\n", =
num_blends);=0A=
+ }=0A=
+ }=0A=
elements[idx].Usage =3D D3DDECLUSAGE_BLENDWEIGHT;=0A=
elements[idx].UsageIndex =3D 0;=0A=
idx++;=0A=
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c=0A=
index 6307950..83bc436 100644=0A=
--- a/dlls/wined3d/device.c=0A=
+++ b/dlls/wined3d/device.c=0A=
@@ -1792,8 +1792,16 @@ static unsigned int =
ConvertFvfToDeclaration(IWineD3DDeviceImpl *This, /* For the=0A=
if (has_blend && (num_blends > 0)) {=0A=
if (((fvf & WINED3DFVF_XYZB5) =3D=3D WINED3DFVF_XYZB2) && (fvf =
& WINED3DFVF_LASTBETA_D3DCOLOR))=0A=
elements[idx].Type =3D WINED3DDECLTYPE_D3DCOLOR;=0A=
- else=0A=
- elements[idx].Type =3D WINED3DDECLTYPE_FLOAT1 + num_blends =
- 1;=0A=
+ else {=0A=
+ switch(num_blends) {=0A=
+ case 1: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT1; =
break;=0A=
+ case 2: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT2; =
break;=0A=
+ case 3: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT3; =
break;=0A=
+ case 4: elements[idx].Type =3D WINED3DDECLTYPE_FLOAT4; =
break;=0A=
+ default:=0A=
+ ERR("Unexpected amount of blend values: %u\n", =
num_blends);=0A=
+ }=0A=
+ }=0A=
elements[idx].Usage =3D WINED3DDECLUSAGE_BLENDWEIGHT;=0A=
elements[idx].UsageIndex =3D 0;=0A=
idx++;=0A=
-- =0A=
1.5.6.4=0A=
=0A=
------=_NextPart_000_0013_01C93DE3.B0153460--
More information about the wine-patches
mailing list