ddraw: Accept the d3d1 and d3d2 versions of D3DFINDDEVICERESULT in ddraw_find_device().
Based off a patch by Michael Müller. Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
8577ff54ad
commit
96ba1bc478
|
@ -25,6 +25,8 @@
|
|||
#include "wine/port.h"
|
||||
|
||||
#include "ddraw_private.h"
|
||||
#include "ddrawi.h"
|
||||
#include "d3dhal.h"
|
||||
|
||||
#include "wine/exception.h"
|
||||
|
||||
|
@ -4019,20 +4021,44 @@ static HRESULT WINAPI d3d1_CreateViewport(IDirect3D *iface, IDirect3DViewport **
|
|||
}
|
||||
|
||||
static HRESULT ddraw_find_device(struct ddraw *ddraw, const D3DFINDDEVICESEARCH *fds, D3DFINDDEVICERESULT *fdr,
|
||||
unsigned int guid_count, const GUID * const *guids)
|
||||
unsigned int guid_count, const GUID * const *guids, DWORD device_desc_size)
|
||||
{
|
||||
struct ddraw_find_device_result_v1
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V1 hw_desc;
|
||||
D3DDEVICEDESC_V1 sw_desc;
|
||||
} *fdr1;
|
||||
struct ddraw_find_device_result_v2
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V2 hw_desc;
|
||||
D3DDEVICEDESC_V2 sw_desc;
|
||||
} *fdr2;
|
||||
D3DDEVICEDESC7 desc7;
|
||||
D3DDEVICEDESC desc1;
|
||||
unsigned int i;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("ddraw %p, fds %p, fdr %p, guid_count %u, guids %p.\n", ddraw, fds, fdr, guid_count, guids);
|
||||
TRACE("ddraw %p, fds %p, fdr %p, guid_count %u, guids %p, device_desc_size %u.\n",
|
||||
ddraw, fds, fdr, guid_count, guids, device_desc_size);
|
||||
|
||||
if (!fds || !fdr)
|
||||
return DDERR_INVALIDPARAMS;
|
||||
|
||||
if (fds->dwSize != sizeof(*fds) || fdr->dwSize != sizeof(*fdr))
|
||||
if (fds->dwSize != sizeof(*fds))
|
||||
{
|
||||
WARN("Got invalid search structure size %u.\n", fds->dwSize);
|
||||
return DDERR_INVALIDPARAMS;
|
||||
}
|
||||
|
||||
if (fdr->dwSize != sizeof(*fdr) && fdr->dwSize != sizeof(*fdr2) && fdr->dwSize != sizeof(*fdr1))
|
||||
{
|
||||
WARN("Got invalid result structure size %u.\n", fdr->dwSize);
|
||||
return DDERR_INVALIDPARAMS;
|
||||
}
|
||||
|
||||
if (fds->dwFlags & D3DFDS_COLORMODEL)
|
||||
WARN("Ignoring colour model %#x.\n", fds->dcmColorModel);
|
||||
|
@ -4066,8 +4092,33 @@ static HRESULT ddraw_find_device(struct ddraw *ddraw, const D3DFINDDEVICESEARCH
|
|||
/* Now return our own GUID */
|
||||
ddraw_d3dcaps1_from_7(&desc1, &desc7);
|
||||
fdr->guid = IID_D3DDEVICE_WineD3D;
|
||||
|
||||
/* Note that "device_desc_size" doesn't necessarily have any relation to
|
||||
* the actual structure size. However, this matches the behaviour of
|
||||
* Windows since at least Windows 2000. */
|
||||
if (fdr->dwSize == sizeof(*fdr1))
|
||||
{
|
||||
fdr1 = (struct ddraw_find_device_result_v1 *)fdr;
|
||||
memcpy(&fdr1->hw_desc, &desc1, sizeof(fdr1->hw_desc));
|
||||
fdr1->hw_desc.dwSize = device_desc_size;
|
||||
memcpy(&fdr1->sw_desc, &desc1, sizeof(fdr1->sw_desc));
|
||||
fdr1->sw_desc.dwSize = device_desc_size;
|
||||
}
|
||||
else if (fdr->dwSize == sizeof(*fdr2))
|
||||
{
|
||||
fdr2 = (struct ddraw_find_device_result_v2 *)fdr;
|
||||
memcpy(&fdr2->hw_desc, &desc1, sizeof(fdr2->hw_desc));
|
||||
fdr2->hw_desc.dwSize = device_desc_size;
|
||||
memcpy(&fdr2->sw_desc, &desc1, sizeof(fdr2->sw_desc));
|
||||
fdr2->sw_desc.dwSize = device_desc_size;
|
||||
}
|
||||
else
|
||||
{
|
||||
fdr->ddHwDesc = desc1;
|
||||
fdr->ddHwDesc.dwSize = device_desc_size;
|
||||
fdr->ddSwDesc = desc1;
|
||||
fdr->ddSwDesc.dwSize = device_desc_size;
|
||||
}
|
||||
|
||||
TRACE("Returning Wine's wined3d device with (undumped) capabilities.\n");
|
||||
|
||||
|
@ -4086,7 +4137,7 @@ static HRESULT WINAPI d3d3_FindDevice(IDirect3D3 *iface, D3DFINDDEVICESEARCH *fd
|
|||
|
||||
TRACE("iface %p, fds %p, fdr %p.\n", iface, fds, fdr);
|
||||
|
||||
return ddraw_find_device(ddraw, fds, fdr, ARRAY_SIZE(guids), guids);
|
||||
return ddraw_find_device(ddraw, fds, fdr, ARRAY_SIZE(guids), guids, sizeof(D3DDEVICEDESC_V3));
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3d2_FindDevice(IDirect3D2 *iface, D3DFINDDEVICESEARCH *fds, D3DFINDDEVICERESULT *fdr)
|
||||
|
@ -4103,7 +4154,7 @@ static HRESULT WINAPI d3d2_FindDevice(IDirect3D2 *iface, D3DFINDDEVICESEARCH *fd
|
|||
|
||||
TRACE("iface %p, fds %p, fdr %p.\n", iface, fds, fdr);
|
||||
|
||||
return ddraw_find_device(ddraw, fds, fdr, ARRAY_SIZE(guids), guids);
|
||||
return ddraw_find_device(ddraw, fds, fdr, ARRAY_SIZE(guids), guids, sizeof(D3DDEVICEDESC_V2));
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3d1_FindDevice(IDirect3D *iface, D3DFINDDEVICESEARCH *fds, D3DFINDDEVICERESULT *fdr)
|
||||
|
@ -4119,7 +4170,7 @@ static HRESULT WINAPI d3d1_FindDevice(IDirect3D *iface, D3DFINDDEVICESEARCH *fds
|
|||
|
||||
TRACE("iface %p, fds %p, fdr %p.\n", iface, fds, fdr);
|
||||
|
||||
return ddraw_find_device(ddraw, fds, fdr, ARRAY_SIZE(guids), guids);
|
||||
return ddraw_find_device(ddraw, fds, fdr, ARRAY_SIZE(guids), guids, sizeof(D3DDEVICEDESC_V1));
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
#include "wine/test.h"
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include "d3d.h"
|
||||
#include "ddrawi.h"
|
||||
#include "d3dhal.h"
|
||||
|
||||
static BOOL is_ddraw64 = sizeof(DWORD) != sizeof(DWORD *);
|
||||
static DEVMODEW registry_mode;
|
||||
|
@ -11724,6 +11725,22 @@ static void test_find_device(void)
|
|||
HWND window;
|
||||
HRESULT hr;
|
||||
|
||||
struct
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V1 hw_desc;
|
||||
D3DDEVICEDESC_V1 sw_desc;
|
||||
} result_v1;
|
||||
|
||||
struct
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V2 hw_desc;
|
||||
D3DDEVICEDESC_V2 sw_desc;
|
||||
} result_v2;
|
||||
|
||||
static const struct
|
||||
{
|
||||
const GUID *guid;
|
||||
|
@ -11761,6 +11778,10 @@ static void test_find_device(void)
|
|||
hr = IDirect3D_FindDevice(d3d, &search, &result);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result.dwSize == sizeof(result), "Got unexpected result size %u.\n", result.dwSize);
|
||||
ok(result.ddHwDesc.dwSize == sizeof(result_v1.hw_desc),
|
||||
"Got unexpected HW desc size %u.\n", result.ddHwDesc.dwSize);
|
||||
ok(result.ddSwDesc.dwSize == sizeof(result_v1.sw_desc),
|
||||
"Got unexpected SW desc size %u.\n", result.ddSwDesc.dwSize);
|
||||
|
||||
memset(&search, 0, sizeof(search));
|
||||
memset(&result, 0, sizeof(result));
|
||||
|
@ -11772,6 +11793,26 @@ static void test_find_device(void)
|
|||
hr = IDirect3D_FindDevice(d3d, &search, &result);
|
||||
ok(hr == DDERR_INVALIDPARAMS, "Got unexpected hr %#x.\n", hr);
|
||||
|
||||
search.dwSize = sizeof(search);
|
||||
|
||||
memset(&result_v1, 0, sizeof(result_v1));
|
||||
result_v1.size = sizeof(result_v1);
|
||||
hr = IDirect3D_FindDevice(d3d, &search, (D3DFINDDEVICERESULT *)&result_v1);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result_v1.hw_desc.dwSize == sizeof(result_v1.hw_desc),
|
||||
"Got unexpected HW desc size %u.\n", result_v1.hw_desc.dwSize);
|
||||
ok(result_v1.sw_desc.dwSize == sizeof(result_v1.sw_desc),
|
||||
"Got unexpected SW desc size %u.\n", result_v1.sw_desc.dwSize);
|
||||
|
||||
memset(&result_v2, 0, sizeof(result_v2));
|
||||
result_v2.size = sizeof(result_v2);
|
||||
hr = IDirect3D_FindDevice(d3d, &search, (D3DFINDDEVICERESULT *)&result_v2);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result_v2.hw_desc.dwSize == sizeof(result_v1.hw_desc),
|
||||
"Got unexpected HW desc size %u.\n", result_v2.hw_desc.dwSize);
|
||||
ok(result_v2.sw_desc.dwSize == sizeof(result_v1.sw_desc),
|
||||
"Got unexpected SW desc size %u.\n", result_v2.sw_desc.dwSize);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tests); ++i)
|
||||
{
|
||||
memset(&search, 0, sizeof(search));
|
||||
|
@ -11785,6 +11826,20 @@ static void test_find_device(void)
|
|||
hr = IDirect3D_FindDevice(d3d, &search, &result);
|
||||
ok(hr == tests[i].hr, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||
ok(result.dwSize == sizeof(result), "Test %u: Got unexpected result size %u.\n", i, result.dwSize);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(result.ddHwDesc.dwSize == sizeof(result_v1.hw_desc),
|
||||
"Test %u: Got unexpected HW desc size %u.\n", i, result.ddHwDesc.dwSize);
|
||||
ok(result.ddSwDesc.dwSize == sizeof(result_v1.sw_desc),
|
||||
"Test %u: Got unexpected SW desc size %u.\n", i, result.ddSwDesc.dwSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
ok(!result.ddHwDesc.dwSize,
|
||||
"Test %u: Got unexpected HW desc size %u.\n", i, result.ddHwDesc.dwSize);
|
||||
ok(!result.ddSwDesc.dwSize,
|
||||
"Test %u: Got unexpected SW desc size %u.\n", i, result.ddSwDesc.dwSize);
|
||||
}
|
||||
}
|
||||
|
||||
/* The HAL device can only be enumerated if hardware acceleration is present. */
|
||||
|
|
|
@ -24,7 +24,8 @@
|
|||
#include "wine/test.h"
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include "d3d.h"
|
||||
#include "ddrawi.h"
|
||||
#include "d3dhal.h"
|
||||
|
||||
static BOOL is_ddraw64 = sizeof(DWORD) != sizeof(DWORD *);
|
||||
static DEVMODEW registry_mode;
|
||||
|
@ -13006,6 +13007,22 @@ static void test_find_device(void)
|
|||
HWND window;
|
||||
HRESULT hr;
|
||||
|
||||
struct
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V1 hw_desc;
|
||||
D3DDEVICEDESC_V1 sw_desc;
|
||||
} result_v1;
|
||||
|
||||
struct
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V2 hw_desc;
|
||||
D3DDEVICEDESC_V2 sw_desc;
|
||||
} result_v2;
|
||||
|
||||
static const struct
|
||||
{
|
||||
const GUID *guid;
|
||||
|
@ -13043,6 +13060,10 @@ static void test_find_device(void)
|
|||
hr = IDirect3D2_FindDevice(d3d, &search, &result);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result.dwSize == sizeof(result), "Got unexpected result size %u.\n", result.dwSize);
|
||||
ok(result.ddHwDesc.dwSize == sizeof(result_v2.hw_desc),
|
||||
"Got unexpected HW desc size %u.\n", result.ddHwDesc.dwSize);
|
||||
ok(result.ddSwDesc.dwSize == sizeof(result_v2.sw_desc),
|
||||
"Got unexpected SW desc size %u.\n", result.ddSwDesc.dwSize);
|
||||
|
||||
memset(&search, 0, sizeof(search));
|
||||
memset(&result, 0, sizeof(result));
|
||||
|
@ -13054,6 +13075,26 @@ static void test_find_device(void)
|
|||
hr = IDirect3D2_FindDevice(d3d, &search, &result);
|
||||
ok(hr == DDERR_INVALIDPARAMS, "Got unexpected hr %#x.\n", hr);
|
||||
|
||||
search.dwSize = sizeof(search);
|
||||
|
||||
memset(&result_v1, 0, sizeof(result_v1));
|
||||
result_v1.size = sizeof(result_v1);
|
||||
hr = IDirect3D2_FindDevice(d3d, &search, (D3DFINDDEVICERESULT *)&result_v1);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result_v1.hw_desc.dwSize == sizeof(result_v2.hw_desc),
|
||||
"Got unexpected HW desc size %u.\n", result_v1.hw_desc.dwSize);
|
||||
ok(result_v1.sw_desc.dwSize == sizeof(result_v2.sw_desc),
|
||||
"Got unexpected SW desc size %u.\n", result_v1.sw_desc.dwSize);
|
||||
|
||||
memset(&result_v2, 0, sizeof(result_v2));
|
||||
result_v2.size = sizeof(result_v2);
|
||||
hr = IDirect3D2_FindDevice(d3d, &search, (D3DFINDDEVICERESULT *)&result_v2);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result_v2.hw_desc.dwSize == sizeof(result_v2.hw_desc),
|
||||
"Got unexpected HW desc size %u.\n", result_v2.hw_desc.dwSize);
|
||||
ok(result_v2.sw_desc.dwSize == sizeof(result_v2.sw_desc),
|
||||
"Got unexpected SW desc size %u.\n", result_v2.sw_desc.dwSize);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tests); ++i)
|
||||
{
|
||||
memset(&search, 0, sizeof(search));
|
||||
|
@ -13067,6 +13108,20 @@ static void test_find_device(void)
|
|||
hr = IDirect3D2_FindDevice(d3d, &search, &result);
|
||||
ok(hr == tests[i].hr, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||
ok(result.dwSize == sizeof(result), "Test %u: Got unexpected result size %u.\n", i, result.dwSize);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(result.ddHwDesc.dwSize == sizeof(result_v2.hw_desc),
|
||||
"Test %u: Got unexpected HW desc size %u.\n", i, result.ddHwDesc.dwSize);
|
||||
ok(result.ddSwDesc.dwSize == sizeof(result_v2.sw_desc),
|
||||
"Test %u: Got unexpected SW desc size %u.\n", i, result.ddSwDesc.dwSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
ok(!result.ddHwDesc.dwSize,
|
||||
"Test %u: Got unexpected HW desc size %u.\n", i, result.ddHwDesc.dwSize);
|
||||
ok(!result.ddSwDesc.dwSize,
|
||||
"Test %u: Got unexpected SW desc size %u.\n", i, result.ddSwDesc.dwSize);
|
||||
}
|
||||
}
|
||||
|
||||
/* The HAL device can only be enumerated if hardware acceleration is present. */
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
#include "wine/test.h"
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include "d3d.h"
|
||||
#include "ddrawi.h"
|
||||
#include "d3dhal.h"
|
||||
|
||||
HRESULT WINAPI GetSurfaceFromDC(HDC dc, struct IDirectDrawSurface **surface, HDC *device_dc);
|
||||
|
||||
|
@ -15100,6 +15101,22 @@ static void test_find_device(void)
|
|||
HWND window;
|
||||
HRESULT hr;
|
||||
|
||||
struct
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V1 hw_desc;
|
||||
D3DDEVICEDESC_V1 sw_desc;
|
||||
} result_v1;
|
||||
|
||||
struct
|
||||
{
|
||||
DWORD size;
|
||||
GUID guid;
|
||||
D3DDEVICEDESC_V2 hw_desc;
|
||||
D3DDEVICEDESC_V2 sw_desc;
|
||||
} result_v2;
|
||||
|
||||
static const struct
|
||||
{
|
||||
const GUID *guid;
|
||||
|
@ -15137,6 +15154,10 @@ static void test_find_device(void)
|
|||
hr = IDirect3D3_FindDevice(d3d, &search, &result);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result.dwSize == sizeof(result), "Got unexpected result size %u.\n", result.dwSize);
|
||||
ok(result.ddHwDesc.dwSize == sizeof(result.ddHwDesc),
|
||||
"Got unexpected HW desc size %u.\n", result.ddHwDesc.dwSize);
|
||||
ok(result.ddSwDesc.dwSize == sizeof(result.ddSwDesc),
|
||||
"Got unexpected SW desc size %u.\n", result.ddSwDesc.dwSize);
|
||||
|
||||
memset(&search, 0, sizeof(search));
|
||||
memset(&result, 0, sizeof(result));
|
||||
|
@ -15148,6 +15169,26 @@ static void test_find_device(void)
|
|||
hr = IDirect3D3_FindDevice(d3d, &search, &result);
|
||||
ok(hr == DDERR_INVALIDPARAMS, "Got unexpected hr %#x.\n", hr);
|
||||
|
||||
search.dwSize = sizeof(search);
|
||||
|
||||
memset(&result_v1, 0, sizeof(result_v1));
|
||||
result_v1.size = sizeof(result_v1);
|
||||
hr = IDirect3D3_FindDevice(d3d, &search, (D3DFINDDEVICERESULT *)&result_v1);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result_v1.hw_desc.dwSize == sizeof(result.ddHwDesc),
|
||||
"Got unexpected HW desc size %u.\n", result_v1.hw_desc.dwSize);
|
||||
ok(result_v1.sw_desc.dwSize == sizeof(result.ddSwDesc),
|
||||
"Got unexpected SW desc size %u.\n", result_v1.sw_desc.dwSize);
|
||||
|
||||
memset(&result_v2, 0, sizeof(result_v2));
|
||||
result_v2.size = sizeof(result_v2);
|
||||
hr = IDirect3D3_FindDevice(d3d, &search, (D3DFINDDEVICERESULT *)&result_v2);
|
||||
ok(hr == D3D_OK, "Got unexpected hr %#x.\n", hr);
|
||||
ok(result_v2.hw_desc.dwSize == sizeof(result.ddHwDesc),
|
||||
"Got unexpected HW desc size %u.\n", result_v2.hw_desc.dwSize);
|
||||
ok(result_v2.sw_desc.dwSize == sizeof(result.ddSwDesc),
|
||||
"Got unexpected SW desc size %u.\n", result_v2.sw_desc.dwSize);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(tests); ++i)
|
||||
{
|
||||
memset(&search, 0, sizeof(search));
|
||||
|
@ -15161,6 +15202,20 @@ static void test_find_device(void)
|
|||
hr = IDirect3D3_FindDevice(d3d, &search, &result);
|
||||
ok(hr == tests[i].hr, "Test %u: Got unexpected hr %#x.\n", i, hr);
|
||||
ok(result.dwSize == sizeof(result), "Test %u: Got unexpected result size %u.\n", i, result.dwSize);
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
ok(result.ddHwDesc.dwSize == sizeof(result.ddHwDesc),
|
||||
"Test %u: Got unexpected HW desc size %u.\n", i, result.ddHwDesc.dwSize);
|
||||
ok(result.ddSwDesc.dwSize == sizeof(result.ddSwDesc),
|
||||
"Test %u: Got unexpected SW desc size %u.\n", i, result.ddSwDesc.dwSize);
|
||||
}
|
||||
else
|
||||
{
|
||||
ok(!result.ddHwDesc.dwSize,
|
||||
"Test %u: Got unexpected HW desc size %u.\n", i, result.ddHwDesc.dwSize);
|
||||
ok(!result.ddSwDesc.dwSize,
|
||||
"Test %u: Got unexpected SW desc size %u.\n", i, result.ddSwDesc.dwSize);
|
||||
}
|
||||
}
|
||||
|
||||
/* The HAL device can only be enumerated if hardware acceleration is present. */
|
||||
|
|
|
@ -47,6 +47,75 @@ typedef struct _D3DDeviceDesc_V1 {
|
|||
DWORD dwMaxVertexCount;
|
||||
} D3DDEVICEDESC_V1,*LPD3DDEVICEDESC_V1;
|
||||
|
||||
typedef struct _D3DDeviceDesc_V2
|
||||
{
|
||||
DWORD dwSize;
|
||||
DWORD dwFlags;
|
||||
D3DCOLORMODEL dcmColorModel;
|
||||
DWORD dwDevCaps;
|
||||
D3DTRANSFORMCAPS dtcTransformCaps;
|
||||
BOOL bClipping;
|
||||
D3DLIGHTINGCAPS dlcLightingCaps;
|
||||
D3DPRIMCAPS dpcLineCaps;
|
||||
D3DPRIMCAPS dpcTriCaps;
|
||||
DWORD dwDeviceRenderBitDepth;
|
||||
DWORD dwDeviceZBufferBitDepth;
|
||||
DWORD dwMaxBufferSize;
|
||||
DWORD dwMaxVertexCount;
|
||||
|
||||
/* DirectX 5 */
|
||||
DWORD dwMinTextureWidth;
|
||||
DWORD dwMinTextureHeight;
|
||||
DWORD dwMaxTextureWidth;
|
||||
DWORD dwMaxTextureHeight;
|
||||
DWORD dwMinStippleWidth;
|
||||
DWORD dwMaxStippleWidth;
|
||||
DWORD dwMinStippleHeight;
|
||||
DWORD dwMaxStippleHeight;
|
||||
} D3DDEVICEDESC_V2, *LPD3DDEVICEDESC_V2;
|
||||
|
||||
typedef struct _D3DDeviceDesc_V3
|
||||
{
|
||||
DWORD dwSize;
|
||||
DWORD dwFlags;
|
||||
D3DCOLORMODEL dcmColorModel;
|
||||
DWORD dwDevCaps;
|
||||
D3DTRANSFORMCAPS dtcTransformCaps;
|
||||
BOOL bClipping;
|
||||
D3DLIGHTINGCAPS dlcLightingCaps;
|
||||
D3DPRIMCAPS dpcLineCaps;
|
||||
D3DPRIMCAPS dpcTriCaps;
|
||||
DWORD dwDeviceRenderBitDepth;
|
||||
DWORD dwDeviceZBufferBitDepth;
|
||||
DWORD dwMaxBufferSize;
|
||||
DWORD dwMaxVertexCount;
|
||||
|
||||
/* DirectX 5 */
|
||||
DWORD dwMinTextureWidth;
|
||||
DWORD dwMinTextureHeight;
|
||||
DWORD dwMaxTextureWidth;
|
||||
DWORD dwMaxTextureHeight;
|
||||
DWORD dwMinStippleWidth;
|
||||
DWORD dwMaxStippleWidth;
|
||||
DWORD dwMinStippleHeight;
|
||||
DWORD dwMaxStippleHeight;
|
||||
|
||||
/* DirectX 6 */
|
||||
DWORD dwMaxTextureRepeat;
|
||||
DWORD dwMaxTextureAspectRatio;
|
||||
DWORD dwMaxAnisotropy;
|
||||
D3DVALUE dvGuardBandLeft;
|
||||
D3DVALUE dvGuardBandTop;
|
||||
D3DVALUE dvGuardBandRight;
|
||||
D3DVALUE dvGuardBandBottom;
|
||||
D3DVALUE dvExtentsAdjust;
|
||||
DWORD dwStencilCaps;
|
||||
DWORD dwFVFCaps;
|
||||
DWORD dwTextureOpCaps;
|
||||
WORD wMaxTextureBlendStages;
|
||||
WORD wMaxSimultaneousTextures;
|
||||
} D3DDEVICEDESC_V3, *LPD3DDEVICEDESC_V3;
|
||||
|
||||
typedef struct _D3DHAL_GLOBALDRIVERDATA {
|
||||
DWORD dwSize;
|
||||
D3DDEVICEDESC_V1 hwCaps;
|
||||
|
|
Loading…
Reference in New Issue