Added a stubbed out version of query to d3d9 and wined3d.
Update the d3d9 headers and creates wined3d types where d3d9 and d3d8 are incompatible.
This commit is contained in:
parent
5be005b0d5
commit
7b261656fd
|
@ -2,7 +2,8 @@
|
|||
* Direct3D 9 private include file
|
||||
*
|
||||
* Copyright 2002-2003 Jason Edmeades
|
||||
* Raphael Junqueira
|
||||
* Copyright 2002-2003 Raphael Junqueira
|
||||
* Copyright 2005 Oliver Stieber
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -83,7 +84,7 @@ extern void (*wine_tsx11_unlock_ptr)(void);
|
|||
#define MAX_LEVELS 256
|
||||
|
||||
/* Other useful values */
|
||||
#define HIGHEST_RENDER_STATE 174
|
||||
#define HIGHEST_RENDER_STATE D3DRS_BLENDOPALPHA
|
||||
#define HIGHEST_TEXTURE_STATE 29
|
||||
#define HIGHEST_TRANSFORMSTATE 512
|
||||
#define D3DSBT_RECORDED 0xfffffffe
|
||||
|
@ -108,7 +109,6 @@ typedef struct IDirect3DStateBlock9Impl IDirect3DStateBlock9Impl;
|
|||
typedef struct IDirect3DVertexShader9Impl IDirect3DVertexShader9Impl;
|
||||
typedef struct IDirect3DPixelShader9Impl IDirect3DPixelShader9Impl;
|
||||
typedef struct IDirect3DVertexDeclaration9Impl IDirect3DVertexDeclaration9Impl;
|
||||
typedef struct IDirect3DQuery9Impl IDirect3DQuery9Impl;
|
||||
|
||||
|
||||
#define D3DCOLOR_R(dw) (((float) (((dw) >> 16) & 0xFF)) / 255.0f)
|
||||
|
@ -1108,26 +1108,15 @@ extern IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl;
|
|||
/*****************************************************************************
|
||||
* IDirect3DPixelShader implementation structure
|
||||
*/
|
||||
struct IDirect3DQuery9Impl {
|
||||
typedef struct IDirect3DQuery9Impl {
|
||||
/* IUnknown fields */
|
||||
IDirect3DQuery9Vtbl *lpVtbl;
|
||||
DWORD ref;
|
||||
|
||||
/* IDirect3DQuery9 fields */
|
||||
IDirect3DDevice9Impl* Device;
|
||||
};
|
||||
IWineD3DQuery *wineD3DQuery;
|
||||
} IDirect3DQuery9Impl;
|
||||
|
||||
/* IUnknown: */
|
||||
extern HRESULT WINAPI IDirect3DQuery9Impl_QueryInterface(LPDIRECT3DQUERY9 iface, REFIID riid, LPVOID* ppobj);
|
||||
extern ULONG WINAPI IDirect3DQuery9Impl_AddRef(LPDIRECT3DQUERY9 iface);
|
||||
extern ULONG WINAPI IDirect3DQuery9Impl_Release(LPDIRECT3DQUERY9 iface);
|
||||
|
||||
/* IDirect3DQuery9: */
|
||||
extern HRESULT WINAPI IDirect3DQuery9Impl_GetDevice(LPDIRECT3DQUERY9 iface, IDirect3DDevice9** ppDevice);
|
||||
extern D3DQUERYTYPE WINAPI IDirect3DQuery9Impl_GetType(LPDIRECT3DQUERY9 iface);
|
||||
extern DWORD WINAPI IDirect3DQuery9Impl_GetDataSize(LPDIRECT3DQUERY9 iface);
|
||||
extern HRESULT WINAPI IDirect3DQuery9Impl_Issue(LPDIRECT3DQUERY9 iface, DWORD dwIssueFlags);
|
||||
extern HRESULT WINAPI IDirect3DQuery9Impl_GetData(LPDIRECT3DQUERY9 iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags);
|
||||
|
||||
/* Callbacks */
|
||||
extern HRESULT WINAPI D3D9CB_CreateSurface(IUnknown *device, UINT Width, UINT Height,
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
* IDirect3DQuery9 implementation
|
||||
*
|
||||
* Copyright 2002-2003 Raphael Junqueira
|
||||
* Jason Edmeades
|
||||
* Copyright 2002-2003 Jason Edmeades
|
||||
* Copyright 2005 Oliver Stieber
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -22,15 +23,16 @@
|
|||
#include "config.h"
|
||||
#include "d3d9_private.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d3d);
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d3d9);
|
||||
|
||||
/* IDirect3DQuery9 IUnknown parts follow: */
|
||||
HRESULT WINAPI IDirect3DQuery9Impl_QueryInterface(LPDIRECT3DQUERY9 iface, REFIID riid, LPVOID* ppobj) {
|
||||
IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
|
||||
TRACE("(%p) Relay\n", This);
|
||||
|
||||
if (IsEqualGUID(riid, &IID_IUnknown)
|
||||
|| IsEqualGUID(riid, &IID_IDirect3DQuery9)) {
|
||||
IDirect3DQuery9Impl_AddRef(iface);
|
||||
IUnknown_AddRef(iface);
|
||||
*ppobj = This;
|
||||
return D3D_OK;
|
||||
}
|
||||
|
@ -44,7 +46,6 @@ ULONG WINAPI IDirect3DQuery9Impl_AddRef(LPDIRECT3DQUERY9 iface) {
|
|||
ULONG ref = InterlockedIncrement(&This->ref);
|
||||
|
||||
TRACE("(%p) : AddRef from %ld\n", This, ref - 1);
|
||||
|
||||
return ref;
|
||||
}
|
||||
|
||||
|
@ -63,34 +64,43 @@ ULONG WINAPI IDirect3DQuery9Impl_Release(LPDIRECT3DQUERY9 iface) {
|
|||
/* IDirect3DQuery9 Interface follow: */
|
||||
HRESULT WINAPI IDirect3DQuery9Impl_GetDevice(LPDIRECT3DQUERY9 iface, IDirect3DDevice9** ppDevice) {
|
||||
IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
|
||||
TRACE("(%p) : returning %p\n", This, This->Device);
|
||||
*ppDevice = (LPDIRECT3DDEVICE9) This->Device;
|
||||
IDirect3DDevice9Impl_AddRef(*ppDevice);
|
||||
return D3D_OK;
|
||||
IWineD3DDevice* pDevice;
|
||||
HRESULT hr;
|
||||
|
||||
TRACE("(%p) Relay\n", This);
|
||||
|
||||
hr = IWineD3DQuery_GetDevice(This->wineD3DQuery, &pDevice);
|
||||
if(hr != D3D_OK){
|
||||
*ppDevice = NULL;
|
||||
}else{
|
||||
hr = IWineD3DDevice_GetParent(pDevice, (IUnknown **)ppDevice);
|
||||
IWineD3DDevice_Release(pDevice);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
D3DQUERYTYPE WINAPI IDirect3DQuery9Impl_GetType(LPDIRECT3DQUERY9 iface) {
|
||||
IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
|
||||
FIXME("(%p) : stub\n", This);
|
||||
return 0;
|
||||
TRACE("(%p) Relay\n", This);
|
||||
return IWineD3DQuery_GetType(This->wineD3DQuery);
|
||||
}
|
||||
|
||||
DWORD WINAPI IDirect3DQuery9Impl_GetDataSize(LPDIRECT3DQUERY9 iface) {
|
||||
IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
|
||||
FIXME("(%p) : stub\n", This);
|
||||
return 0;
|
||||
TRACE("(%p) Relay\n", This);
|
||||
return IWineD3DQuery_GetDataSize(This->wineD3DQuery);
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirect3DQuery9Impl_Issue(LPDIRECT3DQUERY9 iface, DWORD dwIssueFlags) {
|
||||
IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
|
||||
FIXME("(%p) : stub\n", This);
|
||||
return D3D_OK;
|
||||
TRACE("(%p) Relay\n", This);
|
||||
return IWineD3DQuery_Issue(This->wineD3DQuery, dwIssueFlags);
|
||||
}
|
||||
|
||||
HRESULT WINAPI IDirect3DQuery9Impl_GetData(LPDIRECT3DQUERY9 iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags) {
|
||||
IDirect3DQuery9Impl *This = (IDirect3DQuery9Impl *)iface;
|
||||
FIXME("(%p) : stub\n", This);
|
||||
return D3D_OK;
|
||||
TRACE("(%p) Relay\n", This);
|
||||
return IWineD3DQuery_GetData(This->wineD3DQuery, pData, dwSize, dwGetDataFlags);
|
||||
}
|
||||
|
||||
|
||||
|
@ -109,12 +119,11 @@ IDirect3DQuery9Vtbl Direct3DQuery9_Vtbl =
|
|||
|
||||
/* IDirect3DDevice9 IDirect3DQuery9 Methods follow: */
|
||||
HRESULT WINAPI IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUERYTYPE Type, IDirect3DQuery9** ppQuery) {
|
||||
#if 0
|
||||
IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)iface;
|
||||
#endif
|
||||
IDirect3DQuery9Impl *object = NULL;
|
||||
HRESULT hr = D3D_OK;
|
||||
|
||||
TRACE("(%p) Relay\n", This);
|
||||
if (NULL == ppQuery) {
|
||||
return D3DERR_INVALIDCALL;
|
||||
}
|
||||
|
@ -128,8 +137,7 @@ HRESULT WINAPI IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUER
|
|||
|
||||
object->lpVtbl = &Direct3DQuery9_Vtbl;
|
||||
object->ref = 1;
|
||||
#if 0
|
||||
hr = IWineD3DDevice_CreateQuery(This->WineD3DDevice, 9, pVertexElements, &(object->wineD3DQuery));
|
||||
hr = IWineD3DDevice_CreateQuery(This->WineD3DDevice, Type, &(object->wineD3DQuery), (IUnknown*)object);
|
||||
|
||||
if (FAILED(hr)) {
|
||||
/* free up object */
|
||||
|
@ -139,6 +147,6 @@ HRESULT WINAPI IDirect3DDevice9Impl_CreateQuery(LPDIRECT3DDEVICE9 iface, D3DQUER
|
|||
} else {
|
||||
*ppQuery = (LPDIRECT3DQUERY9) object;
|
||||
}
|
||||
#endif
|
||||
TRACE("(%p) : returning %p \n", This, *ppQuery);
|
||||
return hr;
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@ C_SRCS = \
|
|||
directx.c \
|
||||
drawprim.c \
|
||||
indexbuffer.c \
|
||||
query.c \
|
||||
resource.c \
|
||||
stateblock.c \
|
||||
surface.c \
|
||||
|
|
|
@ -217,7 +217,7 @@ void WINAPI IWineD3DDeviceImpl_SetupTextureStates(IWineD3DDevice *iface, DWORD S
|
|||
/* Note the D3DRS value applies to all textures, but GL has one
|
||||
* per texture, so apply it now ready to be used!
|
||||
*/
|
||||
D3DCOLORTOGLFLOAT4(This->stateBlock->renderState[D3DRS_TEXTUREFACTOR], col);
|
||||
D3DCOLORTOGLFLOAT4(This->stateBlock->renderState[WINED3DRS_TEXTUREFACTOR], col);
|
||||
glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, &col[0]);
|
||||
checkGLcall("glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, color);");
|
||||
|
||||
|
@ -433,12 +433,12 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, UINT Wid
|
|||
* it is based around 4x4 pixel blocks it requires padding, so allocate enough
|
||||
* space!
|
||||
*********************************/
|
||||
if (Format == D3DFMT_DXT1) {
|
||||
if (Format == WINED3DFMT_DXT1) {
|
||||
/* DXT1 is half byte per pixel */
|
||||
object->currentDesc.Size = ((max(Width,4) * object->bytesPerPixel) * max(Height,4)) / 2;
|
||||
|
||||
} else if (Format == D3DFMT_DXT2 || Format == D3DFMT_DXT3 ||
|
||||
Format == D3DFMT_DXT4 || Format == D3DFMT_DXT5) {
|
||||
} else if (Format == WINED3DFMT_DXT2 || Format == WINED3DFMT_DXT3 ||
|
||||
Format == WINED3DFMT_DXT4 || Format == WINED3DFMT_DXT5) {
|
||||
object->currentDesc.Size = ((max(Width,4) * object->bytesPerPixel) * max(Height,4));
|
||||
} else {
|
||||
object->currentDesc.Size = (Width * object->bytesPerPixel) * Height;
|
||||
|
@ -491,7 +491,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, UINT Wid
|
|||
|
||||
|
||||
object->locked = FALSE;
|
||||
object->lockable = (D3DFMT_D16_LOCKABLE == Format) ? TRUE : Lockable;
|
||||
object->lockable = (WINED3DFMT_D16_LOCKABLE == Format) ? TRUE : Lockable;
|
||||
/* TODO: memory management */
|
||||
object->allocatedMemory = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,object->currentDesc.Size);
|
||||
if(object->allocatedMemory == NULL ) {
|
||||
|
@ -505,7 +505,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, UINT Wid
|
|||
IWineD3DSurface_CleanDirtyRect(*ppSurface);
|
||||
TRACE("(%p) : w(%d) h(%d) fmt(%d,%s) lockable(%d) surf@%p, surfmem@%p, %d bytes\n",
|
||||
This, Width, Height, Format, debug_d3dformat(Format),
|
||||
(D3DFMT_D16_LOCKABLE == Format), *ppSurface, object->allocatedMemory, object->currentDesc.Size);
|
||||
(WINED3DFMT_D16_LOCKABLE == Format), *ppSurface, object->allocatedMemory, object->currentDesc.Size);
|
||||
return D3D_OK;
|
||||
|
||||
}
|
||||
|
@ -754,50 +754,42 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateCubeTexture(IWineD3DDevice *iface, UINT
|
|||
return D3D_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface, D3DQUERYTYPE Type, void** ppQuery, IUnknown* parent){
|
||||
HRESULT WINAPI IWineD3DDeviceImpl_CreateQuery(IWineD3DDevice *iface, WINED3DQUERYTYPE Type, IWineD3DQuery **ppQuery, IUnknown* parent){
|
||||
IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface;
|
||||
IWineD3DQueryImpl *object; /*NOTE: impl ref allowed since this is a create function */
|
||||
|
||||
if(NULL == ppQuery){
|
||||
/* Just a check to see if we support this type of query */
|
||||
HRESULT hr = D3DERR_NOTAVAILABLE;
|
||||
#if 0 /* TODO: query support */
|
||||
/* Lie and say everything is good (we can return ok fake data from a stub) */
|
||||
switch(Type){
|
||||
case D3DQUERYTYPE_VCACHE:
|
||||
case D3DQUERYTYPE_RESOURCEMANAGER:
|
||||
case D3DQUERYTYPE_VERTEXSTATS:
|
||||
case D3DQUERYTYPE_EVENT:
|
||||
case D3DQUERYTYPE_OCCLUSION:
|
||||
case D3DQUERYTYPE_TIMESTAMP:
|
||||
case D3DQUERYTYPE_TIMESTAMPDISJOINT:
|
||||
case D3DQUERYTYPE_TIMESTAMPFREQ:
|
||||
case D3DQUERYTYPE_PIPELINETIMINGS:
|
||||
case D3DQUERYTYPE_INTERFACETIMINGS:
|
||||
case D3DQUERYTYPE_VERTEXTIMINGS:
|
||||
case D3DQUERYTYPE_PIXELTIMINGS:
|
||||
case D3DQUERYTYPE_BANDWIDTHTIMINGS:
|
||||
case D3DQUERYTYPE_CACHEUTILIZATION:
|
||||
case WINED3DQUERYTYPE_VCACHE:
|
||||
case WINED3DQUERYTYPE_RESOURCEMANAGER:
|
||||
case WINED3DQUERYTYPE_VERTEXSTATS:
|
||||
case WINED3DQUERYTYPE_EVENT:
|
||||
case WINED3DQUERYTYPE_OCCLUSION:
|
||||
case WINED3DQUERYTYPE_TIMESTAMP:
|
||||
case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
|
||||
case WINED3DQUERYTYPE_TIMESTAMPFREQ:
|
||||
case WINED3DQUERYTYPE_PIPELINETIMINGS:
|
||||
case WINED3DQUERYTYPE_INTERFACETIMINGS:
|
||||
case WINED3DQUERYTYPE_VERTEXTIMINGS:
|
||||
case WINED3DQUERYTYPE_PIXELTIMINGS:
|
||||
case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
|
||||
case WINED3DQUERYTYPE_CACHEUTILIZATION:
|
||||
hr = D3D_OK;
|
||||
break;
|
||||
default:
|
||||
FIXME("(%p) Unhandled query type %d\n",This , Type);
|
||||
}
|
||||
#endif
|
||||
FIXME("(%p) : Stub request for query type %d returned %ld\n", This, Type, hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
#if 0 /* TODO: query support */
|
||||
IWineD3DQueryImpl *object; /*NOTE: impl ref allowed since this is a create function */
|
||||
|
||||
D3DCREATEOBJECTINSTANCE(object, Query)
|
||||
object->type = Type;
|
||||
object->extendedData = 0;
|
||||
TRACE("(%p) : Created Query %p\n", This, object);
|
||||
#else
|
||||
*ppQuery = NULL;
|
||||
FIXME("(%p) : Stub\n",This);
|
||||
#endif
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
|
@ -1726,7 +1718,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetMaterial(IWineD3DDevice *iface, CONST WINED
|
|||
checkGLcall("glMaterialfv");
|
||||
|
||||
/* Only change material color if specular is enabled, otherwise it is set to black */
|
||||
if (This->stateBlock->renderState[D3DRS_SPECULARENABLE]) {
|
||||
if (This->stateBlock->renderState[WINED3DRS_SPECULARENABLE]) {
|
||||
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, (float*) &This->updateStateBlock->material.Specular);
|
||||
checkGLcall("glMaterialfv");
|
||||
} else {
|
||||
|
@ -1865,18 +1857,18 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
ENTER_GL();
|
||||
|
||||
switch (State) {
|
||||
case D3DRS_FILLMODE :
|
||||
case WINED3DRS_FILLMODE :
|
||||
switch ((D3DFILLMODE) Value) {
|
||||
case D3DFILL_POINT : glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); break;
|
||||
case D3DFILL_WIREFRAME : glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); break;
|
||||
case D3DFILL_SOLID : glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); break;
|
||||
default:
|
||||
FIXME("Unrecognized D3DRS_FILLMODE value %ld\n", Value);
|
||||
FIXME("Unrecognized WINED3DRS_FILLMODE value %ld\n", Value);
|
||||
}
|
||||
checkGLcall("glPolygonMode (fillmode)");
|
||||
break;
|
||||
|
||||
case D3DRS_LIGHTING :
|
||||
case WINED3DRS_LIGHTING :
|
||||
if (Value) {
|
||||
glEnable(GL_LIGHTING);
|
||||
checkGLcall("glEnable GL_LIGHTING");
|
||||
|
@ -1886,7 +1878,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ZENABLE :
|
||||
case WINED3DRS_ZENABLE :
|
||||
switch ((D3DZBUFFERTYPE) Value) {
|
||||
case D3DZB_FALSE:
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
|
@ -1906,7 +1898,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_CULLMODE :
|
||||
case WINED3DRS_CULLMODE :
|
||||
|
||||
/* If we are culling "back faces with clockwise vertices" then
|
||||
set front faces to be counter clockwise and enable culling
|
||||
|
@ -1945,7 +1937,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_SHADEMODE :
|
||||
case WINED3DRS_SHADEMODE :
|
||||
switch ((D3DSHADEMODE) Value) {
|
||||
case D3DSHADE_FLAT:
|
||||
glShadeModel(GL_FLAT);
|
||||
|
@ -1965,7 +1957,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_DITHERENABLE :
|
||||
case WINED3DRS_DITHERENABLE :
|
||||
if (Value) {
|
||||
glEnable(GL_DITHER);
|
||||
checkGLcall("glEnable GL_DITHER");
|
||||
|
@ -1975,7 +1967,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ZWRITEENABLE :
|
||||
case WINED3DRS_ZWRITEENABLE :
|
||||
if (Value) {
|
||||
glDepthMask(1);
|
||||
checkGLcall("glDepthMask");
|
||||
|
@ -1985,7 +1977,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ZFUNC :
|
||||
case WINED3DRS_ZFUNC :
|
||||
{
|
||||
int glParm = GL_LESS;
|
||||
|
||||
|
@ -2006,7 +1998,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_AMBIENT :
|
||||
case WINED3DRS_AMBIENT :
|
||||
{
|
||||
float col[4];
|
||||
D3DCOLORTOGLFLOAT4(Value, col);
|
||||
|
@ -2017,7 +2009,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ALPHABLENDENABLE :
|
||||
case WINED3DRS_ALPHABLENDENABLE :
|
||||
if (Value) {
|
||||
glEnable(GL_BLEND);
|
||||
checkGLcall("glEnable GL_BLEND");
|
||||
|
@ -2027,8 +2019,8 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
};
|
||||
break;
|
||||
|
||||
case D3DRS_SRCBLEND :
|
||||
case D3DRS_DESTBLEND :
|
||||
case WINED3DRS_SRCBLEND :
|
||||
case WINED3DRS_DESTBLEND :
|
||||
{
|
||||
int newVal = GL_ZERO;
|
||||
switch (Value) {
|
||||
|
@ -2057,8 +2049,8 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
FIXME("Unrecognized src/dest blend value %ld (%d)\n", Value, State);
|
||||
}
|
||||
|
||||
if (State == D3DRS_SRCBLEND) This->srcBlend = newVal;
|
||||
if (State == D3DRS_DESTBLEND) This->dstBlend = newVal;
|
||||
if (State == WINED3DRS_SRCBLEND) This->srcBlend = newVal;
|
||||
if (State == WINED3DRS_DESTBLEND) This->dstBlend = newVal;
|
||||
TRACE("glBlendFunc src=%x, dst=%x\n", This->srcBlend, This->dstBlend);
|
||||
glBlendFunc(This->srcBlend, This->dstBlend);
|
||||
|
||||
|
@ -2066,7 +2058,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ALPHATESTENABLE :
|
||||
case WINED3DRS_ALPHATESTENABLE :
|
||||
if (Value) {
|
||||
glEnable(GL_ALPHA_TEST);
|
||||
checkGLcall("glEnable GL_ALPHA_TEST");
|
||||
|
@ -2076,10 +2068,10 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ALPHAFUNC :
|
||||
case WINED3DRS_ALPHAFUNC :
|
||||
{
|
||||
int glParm = GL_LESS;
|
||||
float ref = ((float) This->stateBlock->renderState[D3DRS_ALPHAREF]) / 255.0f;
|
||||
float ref = ((float) This->stateBlock->renderState[WINED3DRS_ALPHAREF]) / 255.0f;
|
||||
|
||||
switch ((D3DCMPFUNC) Value) {
|
||||
case D3DCMP_NEVER: glParm = GL_NEVER; break;
|
||||
|
@ -2100,7 +2092,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ALPHAREF :
|
||||
case WINED3DRS_ALPHAREF :
|
||||
{
|
||||
int glParm = This->alphafunc;
|
||||
float ref = 1.0f;
|
||||
|
@ -2112,20 +2104,20 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_CLIPPLANEENABLE :
|
||||
case D3DRS_CLIPPING :
|
||||
case WINED3DRS_CLIPPLANEENABLE :
|
||||
case WINED3DRS_CLIPPING :
|
||||
{
|
||||
/* Ensure we only do the changed clip planes */
|
||||
DWORD enable = 0xFFFFFFFF;
|
||||
DWORD disable = 0x00000000;
|
||||
|
||||
/* If enabling / disabling all */
|
||||
if (State == D3DRS_CLIPPING) {
|
||||
if (State == WINED3DRS_CLIPPING) {
|
||||
if (Value) {
|
||||
enable = This->stateBlock->renderState[D3DRS_CLIPPLANEENABLE];
|
||||
enable = This->stateBlock->renderState[WINED3DRS_CLIPPLANEENABLE];
|
||||
disable = 0x00;
|
||||
} else {
|
||||
disable = This->stateBlock->renderState[D3DRS_CLIPPLANEENABLE];
|
||||
disable = This->stateBlock->renderState[WINED3DRS_CLIPPLANEENABLE];
|
||||
enable = 0x00;
|
||||
}
|
||||
} else {
|
||||
|
@ -2158,7 +2150,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_BLENDOP :
|
||||
case WINED3DRS_BLENDOP :
|
||||
{
|
||||
int glParm = GL_FUNC_ADD;
|
||||
|
||||
|
@ -2177,7 +2169,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_TEXTUREFACTOR :
|
||||
case WINED3DRS_TEXTUREFACTOR :
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
|
@ -2206,7 +2198,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_SPECULARENABLE :
|
||||
case WINED3DRS_SPECULARENABLE :
|
||||
{
|
||||
/* Originally this used glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,GL_SEPARATE_SPECULAR_COLOR)
|
||||
and (GL_LIGHT_MODEL_COLOR_CONTROL,GL_SINGLE_COLOR) to swap between enabled/disabled
|
||||
|
@ -2245,7 +2237,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_STENCILENABLE :
|
||||
case WINED3DRS_STENCILENABLE :
|
||||
if (Value) {
|
||||
glEnable(GL_STENCIL_TEST);
|
||||
checkGLcall("glEnable GL_STENCIL_TEST");
|
||||
|
@ -2255,11 +2247,11 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_STENCILFUNC :
|
||||
case WINED3DRS_STENCILFUNC :
|
||||
{
|
||||
int glParm = GL_ALWAYS;
|
||||
int ref = This->stateBlock->renderState[D3DRS_STENCILREF];
|
||||
GLuint mask = This->stateBlock->renderState[D3DRS_STENCILMASK];
|
||||
int ref = This->stateBlock->renderState[WINED3DRS_STENCILREF];
|
||||
GLuint mask = This->stateBlock->renderState[WINED3DRS_STENCILMASK];
|
||||
|
||||
switch ((D3DCMPFUNC) Value) {
|
||||
case D3DCMP_NEVER: glParm=GL_NEVER; break;
|
||||
|
@ -2280,11 +2272,11 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_STENCILREF :
|
||||
case WINED3DRS_STENCILREF :
|
||||
{
|
||||
int glParm = This->stencilfunc;
|
||||
int ref = 0;
|
||||
GLuint mask = This->stateBlock->renderState[D3DRS_STENCILMASK];
|
||||
GLuint mask = This->stateBlock->renderState[WINED3DRS_STENCILMASK];
|
||||
|
||||
ref = Value;
|
||||
TRACE("glStencilFunc with Parm=%x, ref=%d, mask=%x\n", glParm, ref, mask);
|
||||
|
@ -2293,10 +2285,10 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_STENCILMASK :
|
||||
case WINED3DRS_STENCILMASK :
|
||||
{
|
||||
int glParm = This->stencilfunc;
|
||||
int ref = This->stateBlock->renderState[D3DRS_STENCILREF];
|
||||
int ref = This->stateBlock->renderState[WINED3DRS_STENCILREF];
|
||||
GLuint mask = Value;
|
||||
|
||||
TRACE("glStencilFunc with Parm=%x, ref=%d, mask=%x\n", glParm, ref, mask);
|
||||
|
@ -2305,7 +2297,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_STENCILFAIL :
|
||||
case WINED3DRS_STENCILFAIL :
|
||||
{
|
||||
GLenum fail ;
|
||||
GLenum zpass ;
|
||||
|
@ -2322,7 +2314,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
checkGLcall("glStencilOp(fail, zfail, zpass);");
|
||||
}
|
||||
break;
|
||||
case D3DRS_STENCILZFAIL :
|
||||
case WINED3DRS_STENCILZFAIL :
|
||||
{
|
||||
GLenum fail ;
|
||||
GLenum zpass ;
|
||||
|
@ -2339,7 +2331,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
checkGLcall("glStencilOp(fail, zfail, zpass);");
|
||||
}
|
||||
break;
|
||||
case D3DRS_STENCILPASS :
|
||||
case WINED3DRS_STENCILPASS :
|
||||
{
|
||||
GLenum fail ;
|
||||
GLenum zpass ;
|
||||
|
@ -2357,7 +2349,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_STENCILWRITEMASK :
|
||||
case WINED3DRS_STENCILWRITEMASK :
|
||||
{
|
||||
glStencilMask(Value);
|
||||
TRACE("glStencilMask(%lu)\n", Value);
|
||||
|
@ -2365,9 +2357,9 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGENABLE :
|
||||
case WINED3DRS_FOGENABLE :
|
||||
{
|
||||
if (Value/* && This->stateBlock->renderState[D3DRS_FOGTABLEMODE] != D3DFOG_NONE*/) {
|
||||
if (Value/* && This->stateBlock->renderState[WINED3DRS_FOGTABLEMODE] != D3DFOG_NONE*/) {
|
||||
glEnable(GL_FOG);
|
||||
checkGLcall("glEnable GL_FOG");
|
||||
} else {
|
||||
|
@ -2377,7 +2369,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_RANGEFOGENABLE :
|
||||
case WINED3DRS_RANGEFOGENABLE :
|
||||
{
|
||||
if (Value) {
|
||||
TRACE("Enabled RANGEFOG");
|
||||
|
@ -2387,7 +2379,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGCOLOR :
|
||||
case WINED3DRS_FOGCOLOR :
|
||||
{
|
||||
float col[4];
|
||||
D3DCOLORTOGLFLOAT4(Value, col);
|
||||
|
@ -2397,7 +2389,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGTABLEMODE :
|
||||
case WINED3DRS_FOGTABLEMODE :
|
||||
{
|
||||
glHint(GL_FOG_HINT, GL_NICEST);
|
||||
switch (Value) {
|
||||
|
@ -2406,7 +2398,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
case D3DFOG_EXP2: glFogi(GL_FOG_MODE, GL_EXP2); checkGLcall("glFogi(GL_FOG_MODE, GL_EXP2"); break;
|
||||
case D3DFOG_LINEAR: glFogi(GL_FOG_MODE, GL_LINEAR); checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR"); break;
|
||||
default:
|
||||
FIXME("Unsupported Value(%lu) for D3DRS_FOGTABLEMODE!\n", Value);
|
||||
FIXME("Unsupported Value(%lu) for WINED3DRS_FOGTABLEMODE!\n", Value);
|
||||
}
|
||||
if (GL_SUPPORT(NV_FOG_DISTANCE)) {
|
||||
glFogi(GL_FOG_DISTANCE_MODE_NV, GL_EYE_PLANE_ABSOLUTE_NV);
|
||||
|
@ -2414,7 +2406,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGVERTEXMODE :
|
||||
case WINED3DRS_FOGVERTEXMODE :
|
||||
{
|
||||
glHint(GL_FOG_HINT, GL_FASTEST);
|
||||
switch (Value) {
|
||||
|
@ -2423,15 +2415,15 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
case D3DFOG_EXP2: glFogi(GL_FOG_MODE, GL_EXP2); checkGLcall("glFogi(GL_FOG_MODE, GL_EXP2"); break;
|
||||
case D3DFOG_LINEAR: glFogi(GL_FOG_MODE, GL_LINEAR); checkGLcall("glFogi(GL_FOG_MODE, GL_LINEAR"); break;
|
||||
default:
|
||||
FIXME("Unsupported Value(%lu) for D3DRS_FOGTABLEMODE!\n", Value);
|
||||
FIXME("Unsupported Value(%lu) for WINED3DRS_FOGTABLEMODE!\n", Value);
|
||||
}
|
||||
if (GL_SUPPORT(NV_FOG_DISTANCE)) {
|
||||
glFogi(GL_FOG_DISTANCE_MODE_NV, This->stateBlock->renderState[D3DRS_RANGEFOGENABLE] ? GL_EYE_RADIAL_NV : GL_EYE_PLANE_ABSOLUTE_NV);
|
||||
glFogi(GL_FOG_DISTANCE_MODE_NV, This->stateBlock->renderState[WINED3DRS_RANGEFOGENABLE] ? GL_EYE_RADIAL_NV : GL_EYE_PLANE_ABSOLUTE_NV);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGSTART :
|
||||
case WINED3DRS_FOGSTART :
|
||||
{
|
||||
tmpvalue.d = Value;
|
||||
glFogfv(GL_FOG_START, &tmpvalue.f);
|
||||
|
@ -2440,7 +2432,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGEND :
|
||||
case WINED3DRS_FOGEND :
|
||||
{
|
||||
tmpvalue.d = Value;
|
||||
glFogfv(GL_FOG_END, &tmpvalue.f);
|
||||
|
@ -2449,7 +2441,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_FOGDENSITY :
|
||||
case WINED3DRS_FOGDENSITY :
|
||||
{
|
||||
tmpvalue.d = Value;
|
||||
glFogfv(GL_FOG_DENSITY, &tmpvalue.f);
|
||||
|
@ -2457,14 +2449,14 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_VERTEXBLEND :
|
||||
case WINED3DRS_VERTEXBLEND :
|
||||
{
|
||||
This->updateStateBlock->vertex_blend = (D3DVERTEXBLENDFLAGS) Value;
|
||||
TRACE("Vertex Blending state to %ld\n", Value);
|
||||
}
|
||||
break;
|
||||
|
||||
case D3DRS_TWEENFACTOR :
|
||||
case WINED3DRS_TWEENFACTOR :
|
||||
{
|
||||
tmpvalue.d = Value;
|
||||
This->updateStateBlock->tween_factor = tmpvalue.f;
|
||||
|
@ -2472,38 +2464,38 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_INDEXEDVERTEXBLENDENABLE :
|
||||
case WINED3DRS_INDEXEDVERTEXBLENDENABLE :
|
||||
{
|
||||
TRACE("Indexed Vertex Blend Enable to %ul\n", (BOOL) Value);
|
||||
}
|
||||
break;
|
||||
|
||||
case D3DRS_COLORVERTEX :
|
||||
case D3DRS_DIFFUSEMATERIALSOURCE :
|
||||
case D3DRS_SPECULARMATERIALSOURCE :
|
||||
case D3DRS_AMBIENTMATERIALSOURCE :
|
||||
case D3DRS_EMISSIVEMATERIALSOURCE :
|
||||
case WINED3DRS_COLORVERTEX :
|
||||
case WINED3DRS_DIFFUSEMATERIALSOURCE :
|
||||
case WINED3DRS_SPECULARMATERIALSOURCE :
|
||||
case WINED3DRS_AMBIENTMATERIALSOURCE :
|
||||
case WINED3DRS_EMISSIVEMATERIALSOURCE :
|
||||
{
|
||||
GLenum Parm = GL_AMBIENT_AND_DIFFUSE;
|
||||
|
||||
if (This->stateBlock->renderState[D3DRS_COLORVERTEX]) {
|
||||
if (This->stateBlock->renderState[WINED3DRS_COLORVERTEX]) {
|
||||
TRACE("diff %ld, amb %ld, emis %ld, spec %ld\n",
|
||||
This->stateBlock->renderState[D3DRS_DIFFUSEMATERIALSOURCE],
|
||||
This->stateBlock->renderState[D3DRS_AMBIENTMATERIALSOURCE],
|
||||
This->stateBlock->renderState[D3DRS_EMISSIVEMATERIALSOURCE],
|
||||
This->stateBlock->renderState[D3DRS_SPECULARMATERIALSOURCE]);
|
||||
This->stateBlock->renderState[WINED3DRS_DIFFUSEMATERIALSOURCE],
|
||||
This->stateBlock->renderState[WINED3DRS_AMBIENTMATERIALSOURCE],
|
||||
This->stateBlock->renderState[WINED3DRS_EMISSIVEMATERIALSOURCE],
|
||||
This->stateBlock->renderState[WINED3DRS_SPECULARMATERIALSOURCE]);
|
||||
|
||||
if (This->stateBlock->renderState[D3DRS_DIFFUSEMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
if (This->stateBlock->renderState[D3DRS_AMBIENTMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
if (This->stateBlock->renderState[WINED3DRS_DIFFUSEMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
if (This->stateBlock->renderState[WINED3DRS_AMBIENTMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
Parm = GL_AMBIENT_AND_DIFFUSE;
|
||||
} else {
|
||||
Parm = GL_DIFFUSE;
|
||||
}
|
||||
} else if (This->stateBlock->renderState[D3DRS_AMBIENTMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
} else if (This->stateBlock->renderState[WINED3DRS_AMBIENTMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
Parm = GL_AMBIENT;
|
||||
} else if (This->stateBlock->renderState[D3DRS_EMISSIVEMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
} else if (This->stateBlock->renderState[WINED3DRS_EMISSIVEMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
Parm = GL_EMISSION;
|
||||
} else if (This->stateBlock->renderState[D3DRS_SPECULARMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
} else if (This->stateBlock->renderState[WINED3DRS_SPECULARMATERIALSOURCE] == D3DMCS_COLOR1) {
|
||||
Parm = GL_SPECULAR;
|
||||
} else {
|
||||
Parm = -1;
|
||||
|
@ -2522,7 +2514,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_LINEPATTERN :
|
||||
case WINED3DRS_LINEPATTERN :
|
||||
{
|
||||
union {
|
||||
DWORD d;
|
||||
|
@ -2544,7 +2536,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_ZBIAS :
|
||||
case WINED3DRS_ZBIAS :
|
||||
{
|
||||
if (Value) {
|
||||
tmpvalue.d = Value;
|
||||
|
@ -2568,7 +2560,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_NORMALIZENORMALS :
|
||||
case WINED3DRS_NORMALIZENORMALS :
|
||||
if (Value) {
|
||||
glEnable(GL_NORMALIZE);
|
||||
checkGLcall("glEnable(GL_NORMALIZE);");
|
||||
|
@ -2578,50 +2570,50 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_POINTSIZE :
|
||||
case WINED3DRS_POINTSIZE :
|
||||
tmpvalue.d = Value;
|
||||
TRACE("Set point size to %f\n", tmpvalue.f);
|
||||
glPointSize(tmpvalue.f);
|
||||
checkGLcall("glPointSize(...);");
|
||||
break;
|
||||
|
||||
case D3DRS_POINTSIZE_MIN :
|
||||
case WINED3DRS_POINTSIZE_MIN :
|
||||
if (GL_SUPPORT(EXT_POINT_PARAMETERS)) {
|
||||
tmpvalue.d = Value;
|
||||
GL_EXTCALL(glPointParameterfEXT)(GL_POINT_SIZE_MIN_EXT, tmpvalue.f);
|
||||
checkGLcall("glPointParameterfEXT(...);");
|
||||
} else {
|
||||
FIXME("D3DRS_POINTSIZE_MIN not supported on this opengl\n");
|
||||
FIXME("WINED3DRS_POINTSIZE_MIN not supported on this opengl\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case D3DRS_POINTSIZE_MAX :
|
||||
case WINED3DRS_POINTSIZE_MAX :
|
||||
if (GL_SUPPORT(EXT_POINT_PARAMETERS)) {
|
||||
tmpvalue.d = Value;
|
||||
GL_EXTCALL(glPointParameterfEXT)(GL_POINT_SIZE_MAX_EXT, tmpvalue.f);
|
||||
checkGLcall("glPointParameterfEXT(...);");
|
||||
} else {
|
||||
FIXME("D3DRS_POINTSIZE_MAX not supported on this opengl\n");
|
||||
FIXME("WINED3DRS_POINTSIZE_MAX not supported on this opengl\n");
|
||||
}
|
||||
break;
|
||||
|
||||
case D3DRS_POINTSCALE_A :
|
||||
case D3DRS_POINTSCALE_B :
|
||||
case D3DRS_POINTSCALE_C :
|
||||
case D3DRS_POINTSCALEENABLE :
|
||||
case WINED3DRS_POINTSCALE_A :
|
||||
case WINED3DRS_POINTSCALE_B :
|
||||
case WINED3DRS_POINTSCALE_C :
|
||||
case WINED3DRS_POINTSCALEENABLE :
|
||||
{
|
||||
/* If enabled, supply the parameters, otherwise fall back to defaults */
|
||||
if (This->stateBlock->renderState[D3DRS_POINTSCALEENABLE]) {
|
||||
if (This->stateBlock->renderState[WINED3DRS_POINTSCALEENABLE]) {
|
||||
GLfloat att[3] = {1.0f, 0.0f, 0.0f};
|
||||
att[0] = *((float*)&This->stateBlock->renderState[D3DRS_POINTSCALE_A]);
|
||||
att[1] = *((float*)&This->stateBlock->renderState[D3DRS_POINTSCALE_B]);
|
||||
att[2] = *((float*)&This->stateBlock->renderState[D3DRS_POINTSCALE_C]);
|
||||
att[0] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_A]);
|
||||
att[1] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_B]);
|
||||
att[2] = *((float*)&This->stateBlock->renderState[WINED3DRS_POINTSCALE_C]);
|
||||
|
||||
if (GL_SUPPORT(EXT_POINT_PARAMETERS)) {
|
||||
GL_EXTCALL(glPointParameterfvEXT)(GL_DISTANCE_ATTENUATION_EXT, att);
|
||||
checkGLcall("glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, ...);");
|
||||
} else {
|
||||
TRACE("D3DRS_POINTSCALEENABLE not supported on this opengl\n");
|
||||
TRACE("WINED3DRS_POINTSCALEENABLE not supported on this opengl\n");
|
||||
}
|
||||
} else {
|
||||
GLfloat att[3] = {1.0f, 0.0f, 0.0f};
|
||||
|
@ -2629,13 +2621,13 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
GL_EXTCALL(glPointParameterfvEXT)(GL_DISTANCE_ATTENUATION_EXT, att);
|
||||
checkGLcall("glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, ...);");
|
||||
} else {
|
||||
TRACE("D3DRS_POINTSCALEENABLE not supported, but not on either\n");
|
||||
TRACE("WINED3DRS_POINTSCALEENABLE not supported, but not on either\n");
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case D3DRS_COLORWRITEENABLE :
|
||||
case WINED3DRS_COLORWRITEENABLE :
|
||||
{
|
||||
TRACE("Color mask: r(%d) g(%d) b(%d) a(%d)\n",
|
||||
Value & D3DCOLORWRITEENABLE_RED ? 1 : 0,
|
||||
|
@ -2650,7 +2642,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_LOCALVIEWER :
|
||||
case WINED3DRS_LOCALVIEWER :
|
||||
{
|
||||
GLint state = (Value) ? 1 : 0;
|
||||
TRACE("Local Viewer Enable to %ul\n", (BOOL) Value);
|
||||
|
@ -2658,7 +2650,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_LASTPIXEL :
|
||||
case WINED3DRS_LASTPIXEL :
|
||||
{
|
||||
if (Value) {
|
||||
TRACE("Last Pixel Drawing Enabled\n");
|
||||
|
@ -2668,7 +2660,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DRS_SOFTWAREVERTEXPROCESSING :
|
||||
case WINED3DRS_SOFTWAREVERTEXPROCESSING :
|
||||
{
|
||||
if (Value) {
|
||||
TRACE("Software Processing Enabled\n");
|
||||
|
@ -2679,30 +2671,30 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, D3DRENDE
|
|||
break;
|
||||
|
||||
/** not supported */
|
||||
case D3DRS_ZVISIBLE :
|
||||
case WINED3DRS_ZVISIBLE :
|
||||
{
|
||||
LEAVE_GL();
|
||||
return D3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
/* Unhandled yet...! */
|
||||
case D3DRS_EDGEANTIALIAS :
|
||||
case D3DRS_WRAP0 :
|
||||
case D3DRS_WRAP1 :
|
||||
case D3DRS_WRAP2 :
|
||||
case D3DRS_WRAP3 :
|
||||
case D3DRS_WRAP4 :
|
||||
case D3DRS_WRAP5 :
|
||||
case D3DRS_WRAP6 :
|
||||
case D3DRS_WRAP7 :
|
||||
case D3DRS_POINTSPRITEENABLE :
|
||||
case D3DRS_MULTISAMPLEANTIALIAS :
|
||||
case D3DRS_MULTISAMPLEMASK :
|
||||
case D3DRS_PATCHEDGESTYLE :
|
||||
case D3DRS_PATCHSEGMENTS :
|
||||
case D3DRS_DEBUGMONITORTOKEN :
|
||||
case D3DRS_POSITIONORDER :
|
||||
case D3DRS_NORMALORDER :
|
||||
case WINED3DRS_EDGEANTIALIAS :
|
||||
case WINED3DRS_WRAP0 :
|
||||
case WINED3DRS_WRAP1 :
|
||||
case WINED3DRS_WRAP2 :
|
||||
case WINED3DRS_WRAP3 :
|
||||
case WINED3DRS_WRAP4 :
|
||||
case WINED3DRS_WRAP5 :
|
||||
case WINED3DRS_WRAP6 :
|
||||
case WINED3DRS_WRAP7 :
|
||||
case WINED3DRS_POINTSPRITEENABLE :
|
||||
case WINED3DRS_MULTISAMPLEANTIALIAS :
|
||||
case WINED3DRS_MULTISAMPLEMASK :
|
||||
case WINED3DRS_PATCHEDGESTYLE :
|
||||
case WINED3DRS_PATCHSEGMENTS :
|
||||
case WINED3DRS_DEBUGMONITORTOKEN :
|
||||
case WINED3DRS_POSITIONORDER :
|
||||
case WINED3DRS_NORMALORDER :
|
||||
/*Put back later: FIXME("(%p)->(%d,%ld) not handled yet\n", This, State, Value); */
|
||||
FIXME("(%p)->(%d,%ld) not handled yet\n", This, State, Value);
|
||||
break;
|
||||
|
@ -3284,7 +3276,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetTextureStageState(IWineD3DDevice *iface, DW
|
|||
determine the texture wrapping mode.
|
||||
eg. SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION | 1 );
|
||||
means use the vertex position (camera-space) as the input texture coordinates
|
||||
for this texture stage, and the wrap mode set in the D3DRS_WRAP1 render
|
||||
for this texture stage, and the wrap mode set in the WINED3DRS_WRAP1 render
|
||||
state. We do not (yet) support the D3DRENDERSTATE_WRAPx values, nor tie them up
|
||||
to the TEXCOORDINDEX value */
|
||||
|
||||
|
@ -3660,13 +3652,13 @@ HRESULT WINAPI IWineD3DDeviceImpl_GetDisplayMode(IWineD3DDevice *iface, UINT iSw
|
|||
DeleteDC(hdc);
|
||||
|
||||
switch (bpp) {
|
||||
case 8: pMode->Format = D3DFMT_R8G8B8; break;
|
||||
case 16: pMode->Format = D3DFMT_R5G6B5; break;
|
||||
case 24: /*pMode->Format = D3DFMT_R8G8B8; break; */
|
||||
case 32: pMode->Format = D3DFMT_A8R8G8B8; break;
|
||||
case 8: pMode->Format = WINED3DFMT_R8G8B8; break;
|
||||
case 16: pMode->Format = WINED3DFMT_R5G6B5; break;
|
||||
case 24: /*pMode->Format = WINED3DFMT_R8G8B8; break; */
|
||||
case 32: pMode->Format = WINED3DFMT_A8R8G8B8; break;
|
||||
default:
|
||||
FIXME("Unrecognized display mode format\n");
|
||||
pMode->Format = D3DFMT_UNKNOWN;
|
||||
pMode->Format = WINED3DFMT_UNKNOWN;
|
||||
}
|
||||
|
||||
FIXME("(%p) : returning w(%d) h(%d) rr(%d) fmt(%u,%s)\n", This, pMode->Width, pMode->Height, pMode->RefreshRate,
|
||||
|
@ -3931,7 +3923,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_Clear(IWineD3DDevice *iface, DWORD Count, CONS
|
|||
/* Restore the old values (why..?) */
|
||||
if (Flags & D3DCLEAR_STENCIL) {
|
||||
glClearStencil(old_stencil_clear_value);
|
||||
glStencilMask(This->stateBlock->renderState[D3DRS_STENCILWRITEMASK]);
|
||||
glStencilMask(This->stateBlock->renderState[WINED3DRS_STENCILWRITEMASK]);
|
||||
}
|
||||
if (Flags & D3DCLEAR_ZBUFFER) {
|
||||
glDepthMask(old_ztest);
|
||||
|
@ -3942,10 +3934,10 @@ HRESULT WINAPI IWineD3DDeviceImpl_Clear(IWineD3DDevice *iface, DWORD Count, CONS
|
|||
old_color_clear_value[1],
|
||||
old_color_clear_value[2],
|
||||
old_color_clear_value[3]);
|
||||
glColorMask(This->stateBlock->renderState[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_RED ? GL_TRUE : GL_FALSE,
|
||||
This->stateBlock->renderState[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE,
|
||||
This->stateBlock->renderState[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_BLUE ? GL_TRUE : GL_FALSE,
|
||||
This->stateBlock->renderState[D3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
|
||||
glColorMask(This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_RED ? GL_TRUE : GL_FALSE,
|
||||
This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_GREEN ? GL_TRUE : GL_FALSE,
|
||||
This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_BLUE ? GL_TRUE : GL_FALSE,
|
||||
This->stateBlock->renderState[WINED3DRS_COLORWRITEENABLE] & D3DCOLORWRITEENABLE_ALPHA ? GL_TRUE : GL_FALSE);
|
||||
}
|
||||
|
||||
glDisable(GL_SCISSOR_TEST);
|
||||
|
@ -3991,7 +3983,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_DrawIndexedPrimitive(IWineD3DDevice *iface,
|
|||
minIndex, NumVertices, startIndex, baseVIndex, primCount);
|
||||
|
||||
IWineD3DIndexBuffer_GetDesc(pIB, &IdxBufDsc);
|
||||
if (IdxBufDsc.Format == D3DFMT_INDEX16) {
|
||||
if (IdxBufDsc.Format == WINED3DFMT_INDEX16) {
|
||||
idxStride = 2;
|
||||
} else {
|
||||
idxStride = 4;
|
||||
|
@ -4043,7 +4035,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_DrawIndexedPrimitiveUP(IWineD3DDevice *iface,
|
|||
|
||||
if (This->stateBlock->stream_source[0] != NULL) IWineD3DVertexBuffer_Release(This->stateBlock->stream_source[0]);
|
||||
|
||||
if (IndexDataFormat == D3DFMT_INDEX16) {
|
||||
if (IndexDataFormat == WINED3DFMT_INDEX16) {
|
||||
idxStride = 2;
|
||||
} else {
|
||||
idxStride = 4;
|
||||
|
@ -4268,7 +4260,7 @@ HRESULT WINAPI IWineD3DDeviceImpl_SetCursorProperties(IWineD3DDevice* iface, U
|
|||
|
||||
TRACE("(%p) : Spot Pos(%u,%u)\n", This, XHotSpot, YHotSpot);
|
||||
|
||||
if (D3DFMT_A8R8G8B8 != pSur->currentDesc.Format) {
|
||||
if (WINED3DFMT_A8R8G8B8 != pSur->currentDesc.Format) {
|
||||
ERR("(%p) : surface(%p) have a invalid format\n", This, pCursorBitmap);
|
||||
return D3DERR_INVALIDCALL;
|
||||
}
|
||||
|
|
|
@ -35,15 +35,6 @@ extern IDirect3DPixelShaderImpl* PixelShaders[64];
|
|||
#undef GL_VERSION_1_4 /* To be fixed, caused by mesa headers */
|
||||
#endif
|
||||
|
||||
/* Useful internal structure, holding place for 4 floats */
|
||||
typedef struct _D3DVECTOR_4 {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float w;
|
||||
} D3DVECTOR_4;
|
||||
|
||||
|
||||
/* Returns bits for what is expected from the fixed function pipeline, and whether
|
||||
a vertex shader will be in use. Note the fvf bits returned may be split over
|
||||
multiple streams only if the vertex shader was created, otherwise it all relates
|
||||
|
@ -519,7 +510,7 @@ void draw_vertex(IWineD3DDevice *iface, /* interfac
|
|||
BOOL isDiffuse, float *dRGBA, /* 1st colors */
|
||||
BOOL isSpecular, float *sRGB, /* 2ndry colors */
|
||||
BOOL isPtSize, float ptSize, /* pointSize */
|
||||
D3DVECTOR_4 *texcoords, int *numcoords) /* texture info */
|
||||
WINED3DVECTOR_4 *texcoords, int *numcoords) /* texture info */
|
||||
{
|
||||
unsigned int textureNo;
|
||||
float s, t, r, q;
|
||||
|
|
|
@ -0,0 +1,337 @@
|
|||
/*
|
||||
* IWineD3DQuery implementation
|
||||
*
|
||||
* Copyright 2005 Oliver Stieber
|
||||
*
|
||||
*
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
|
||||
#include "config.h"
|
||||
#include "wined3d_private.h"
|
||||
|
||||
/*
|
||||
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/directx/graphics/programmingguide/advancedtopics/Queries.asp
|
||||
*/
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d3d);
|
||||
|
||||
/* *******************************************
|
||||
IWineD3DQuery IUnknown parts follow
|
||||
******************************************* */
|
||||
HRESULT WINAPI IWineD3DQueryImpl_QueryInterface(IWineD3DQuery *iface, REFIID riid, LPVOID *ppobj)
|
||||
{
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
TRACE("(%p)->(%s,%p)\n",This,debugstr_guid(riid),ppobj);
|
||||
if (IsEqualGUID(riid, &IID_IUnknown)
|
||||
|| IsEqualGUID(riid, &IID_IWineD3DQuery)) {
|
||||
IUnknown_AddRef(iface);
|
||||
*ppobj = This;
|
||||
return D3D_OK;
|
||||
}
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
ULONG WINAPI IWineD3DQueryImpl_AddRef(IWineD3DQuery *iface) {
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
TRACE("(%p) : AddRef increasing from %ld\n", This, This->ref);
|
||||
return InterlockedIncrement(&This->ref);
|
||||
}
|
||||
|
||||
ULONG WINAPI IWineD3DQueryImpl_Release(IWineD3DQuery *iface) {
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
ULONG ref;
|
||||
TRACE("(%p) : Releasing from %ld\n", This, This->ref);
|
||||
ref = InterlockedDecrement(&This->ref);
|
||||
if (ref == 0) {
|
||||
if(This->extendedData != NULL){
|
||||
HeapFree(GetProcessHeap(), 0, This->extendedData);
|
||||
}
|
||||
HeapFree(GetProcessHeap(), 0, This);
|
||||
}
|
||||
return ref;
|
||||
}
|
||||
|
||||
/* *******************************************
|
||||
IWineD3DQuery IWineD3DQuery parts follow
|
||||
******************************************* */
|
||||
HRESULT WINAPI IWineD3DQueryImpl_GetParent(IWineD3DQuery *iface, IUnknown** parent){
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
|
||||
*parent= (IUnknown*) parent;
|
||||
IUnknown_AddRef(*parent);
|
||||
TRACE("(%p) : returning %p\n", This, *parent);
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
HRESULT WINAPI IWineD3DQueryImpl_GetDevice(IWineD3DQuery* iface, IWineD3DDevice **pDevice){
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
IWineD3DDevice_AddRef((IWineD3DDevice *)This->wineD3DDevice);
|
||||
*pDevice = (IWineD3DDevice *)This->wineD3DDevice;
|
||||
TRACE("(%p) returning %p\n", This, *pDevice);
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI IWineD3DQueryImpl_GetData(IWineD3DQuery* iface, void* pData, DWORD dwSize, DWORD dwGetDataFlags){
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
if(dwSize == 0){
|
||||
/*you can use this method to poll the resource for the query status*/
|
||||
/*We return success(S_OK) if we support a feature, and faikure(S_FALSE) if we don't, just return success and fluff it for now*/
|
||||
return S_OK;
|
||||
}else{
|
||||
}
|
||||
|
||||
switch (This->type){
|
||||
|
||||
case WINED3DQUERYTYPE_VCACHE:
|
||||
{
|
||||
|
||||
WINED3DDEVINFO_VCACHE *data = (WINED3DDEVINFO_VCACHE *)pData;
|
||||
data->Pattern = MAKEFOURCC('C','A','C','H');
|
||||
data->OptMethod = 0; /*0 get longest strips, 1 optimize vertex cache*/
|
||||
data->CacheSize = 0; /*cache size, only required if OptMethod == 1*/
|
||||
data->MagicNumber = 0; /*only required if OptMethod == 1 (used internally)*/
|
||||
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_RESOURCEMANAGER:
|
||||
{
|
||||
WINED3DDEVINFO_RESOURCEMANAGER *data = (WINED3DDEVINFO_RESOURCEMANAGER *)pData;
|
||||
int i;
|
||||
for(i = 0; i < D3DRTYPECOUNT; i++){
|
||||
/*I'm setting the default values to 1 so as to reduce the risk of a div/0 in the caller*/
|
||||
/* isTextureResident could be used to get some of this infomration */
|
||||
data->stats[i].bThrashing = FALSE;
|
||||
data->stats[i].ApproxBytesDownloaded = 1;
|
||||
data->stats[i].NumEvicts = 1;
|
||||
data->stats[i].NumVidCreates = 1;
|
||||
data->stats[i].LastPri = 1;
|
||||
data->stats[i].NumUsed = 1;
|
||||
data->stats[i].NumUsedInVidMem = 1;
|
||||
data->stats[i].WorkingSet = 1;
|
||||
data->stats[i].WorkingSetBytes = 1;
|
||||
data->stats[i].TotalManaged = 1;
|
||||
data->stats[i].TotalBytes = 1;
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_VERTEXSTATS:
|
||||
{
|
||||
WINED3DDEVINFO_VERTEXSTATS *data = (WINED3DDEVINFO_VERTEXSTATS *)pData;
|
||||
data->NumRenderedTriangles = 1;
|
||||
data->NumExtraClippingTriangles = 1;
|
||||
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_EVENT:
|
||||
{
|
||||
BOOL* data = pData;
|
||||
*data = TRUE; /*Don't know what this is supposed to be*/
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_OCCLUSION:
|
||||
{
|
||||
DWORD* data = pData;
|
||||
*data = 1;
|
||||
/* TODO: opengl occlusion queries
|
||||
http://www.gris.uni-tuebingen.de/~bartz/Publications/paper/hww98.pdf
|
||||
http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
|
||||
http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
|
||||
*/
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_TIMESTAMP:
|
||||
{
|
||||
UINT64* data = pData;
|
||||
*data = 1; /*Don't know what this is supposed to be*/
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
|
||||
{
|
||||
BOOL* data = pData;
|
||||
*data = FALSE; /*Don't know what this is supposed to be*/
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_TIMESTAMPFREQ:
|
||||
{
|
||||
UINT64* data = pData;
|
||||
*data = 1; /*Don't know what this is supposed to be*/
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_PIPELINETIMINGS:
|
||||
{
|
||||
WINED3DDEVINFO_PIPELINETIMINGS *data = (WINED3DDEVINFO_PIPELINETIMINGS *)pData;
|
||||
|
||||
data->VertexProcessingTimePercent = 1.0f;
|
||||
data->PixelProcessingTimePercent = 1.0f;
|
||||
data->OtherGPUProcessingTimePercent = 97.0f;
|
||||
data->GPUIdleTimePercent = 1.0f;
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_INTERFACETIMINGS:
|
||||
{
|
||||
WINED3DDEVINFO_INTERFACETIMINGS *data = (WINED3DDEVINFO_INTERFACETIMINGS *)pData;
|
||||
|
||||
data->WaitingForGPUToUseApplicationResourceTimePercent = 1.0f;
|
||||
data->WaitingForGPUToAcceptMoreCommandsTimePercent = 1.0f;
|
||||
data->WaitingForGPUToStayWithinLatencyTimePercent = 1.0f;
|
||||
data->WaitingForGPUExclusiveResourceTimePercent = 1.0f;
|
||||
data->WaitingForGPUOtherTimePercent = 96.0f;
|
||||
}
|
||||
|
||||
break;
|
||||
case WINED3DQUERYTYPE_VERTEXTIMINGS:
|
||||
{
|
||||
WINED3DDEVINFO_STAGETIMINGS *data = (WINED3DDEVINFO_STAGETIMINGS *)pData;
|
||||
data->MemoryProcessingPercent = 50.0f;
|
||||
data->ComputationProcessingPercent = 50.0f;
|
||||
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_PIXELTIMINGS:
|
||||
{
|
||||
WINED3DDEVINFO_STAGETIMINGS *data = (WINED3DDEVINFO_STAGETIMINGS *)pData;
|
||||
data->MemoryProcessingPercent = 50.0f;
|
||||
data->ComputationProcessingPercent = 50.0f;
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
|
||||
{
|
||||
WINED3DDEVINFO_BANDWIDTHTIMINGS *data = (WINED3DDEVINFO_BANDWIDTHTIMINGS *)pData;
|
||||
data->MaxBandwidthUtilized = 1.0f;
|
||||
data->FrontEndUploadMemoryUtilizedPercent = 1.0f;
|
||||
data->VertexRateUtilizedPercent = 1.0f;
|
||||
data->TriangleSetupRateUtilizedPercent = 1.0f;
|
||||
data->FillRateUtilizedPercent = 97.0f;
|
||||
}
|
||||
break;
|
||||
case WINED3DQUERYTYPE_CACHEUTILIZATION:
|
||||
{
|
||||
WINED3DDEVINFO_CACHEUTILIZATION *data = (WINED3DDEVINFO_CACHEUTILIZATION *)pData;
|
||||
|
||||
data->TextureCacheHitRate = 1.0f;
|
||||
data->PostTransformVertexCacheHitRate = 1.0f;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
default:
|
||||
FIXME("(%p) Unhandled query type %d\n",This , This->type);
|
||||
|
||||
};
|
||||
|
||||
/*dwGetDataFlags = 0 || D3DGETDATA_FLUSH
|
||||
D3DGETDATA_FLUSH may return D3DERR_DEVICELOST if the device is lost
|
||||
*/
|
||||
FIXME("(%p) : stub \n", This);
|
||||
return S_OK; /* S_OK if the query data is available*/
|
||||
}
|
||||
|
||||
|
||||
DWORD WINAPI IWineD3DQueryImpl_GetDataSize(IWineD3DQuery* iface){
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
int dataSize = 0;
|
||||
FIXME("(%p) : stub \n", This);
|
||||
switch(This->type){
|
||||
case WINED3DQUERYTYPE_VCACHE:
|
||||
dataSize = sizeof(WINED3DDEVINFO_VCACHE);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_RESOURCEMANAGER:
|
||||
dataSize = sizeof(WINED3DDEVINFO_RESOURCEMANAGER);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_VERTEXSTATS:
|
||||
dataSize = sizeof(WINED3DDEVINFO_VERTEXSTATS);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_EVENT:
|
||||
dataSize = sizeof(BOOL);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_OCCLUSION:
|
||||
dataSize = sizeof(DWORD);
|
||||
/*
|
||||
http://www.gris.uni-tuebingen.de/~bartz/Publications/paper/hww98.pdf
|
||||
http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
|
||||
http://oss.sgi.com/projects/ogl-sample/registry/ARB/occlusion_query.txt
|
||||
*/
|
||||
break;
|
||||
case WINED3DQUERYTYPE_TIMESTAMP:
|
||||
dataSize = sizeof(UINT64);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_TIMESTAMPDISJOINT:
|
||||
dataSize = sizeof(BOOL);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_TIMESTAMPFREQ:
|
||||
dataSize = sizeof(UINT64);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_PIPELINETIMINGS:
|
||||
dataSize = sizeof(WINED3DDEVINFO_PIPELINETIMINGS);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_INTERFACETIMINGS:
|
||||
dataSize = sizeof(WINED3DDEVINFO_INTERFACETIMINGS);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_VERTEXTIMINGS:
|
||||
dataSize = sizeof(WINED3DDEVINFO_STAGETIMINGS);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_PIXELTIMINGS:
|
||||
dataSize = sizeof(WINED3DDEVINFO_STAGETIMINGS);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_BANDWIDTHTIMINGS:
|
||||
dataSize = sizeof(WINED3DQUERYTYPE_BANDWIDTHTIMINGS);
|
||||
break;
|
||||
case WINED3DQUERYTYPE_CACHEUTILIZATION:
|
||||
dataSize = sizeof(WINED3DDEVINFO_CACHEUTILIZATION);
|
||||
break;
|
||||
default:
|
||||
FIXME("(%p) Unhandled query type %d\n",This , This->type);
|
||||
dataSize = 0;
|
||||
}
|
||||
return dataSize;
|
||||
}
|
||||
|
||||
|
||||
WINED3DQUERYTYPE WINAPI IWineD3DQueryImpl_GetType(IWineD3DQuery* iface){
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
return This->type;
|
||||
}
|
||||
|
||||
|
||||
HRESULT WINAPI IWineD3DQueryImpl_Issue(IWineD3DQuery* iface, DWORD dwIssueFlags){
|
||||
IWineD3DQueryImpl *This = (IWineD3DQueryImpl *)iface;
|
||||
FIXME("(%p) : stub \n", This);
|
||||
return D3D_OK; /* can be D3DERR_INVALIDCALL. */
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************
|
||||
* IWineD3DQuery VTbl follows
|
||||
**********************************************************/
|
||||
|
||||
IWineD3DQueryVtbl IWineD3DQuery_Vtbl =
|
||||
{
|
||||
/*** IUnknown methods ***/
|
||||
IWineD3DQueryImpl_QueryInterface,
|
||||
IWineD3DQueryImpl_AddRef,
|
||||
IWineD3DQueryImpl_Release,
|
||||
/*** IWineD3Dquery methods ***/
|
||||
IWineD3DQueryImpl_GetParent,
|
||||
IWineD3DQueryImpl_GetDevice,
|
||||
IWineD3DQueryImpl_GetData,
|
||||
IWineD3DQueryImpl_GetDataSize,
|
||||
IWineD3DQueryImpl_GetType,
|
||||
IWineD3DQueryImpl_Issue
|
||||
};
|
|
@ -101,102 +101,102 @@ HRESULT WINAPI IWineD3DStateBlockImpl_InitStartupStateBlock(IWineD3DStateBlock*
|
|||
|
||||
/* Render states: */
|
||||
if (ThisDevice->presentParms.EnableAutoDepthStencil) {
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ZENABLE, D3DZB_TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ZENABLE, D3DZB_TRUE);
|
||||
} else {
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ZENABLE, D3DZB_FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ZENABLE, D3DZB_FALSE);
|
||||
}
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FILLMODE, D3DFILL_SOLID);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FILLMODE, D3DFILL_SOLID);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_SHADEMODE, D3DSHADE_GOURAUD);
|
||||
|
||||
lp.lp.wRepeatFactor = 0; lp.lp.wLinePattern = 0;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_LINEPATTERN, lp.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ZWRITEENABLE, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ALPHATESTENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_LASTPIXEL, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_SRCBLEND, D3DBLEND_ONE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_DESTBLEND, D3DBLEND_ZERO);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_CULLMODE, D3DCULL_CCW);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ALPHAFUNC, D3DCMP_ALWAYS);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ALPHAREF, 0xff); /*??*/
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_DITHERENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ALPHABLENDENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_SPECULARENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ZVISIBLE, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGCOLOR, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGTABLEMODE, D3DFOG_NONE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_LINEPATTERN, lp.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ZWRITEENABLE, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ALPHATESTENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_LASTPIXEL, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_SRCBLEND, D3DBLEND_ONE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_DESTBLEND, D3DBLEND_ZERO);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_CULLMODE, D3DCULL_CCW);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ZFUNC, D3DCMP_LESSEQUAL);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ALPHAFUNC, D3DCMP_ALWAYS);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ALPHAREF, 0xff); /*??*/
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_DITHERENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ALPHABLENDENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_SPECULARENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ZVISIBLE, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGCOLOR, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGTABLEMODE, D3DFOG_NONE);
|
||||
tmpfloat.f = 0.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGSTART, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGSTART, tmpfloat.d);
|
||||
tmpfloat.f = 1.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGEND, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGEND, tmpfloat.d);
|
||||
tmpfloat.f = 1.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGDENSITY, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_EDGEANTIALIAS, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_ZBIAS, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_RANGEFOGENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILFAIL, D3DSTENCILOP_KEEP);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILZFAIL, D3DSTENCILOP_KEEP);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGDENSITY, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_EDGEANTIALIAS, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_ZBIAS, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_RANGEFOGENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILFAIL, D3DSTENCILOP_KEEP);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILZFAIL, D3DSTENCILOP_KEEP);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILPASS, D3DSTENCILOP_KEEP);
|
||||
|
||||
/* Setting stencil func also uses values for stencil ref/mask, so manually set defaults
|
||||
* so only a single call performed (and ensure defaults initialized before making that call)
|
||||
*
|
||||
* IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILREF, 0);
|
||||
* IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILMASK, 0xFFFFFFFF);
|
||||
* IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILREF, 0);
|
||||
* IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILMASK, 0xFFFFFFFF);
|
||||
*/
|
||||
This->renderState[D3DRS_STENCILREF] = 0;
|
||||
This->renderState[D3DRS_STENCILMASK] = 0xFFFFFFFF;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILFUNC, D3DCMP_ALWAYS);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_STENCILWRITEMASK, 0xFFFFFFFF);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_TEXTUREFACTOR, 0xFFFFFFFF);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP0, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP1, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP2, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP3, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP4, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP5, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP6, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_WRAP7, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_CLIPPING, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_LIGHTING, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_AMBIENT, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_FOGVERTEXMODE, D3DFOG_NONE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_COLORVERTEX, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_LOCALVIEWER, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_NORMALIZENORMALS, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_SPECULARMATERIALSOURCE, D3DMCS_COLOR2);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR2);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_VERTEXBLEND, D3DVBF_DISABLE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_CLIPPLANEENABLE, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_SOFTWAREVERTEXPROCESSING, FALSE);
|
||||
This->renderState[WINED3DRS_STENCILREF] = 0;
|
||||
This->renderState[WINED3DRS_STENCILMASK] = 0xFFFFFFFF;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILFUNC, D3DCMP_ALWAYS);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_STENCILWRITEMASK, 0xFFFFFFFF);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_TEXTUREFACTOR, 0xFFFFFFFF);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP0, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP1, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP2, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP3, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP4, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP5, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP6, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_WRAP7, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_CLIPPING, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_LIGHTING, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_AMBIENT, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_FOGVERTEXMODE, D3DFOG_NONE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_COLORVERTEX, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_LOCALVIEWER, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_NORMALIZENORMALS, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_SPECULARMATERIALSOURCE, D3DMCS_COLOR2);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR2);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_EMISSIVEMATERIALSOURCE, D3DMCS_MATERIAL);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_VERTEXBLEND, D3DVBF_DISABLE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_CLIPPLANEENABLE, 0);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_SOFTWAREVERTEXPROCESSING, FALSE);
|
||||
tmpfloat.f = 1.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSIZE, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSIZE, tmpfloat.d);
|
||||
tmpfloat.f = 0.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSIZE_MIN, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSPRITEENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSCALEENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSCALE_A, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSCALE_B, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSCALE_C, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_MULTISAMPLEANTIALIAS, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_MULTISAMPLEMASK, 0xFFFFFFFF);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_PATCHEDGESTYLE, D3DPATCHEDGE_DISCRETE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSIZE_MIN, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSPRITEENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSCALEENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSCALE_A, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSCALE_B, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSCALE_C, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_MULTISAMPLEANTIALIAS, TRUE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_MULTISAMPLEMASK, 0xFFFFFFFF);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_PATCHEDGESTYLE, D3DPATCHEDGE_DISCRETE);
|
||||
tmpfloat.f = 1.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_PATCHSEGMENTS, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_DEBUGMONITORTOKEN, D3DDMT_DISABLE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_PATCHSEGMENTS, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_DEBUGMONITORTOKEN, D3DDMT_DISABLE);
|
||||
tmpfloat.f = 64.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POINTSIZE_MAX, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_COLORWRITEENABLE, 0x0000000F);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POINTSIZE_MAX, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_COLORWRITEENABLE, 0x0000000F);
|
||||
tmpfloat.f = 0.0f;
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_TWEENFACTOR, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_BLENDOP, D3DBLENDOP_ADD);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_POSITIONORDER, D3DORDER_CUBIC);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, D3DRS_NORMALORDER, D3DORDER_LINEAR);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_TWEENFACTOR, tmpfloat.d);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_BLENDOP, D3DBLENDOP_ADD);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_POSITIONORDER, WINED3DDEGREE_CUBIC);
|
||||
IWineD3DDevice_SetRenderState((IWineD3DDevice *)This->wineD3DDevice, WINED3DRS_NORMALORDER, WINED3DDEGREE_LINEAR);
|
||||
|
||||
/** clipping status */
|
||||
This->clip_status.ClipUnion = 0;
|
||||
|
|
|
@ -167,9 +167,9 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, D3DLOCKED_RE
|
|||
/* DXTn formats don't have exact pitches as they are to the new row of blocks,
|
||||
where each block is 4x4 pixels, 8 bytes (dxt1) and 16 bytes (dxt3/5)
|
||||
ie pitch = (width/4) * bytes per block */
|
||||
if (This->currentDesc.Format == D3DFMT_DXT1) /* DXT1 is 8 bytes per block */
|
||||
if (This->currentDesc.Format == WINED3DFMT_DXT1) /* DXT1 is 8 bytes per block */
|
||||
pLockedRect->Pitch = (This->currentDesc.Width/4) * 8;
|
||||
else if (This->currentDesc.Format == D3DFMT_DXT3 || This->currentDesc.Format == D3DFMT_DXT5) /* DXT3/5 is 16 bytes per block */
|
||||
else if (This->currentDesc.Format == WINED3DFMT_DXT3 || This->currentDesc.Format == WINED3DFMT_DXT5) /* DXT3/5 is 16 bytes per block */
|
||||
pLockedRect->Pitch = (This->currentDesc.Width/4) * 16;
|
||||
else
|
||||
pLockedRect->Pitch = This->bytesPerPixel * This->currentDesc.Width; /* Bytes / row */
|
||||
|
@ -184,7 +184,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LockRect(IWineD3DSurface *iface, D3DLOCKED_RE
|
|||
} else {
|
||||
TRACE("Lock Rect (%p) = l %ld, t %ld, r %ld, b %ld\n", pRect, pRect->left, pRect->top, pRect->right, pRect->bottom);
|
||||
|
||||
if (This->currentDesc.Format == D3DFMT_DXT1) { /* DXT1 is half byte per pixel */
|
||||
if (This->currentDesc.Format == WINED3DFMT_DXT1) { /* DXT1 is half byte per pixel */
|
||||
pLockedRect->pBits = This->allocatedMemory + (pLockedRect->Pitch * pRect->top) + ((pRect->left * This->bytesPerPixel/2));
|
||||
} else {
|
||||
pLockedRect->pBits = This->allocatedMemory + (pLockedRect->Pitch * pRect->top) + (pRect->left * This->bytesPerPixel);
|
||||
|
@ -392,21 +392,21 @@ HRESULT WINAPI IWineD3DSurfaceImpl_UnlockRect(IWineD3DSurface *iface) {
|
|||
glRasterPos3i(This->lockedRect.left, This->lockedRect.top, 1);
|
||||
vcheckGLcall("glRasterPos2f");
|
||||
switch (This->currentDesc.Format) {
|
||||
case D3DFMT_R5G6B5:
|
||||
case WINED3DFMT_R5G6B5:
|
||||
{
|
||||
glDrawPixels(This->lockedRect.right - This->lockedRect.left, (This->lockedRect.bottom - This->lockedRect.top)-1,
|
||||
GL_RGB, GL_UNSIGNED_SHORT_5_6_5, This->allocatedMemory);
|
||||
vcheckGLcall("glDrawPixels");
|
||||
}
|
||||
break;
|
||||
case D3DFMT_R8G8B8:
|
||||
case WINED3DFMT_R8G8B8:
|
||||
{
|
||||
glDrawPixels(This->lockedRect.right - This->lockedRect.left, (This->lockedRect.bottom - This->lockedRect.top)-1,
|
||||
GL_RGB, GL_UNSIGNED_BYTE, This->allocatedMemory);
|
||||
vcheckGLcall("glDrawPixels");
|
||||
}
|
||||
break;
|
||||
case D3DFMT_A8R8G8B8:
|
||||
case WINED3DFMT_A8R8G8B8:
|
||||
{
|
||||
glPixelStorei(GL_PACK_SWAP_BYTES, TRUE);
|
||||
vcheckGLcall("glPixelStorei");
|
||||
|
@ -485,9 +485,9 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, GLenum gl
|
|||
|
||||
if (gl_level != 0)
|
||||
FIXME("Surface in texture is only supported for level 0\n");
|
||||
else if (This->currentDesc.Format == D3DFMT_P8 || This->currentDesc.Format == D3DFMT_A8P8 ||
|
||||
This->currentDesc.Format == D3DFMT_DXT1 || This->currentDesc.Format == D3DFMT_DXT3 ||
|
||||
This->currentDesc.Format == D3DFMT_DXT5)
|
||||
else if (This->currentDesc.Format == WINED3DFMT_P8 || This->currentDesc.Format == WINED3DFMT_A8P8 ||
|
||||
This->currentDesc.Format == WINED3DFMT_DXT1 || This->currentDesc.Format == WINED3DFMT_DXT3 ||
|
||||
This->currentDesc.Format == WINED3DFMT_DXT5)
|
||||
FIXME("Format %d not supported\n", This->currentDesc.Format);
|
||||
else {
|
||||
glCopyTexImage2D(gl_target,
|
||||
|
@ -506,7 +506,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, GLenum gl
|
|||
return D3D_OK;
|
||||
}
|
||||
|
||||
if ((This->currentDesc.Format == D3DFMT_P8 || This->currentDesc.Format == D3DFMT_A8P8) &&
|
||||
if ((This->currentDesc.Format == WINED3DFMT_P8 || This->currentDesc.Format == WINED3DFMT_A8P8) &&
|
||||
!GL_SUPPORT(EXT_PALETTED_TEXTURE)) {
|
||||
/**
|
||||
* wanted a paletted texture and not really support it in HW
|
||||
|
@ -523,7 +523,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, GLenum gl
|
|||
*dst++ = pal[color].peRed;
|
||||
*dst++ = pal[color].peGreen;
|
||||
*dst++ = pal[color].peBlue;
|
||||
if (This->currentDesc.Format == D3DFMT_A8P8)
|
||||
if (This->currentDesc.Format == WINED3DFMT_A8P8)
|
||||
*dst++ = pal[color].peFlags;
|
||||
else
|
||||
*dst++ = 0xFF;
|
||||
|
@ -558,9 +558,9 @@ HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, GLenum gl
|
|||
return D3D_OK;
|
||||
}
|
||||
|
||||
if (This->currentDesc.Format == D3DFMT_DXT1 ||
|
||||
This->currentDesc.Format == D3DFMT_DXT3 ||
|
||||
This->currentDesc.Format == D3DFMT_DXT5) {
|
||||
if (This->currentDesc.Format == WINED3DFMT_DXT1 ||
|
||||
This->currentDesc.Format == WINED3DFMT_DXT3 ||
|
||||
This->currentDesc.Format == WINED3DFMT_DXT5) {
|
||||
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
||||
TRACE("Calling glCompressedTexImage2D %x i=%d, intfmt=%x, w=%d, h=%d,0=%d, sz=%d, Mem=%p\n",
|
||||
gl_target,
|
||||
|
@ -657,8 +657,8 @@ HRESULT WINAPI IWineD3DSurfaceImpl_SaveSnapshot(IWineD3DSurface *iface, const ch
|
|||
|
||||
fprintf(f, "P6\n%u %u\n255\n", This->currentDesc.Width, This->currentDesc.Height);
|
||||
switch (This->currentDesc.Format) {
|
||||
case D3DFMT_X8R8G8B8:
|
||||
case D3DFMT_A8R8G8B8:
|
||||
case WINED3DFMT_X8R8G8B8:
|
||||
case WINED3DFMT_A8R8G8B8:
|
||||
{
|
||||
DWORD color;
|
||||
for (i = 0; i < This->currentDesc.Width * This->currentDesc.Height; i++) {
|
||||
|
@ -669,7 +669,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_SaveSnapshot(IWineD3DSurface *iface, const ch
|
|||
}
|
||||
}
|
||||
break;
|
||||
case D3DFMT_R8G8B8:
|
||||
case WINED3DFMT_R8G8B8:
|
||||
{
|
||||
BYTE* color;
|
||||
for (i = 0; i < This->currentDesc.Width * This->currentDesc.Height; i++) {
|
||||
|
@ -680,7 +680,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_SaveSnapshot(IWineD3DSurface *iface, const ch
|
|||
}
|
||||
}
|
||||
break;
|
||||
case D3DFMT_A1R5G5B5:
|
||||
case WINED3DFMT_A1R5G5B5:
|
||||
{
|
||||
WORD color;
|
||||
for (i = 0; i < This->currentDesc.Width * This->currentDesc.Height; i++) {
|
||||
|
@ -691,7 +691,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_SaveSnapshot(IWineD3DSurface *iface, const ch
|
|||
}
|
||||
}
|
||||
break;
|
||||
case D3DFMT_A4R4G4B4:
|
||||
case WINED3DFMT_A4R4G4B4:
|
||||
{
|
||||
WORD color;
|
||||
for (i = 0; i < This->currentDesc.Width * This->currentDesc.Height; i++) {
|
||||
|
@ -703,7 +703,7 @@ HRESULT WINAPI IWineD3DSurfaceImpl_SaveSnapshot(IWineD3DSurface *iface, const ch
|
|||
}
|
||||
break;
|
||||
|
||||
case D3DFMT_R5G6B5:
|
||||
case WINED3DFMT_R5G6B5:
|
||||
{
|
||||
WORD color;
|
||||
for (i = 0; i < This->currentDesc.Width * This->currentDesc.Height; i++) {
|
||||
|
|
|
@ -31,46 +31,58 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3d);
|
|||
const char* debug_d3dformat(D3DFORMAT fmt) {
|
||||
switch (fmt) {
|
||||
#define FMT_TO_STR(fmt) case fmt: return #fmt
|
||||
FMT_TO_STR(D3DFMT_UNKNOWN);
|
||||
FMT_TO_STR(D3DFMT_R8G8B8);
|
||||
FMT_TO_STR(D3DFMT_A8R8G8B8);
|
||||
FMT_TO_STR(D3DFMT_X8R8G8B8);
|
||||
FMT_TO_STR(D3DFMT_R5G6B5);
|
||||
FMT_TO_STR(D3DFMT_X1R5G5B5);
|
||||
FMT_TO_STR(D3DFMT_A1R5G5B5);
|
||||
FMT_TO_STR(D3DFMT_A4R4G4B4);
|
||||
FMT_TO_STR(D3DFMT_R3G3B2);
|
||||
FMT_TO_STR(D3DFMT_A8);
|
||||
FMT_TO_STR(D3DFMT_A8R3G3B2);
|
||||
FMT_TO_STR(D3DFMT_X4R4G4B4);
|
||||
FMT_TO_STR(D3DFMT_A8P8);
|
||||
FMT_TO_STR(D3DFMT_P8);
|
||||
FMT_TO_STR(D3DFMT_L8);
|
||||
FMT_TO_STR(D3DFMT_A8L8);
|
||||
FMT_TO_STR(D3DFMT_A4L4);
|
||||
FMT_TO_STR(D3DFMT_V8U8);
|
||||
FMT_TO_STR(D3DFMT_L6V5U5);
|
||||
FMT_TO_STR(D3DFMT_X8L8V8U8);
|
||||
FMT_TO_STR(D3DFMT_Q8W8V8U8);
|
||||
FMT_TO_STR(D3DFMT_V16U16);
|
||||
FMT_TO_STR(D3DFMT_W11V11U10);
|
||||
FMT_TO_STR(D3DFMT_UYVY);
|
||||
FMT_TO_STR(D3DFMT_YUY2);
|
||||
FMT_TO_STR(D3DFMT_DXT1);
|
||||
FMT_TO_STR(D3DFMT_DXT2);
|
||||
FMT_TO_STR(D3DFMT_DXT3);
|
||||
FMT_TO_STR(D3DFMT_DXT4);
|
||||
FMT_TO_STR(D3DFMT_DXT5);
|
||||
FMT_TO_STR(D3DFMT_D16_LOCKABLE);
|
||||
FMT_TO_STR(D3DFMT_D32);
|
||||
FMT_TO_STR(D3DFMT_D15S1);
|
||||
FMT_TO_STR(D3DFMT_D24S8);
|
||||
FMT_TO_STR(D3DFMT_D16);
|
||||
FMT_TO_STR(D3DFMT_D24X8);
|
||||
FMT_TO_STR(D3DFMT_D24X4S4);
|
||||
FMT_TO_STR(D3DFMT_VERTEXDATA);
|
||||
FMT_TO_STR(D3DFMT_INDEX16);
|
||||
FMT_TO_STR(D3DFMT_INDEX32);
|
||||
FMT_TO_STR(WINED3DFMT_UNKNOWN);
|
||||
FMT_TO_STR(WINED3DFMT_R8G8B8);
|
||||
FMT_TO_STR(WINED3DFMT_A8R8G8B8);
|
||||
FMT_TO_STR(WINED3DFMT_X8R8G8B8);
|
||||
FMT_TO_STR(WINED3DFMT_R5G6B5);
|
||||
FMT_TO_STR(WINED3DFMT_X1R5G5B5);
|
||||
FMT_TO_STR(WINED3DFMT_A1R5G5B5);
|
||||
FMT_TO_STR(WINED3DFMT_A4R4G4B4);
|
||||
FMT_TO_STR(WINED3DFMT_R3G3B2);
|
||||
FMT_TO_STR(WINED3DFMT_A8);
|
||||
FMT_TO_STR(WINED3DFMT_A8R3G3B2);
|
||||
FMT_TO_STR(WINED3DFMT_X4R4G4B4);
|
||||
FMT_TO_STR(WINED3DFMT_G16R16);
|
||||
FMT_TO_STR(WINED3DFMT_A2R10G10B10);
|
||||
FMT_TO_STR(WINED3DFMT_A16B16G16R16);
|
||||
FMT_TO_STR(WINED3DFMT_A8P8);
|
||||
FMT_TO_STR(WINED3DFMT_P8);
|
||||
FMT_TO_STR(WINED3DFMT_L8);
|
||||
FMT_TO_STR(WINED3DFMT_A8L8);
|
||||
FMT_TO_STR(WINED3DFMT_A4L4);
|
||||
FMT_TO_STR(WINED3DFMT_V8U8);
|
||||
FMT_TO_STR(WINED3DFMT_L6V5U5);
|
||||
FMT_TO_STR(WINED3DFMT_X8L8V8U8);
|
||||
FMT_TO_STR(WINED3DFMT_Q8W8V8U8);
|
||||
FMT_TO_STR(WINED3DFMT_V16U16);
|
||||
FMT_TO_STR(WINED3DFMT_W11V11U10);
|
||||
FMT_TO_STR(WINED3DFMT_A2W10V10U10);
|
||||
FMT_TO_STR(WINED3DFMT_UYVY);
|
||||
FMT_TO_STR(WINED3DFMT_YUY2);
|
||||
FMT_TO_STR(WINED3DFMT_DXT1);
|
||||
FMT_TO_STR(WINED3DFMT_DXT2);
|
||||
FMT_TO_STR(WINED3DFMT_DXT3);
|
||||
FMT_TO_STR(WINED3DFMT_DXT4);
|
||||
FMT_TO_STR(WINED3DFMT_DXT5);
|
||||
FMT_TO_STR(WINED3DFMT_MULTI2_ARGB);
|
||||
FMT_TO_STR(WINED3DFMT_G8R8_G8B8);
|
||||
FMT_TO_STR(WINED3DFMT_R8G8_B8G8);
|
||||
FMT_TO_STR(WINED3DFMT_D16_LOCKABLE);
|
||||
FMT_TO_STR(WINED3DFMT_D32);
|
||||
FMT_TO_STR(WINED3DFMT_D15S1);
|
||||
FMT_TO_STR(WINED3DFMT_D24S8);
|
||||
FMT_TO_STR(WINED3DFMT_D24X8);
|
||||
FMT_TO_STR(WINED3DFMT_D24X4S4);
|
||||
FMT_TO_STR(WINED3DFMT_D16);
|
||||
FMT_TO_STR(WINED3DFMT_D32F_LOCKABLE);
|
||||
FMT_TO_STR(WINED3DFMT_VERTEXDATA);
|
||||
FMT_TO_STR(WINED3DFMT_INDEX16);
|
||||
FMT_TO_STR(WINED3DFMT_INDEX32);
|
||||
FMT_TO_STR(WINED3DFMT_Q16W16V16U16);
|
||||
FMT_TO_STR(WINED3DFMT_R16F);
|
||||
FMT_TO_STR(WINED3DFMT_G16R16F);
|
||||
FMT_TO_STR(WINED3DFMT_A16B16G16R16F);
|
||||
#undef FMT_TO_STR
|
||||
default:
|
||||
FIXME("Unrecognized %u D3DFORMAT!\n", fmt);
|
||||
|
@ -147,82 +159,82 @@ const char* debug_d3dprimitivetype(D3DPRIMITIVETYPE PrimitiveType) {
|
|||
const char* debug_d3drenderstate(DWORD state) {
|
||||
switch (state) {
|
||||
#define D3DSTATE_TO_STR(u) case u: return #u
|
||||
D3DSTATE_TO_STR(D3DRS_ZENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_FILLMODE );
|
||||
D3DSTATE_TO_STR(D3DRS_SHADEMODE );
|
||||
D3DSTATE_TO_STR(D3DRS_LINEPATTERN );
|
||||
D3DSTATE_TO_STR(D3DRS_ZWRITEENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_ALPHATESTENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_LASTPIXEL );
|
||||
D3DSTATE_TO_STR(D3DRS_SRCBLEND );
|
||||
D3DSTATE_TO_STR(D3DRS_DESTBLEND );
|
||||
D3DSTATE_TO_STR(D3DRS_CULLMODE );
|
||||
D3DSTATE_TO_STR(D3DRS_ZFUNC );
|
||||
D3DSTATE_TO_STR(D3DRS_ALPHAREF );
|
||||
D3DSTATE_TO_STR(D3DRS_ALPHAFUNC );
|
||||
D3DSTATE_TO_STR(D3DRS_DITHERENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_ALPHABLENDENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_SPECULARENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_ZVISIBLE );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGCOLOR );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGTABLEMODE );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGSTART );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGEND );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGDENSITY );
|
||||
D3DSTATE_TO_STR(D3DRS_EDGEANTIALIAS );
|
||||
D3DSTATE_TO_STR(D3DRS_ZBIAS );
|
||||
D3DSTATE_TO_STR(D3DRS_RANGEFOGENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILFAIL );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILZFAIL );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILPASS );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILFUNC );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILREF );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILMASK );
|
||||
D3DSTATE_TO_STR(D3DRS_STENCILWRITEMASK );
|
||||
D3DSTATE_TO_STR(D3DRS_TEXTUREFACTOR );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP0 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP1 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP2 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP3 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP4 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP5 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP6 );
|
||||
D3DSTATE_TO_STR(D3DRS_WRAP7 );
|
||||
D3DSTATE_TO_STR(D3DRS_CLIPPING );
|
||||
D3DSTATE_TO_STR(D3DRS_LIGHTING );
|
||||
D3DSTATE_TO_STR(D3DRS_AMBIENT );
|
||||
D3DSTATE_TO_STR(D3DRS_FOGVERTEXMODE );
|
||||
D3DSTATE_TO_STR(D3DRS_COLORVERTEX );
|
||||
D3DSTATE_TO_STR(D3DRS_LOCALVIEWER );
|
||||
D3DSTATE_TO_STR(D3DRS_NORMALIZENORMALS );
|
||||
D3DSTATE_TO_STR(D3DRS_DIFFUSEMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(D3DRS_SPECULARMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(D3DRS_AMBIENTMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(D3DRS_EMISSIVEMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(D3DRS_VERTEXBLEND );
|
||||
D3DSTATE_TO_STR(D3DRS_CLIPPLANEENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_SOFTWAREVERTEXPROCESSING );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSIZE );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSIZE_MIN );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSPRITEENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSCALEENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSCALE_A );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSCALE_B );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSCALE_C );
|
||||
D3DSTATE_TO_STR(D3DRS_MULTISAMPLEANTIALIAS );
|
||||
D3DSTATE_TO_STR(D3DRS_MULTISAMPLEMASK );
|
||||
D3DSTATE_TO_STR(D3DRS_PATCHEDGESTYLE );
|
||||
D3DSTATE_TO_STR(D3DRS_PATCHSEGMENTS );
|
||||
D3DSTATE_TO_STR(D3DRS_DEBUGMONITORTOKEN );
|
||||
D3DSTATE_TO_STR(D3DRS_POINTSIZE_MAX );
|
||||
D3DSTATE_TO_STR(D3DRS_INDEXEDVERTEXBLENDENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_COLORWRITEENABLE );
|
||||
D3DSTATE_TO_STR(D3DRS_TWEENFACTOR );
|
||||
D3DSTATE_TO_STR(D3DRS_BLENDOP );
|
||||
D3DSTATE_TO_STR(D3DRS_POSITIONORDER );
|
||||
D3DSTATE_TO_STR(D3DRS_NORMALORDER );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ZENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FILLMODE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_SHADEMODE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_LINEPATTERN );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ZWRITEENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ALPHATESTENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_LASTPIXEL );
|
||||
D3DSTATE_TO_STR(WINED3DRS_SRCBLEND );
|
||||
D3DSTATE_TO_STR(WINED3DRS_DESTBLEND );
|
||||
D3DSTATE_TO_STR(WINED3DRS_CULLMODE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ZFUNC );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ALPHAREF );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ALPHAFUNC );
|
||||
D3DSTATE_TO_STR(WINED3DRS_DITHERENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ALPHABLENDENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_SPECULARENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ZVISIBLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGCOLOR );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGTABLEMODE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGSTART );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGEND );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGDENSITY );
|
||||
D3DSTATE_TO_STR(WINED3DRS_EDGEANTIALIAS );
|
||||
D3DSTATE_TO_STR(WINED3DRS_ZBIAS );
|
||||
D3DSTATE_TO_STR(WINED3DRS_RANGEFOGENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILFAIL );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILZFAIL );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILPASS );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILFUNC );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILREF );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILMASK );
|
||||
D3DSTATE_TO_STR(WINED3DRS_STENCILWRITEMASK );
|
||||
D3DSTATE_TO_STR(WINED3DRS_TEXTUREFACTOR );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP0 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP1 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP2 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP3 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP4 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP5 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP6 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_WRAP7 );
|
||||
D3DSTATE_TO_STR(WINED3DRS_CLIPPING );
|
||||
D3DSTATE_TO_STR(WINED3DRS_LIGHTING );
|
||||
D3DSTATE_TO_STR(WINED3DRS_AMBIENT );
|
||||
D3DSTATE_TO_STR(WINED3DRS_FOGVERTEXMODE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_COLORVERTEX );
|
||||
D3DSTATE_TO_STR(WINED3DRS_LOCALVIEWER );
|
||||
D3DSTATE_TO_STR(WINED3DRS_NORMALIZENORMALS );
|
||||
D3DSTATE_TO_STR(WINED3DRS_DIFFUSEMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_SPECULARMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_AMBIENTMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_EMISSIVEMATERIALSOURCE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_VERTEXBLEND );
|
||||
D3DSTATE_TO_STR(WINED3DRS_CLIPPLANEENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_SOFTWAREVERTEXPROCESSING );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSIZE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSIZE_MIN );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSPRITEENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSCALEENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSCALE_A );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSCALE_B );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSCALE_C );
|
||||
D3DSTATE_TO_STR(WINED3DRS_MULTISAMPLEANTIALIAS );
|
||||
D3DSTATE_TO_STR(WINED3DRS_MULTISAMPLEMASK );
|
||||
D3DSTATE_TO_STR(WINED3DRS_PATCHEDGESTYLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_PATCHSEGMENTS );
|
||||
D3DSTATE_TO_STR(WINED3DRS_DEBUGMONITORTOKEN );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POINTSIZE_MAX );
|
||||
D3DSTATE_TO_STR(WINED3DRS_INDEXEDVERTEXBLENDENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_COLORWRITEENABLE );
|
||||
D3DSTATE_TO_STR(WINED3DRS_TWEENFACTOR );
|
||||
D3DSTATE_TO_STR(WINED3DRS_BLENDOP );
|
||||
D3DSTATE_TO_STR(WINED3DRS_POSITIONORDER );
|
||||
D3DSTATE_TO_STR(WINED3DRS_NORMALORDER );
|
||||
#undef D3DSTATE_TO_STR
|
||||
default:
|
||||
FIXME("Unrecognized %lu render state!\n", state);
|
||||
|
@ -1540,9 +1552,9 @@ GLint D3DFmt2GLIntFmt(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
|
||||
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
||||
switch (fmt) {
|
||||
case D3DFMT_DXT1: retVal = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break;
|
||||
case D3DFMT_DXT3: retVal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break;
|
||||
case D3DFMT_DXT5: retVal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break;
|
||||
case WINED3DFMT_DXT1: retVal = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break;
|
||||
case WINED3DFMT_DXT3: retVal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break;
|
||||
case WINED3DFMT_DXT5: retVal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break;
|
||||
default:
|
||||
/* stupid compiler */
|
||||
break;
|
||||
|
@ -1552,29 +1564,29 @@ GLint D3DFmt2GLIntFmt(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
if (retVal == 0) {
|
||||
switch (fmt) {
|
||||
/* Paletted */
|
||||
case D3DFMT_P8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case D3DFMT_A8P8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case WINED3DFMT_P8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case WINED3DFMT_A8P8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
/* Luminance */
|
||||
case D3DFMT_L8: retVal = GL_LUMINANCE8; break;
|
||||
case D3DFMT_A8L8: retVal = GL_LUMINANCE8_ALPHA8; break;
|
||||
case D3DFMT_A4L4: retVal = GL_LUMINANCE4_ALPHA4; break;
|
||||
case WINED3DFMT_L8: retVal = GL_LUMINANCE8; break;
|
||||
case WINED3DFMT_A8L8: retVal = GL_LUMINANCE8_ALPHA8; break;
|
||||
case WINED3DFMT_A4L4: retVal = GL_LUMINANCE4_ALPHA4; break;
|
||||
/* Bump */
|
||||
case D3DFMT_V8U8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case D3DFMT_V16U16: retVal = GL_COLOR_INDEX; break;
|
||||
case D3DFMT_L6V5U5: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case D3DFMT_X8L8V8U8: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_V8U8: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case WINED3DFMT_V16U16: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_L6V5U5: retVal = GL_COLOR_INDEX8_EXT; break;
|
||||
case WINED3DFMT_X8L8V8U8: retVal = GL_COLOR_INDEX; break;
|
||||
/* color buffer */
|
||||
case D3DFMT_R3G3B2: retVal = GL_R3_G3_B2; break;
|
||||
case D3DFMT_R5G6B5: retVal = GL_RGB5; break; /* fixme: internal format 6 for g? */
|
||||
case D3DFMT_R8G8B8: retVal = GL_RGB8; break;
|
||||
case D3DFMT_A1R5G5B5: retVal = GL_RGB5_A1; break;
|
||||
case D3DFMT_X1R5G5B5: retVal = GL_RGB5_A1; break;
|
||||
case D3DFMT_A4R4G4B4: retVal = GL_RGBA4; break;
|
||||
case D3DFMT_X4R4G4B4: retVal = GL_RGBA4; break;
|
||||
case D3DFMT_A8R8G8B8: retVal = GL_RGBA8; break;
|
||||
case D3DFMT_X8R8G8B8: retVal = GL_RGBA8; break;
|
||||
case WINED3DFMT_R3G3B2: retVal = GL_R3_G3_B2; break;
|
||||
case WINED3DFMT_R5G6B5: retVal = GL_RGB5; break; /* fixme: internal format 6 for g? */
|
||||
case WINED3DFMT_R8G8B8: retVal = GL_RGB8; break;
|
||||
case WINED3DFMT_A1R5G5B5: retVal = GL_RGB5_A1; break;
|
||||
case WINED3DFMT_X1R5G5B5: retVal = GL_RGB5_A1; break;
|
||||
case WINED3DFMT_A4R4G4B4: retVal = GL_RGBA4; break;
|
||||
case WINED3DFMT_X4R4G4B4: retVal = GL_RGBA4; break;
|
||||
case WINED3DFMT_A8R8G8B8: retVal = GL_RGBA8; break;
|
||||
case WINED3DFMT_X8R8G8B8: retVal = GL_RGBA8; break;
|
||||
/* to see */
|
||||
case D3DFMT_A8: retVal = GL_ALPHA8; break;
|
||||
case WINED3DFMT_A8: retVal = GL_ALPHA8; break;
|
||||
default:
|
||||
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
|
||||
retVal = GL_RGB8;
|
||||
|
@ -1589,9 +1601,9 @@ GLenum D3DFmt2GLFmt(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
|
||||
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
||||
switch (fmt) {
|
||||
case D3DFMT_DXT1: retVal = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break;
|
||||
case D3DFMT_DXT3: retVal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break;
|
||||
case D3DFMT_DXT5: retVal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break;
|
||||
case WINED3DFMT_DXT1: retVal = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; break;
|
||||
case WINED3DFMT_DXT3: retVal = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; break;
|
||||
case WINED3DFMT_DXT5: retVal = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; break;
|
||||
default:
|
||||
/* stupid compiler */
|
||||
break;
|
||||
|
@ -1601,29 +1613,29 @@ GLenum D3DFmt2GLFmt(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
if (retVal == 0) {
|
||||
switch (fmt) {
|
||||
/* Paletted */
|
||||
case D3DFMT_P8: retVal = GL_COLOR_INDEX; break;
|
||||
case D3DFMT_A8P8: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_P8: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_A8P8: retVal = GL_COLOR_INDEX; break;
|
||||
/* Luminance */
|
||||
case D3DFMT_L8: retVal = GL_LUMINANCE; break;
|
||||
case D3DFMT_A8L8: retVal = GL_LUMINANCE_ALPHA; break;
|
||||
case D3DFMT_A4L4: retVal = GL_LUMINANCE_ALPHA; break;
|
||||
case WINED3DFMT_L8: retVal = GL_LUMINANCE; break;
|
||||
case WINED3DFMT_A8L8: retVal = GL_LUMINANCE_ALPHA; break;
|
||||
case WINED3DFMT_A4L4: retVal = GL_LUMINANCE_ALPHA; break;
|
||||
/* Bump */
|
||||
case D3DFMT_V8U8: retVal = GL_COLOR_INDEX; break;
|
||||
case D3DFMT_V16U16: retVal = GL_COLOR_INDEX; break;
|
||||
case D3DFMT_L6V5U5: retVal = GL_COLOR_INDEX; break;
|
||||
case D3DFMT_X8L8V8U8: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_V8U8: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_V16U16: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_L6V5U5: retVal = GL_COLOR_INDEX; break;
|
||||
case WINED3DFMT_X8L8V8U8: retVal = GL_COLOR_INDEX; break;
|
||||
/* color buffer */
|
||||
case D3DFMT_R3G3B2: retVal = GL_BGR; break;
|
||||
case D3DFMT_R5G6B5: retVal = GL_RGB; break;
|
||||
case D3DFMT_R8G8B8: retVal = GL_RGB; break;
|
||||
case D3DFMT_A1R5G5B5: retVal = GL_BGRA; break;
|
||||
case D3DFMT_X1R5G5B5: retVal = GL_BGRA; break;
|
||||
case D3DFMT_A4R4G4B4: retVal = GL_BGRA; break;
|
||||
case D3DFMT_X4R4G4B4: retVal = GL_BGRA; break;
|
||||
case D3DFMT_A8R8G8B8: retVal = GL_BGRA; break;
|
||||
case D3DFMT_X8R8G8B8: retVal = GL_BGRA; break;
|
||||
case WINED3DFMT_R3G3B2: retVal = GL_BGR; break;
|
||||
case WINED3DFMT_R5G6B5: retVal = GL_RGB; break;
|
||||
case WINED3DFMT_R8G8B8: retVal = GL_RGB; break;
|
||||
case WINED3DFMT_A1R5G5B5: retVal = GL_BGRA; break;
|
||||
case WINED3DFMT_X1R5G5B5: retVal = GL_BGRA; break;
|
||||
case WINED3DFMT_A4R4G4B4: retVal = GL_BGRA; break;
|
||||
case WINED3DFMT_X4R4G4B4: retVal = GL_BGRA; break;
|
||||
case WINED3DFMT_A8R8G8B8: retVal = GL_BGRA; break;
|
||||
case WINED3DFMT_X8R8G8B8: retVal = GL_BGRA; break;
|
||||
/* to see */
|
||||
case D3DFMT_A8: retVal = GL_ALPHA; break;
|
||||
case WINED3DFMT_A8: retVal = GL_ALPHA; break;
|
||||
default:
|
||||
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
|
||||
retVal = GL_BGR;
|
||||
|
@ -1639,9 +1651,9 @@ GLenum D3DFmt2GLType(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
|
||||
if (GL_SUPPORT(EXT_TEXTURE_COMPRESSION_S3TC)) {
|
||||
switch (fmt) {
|
||||
case D3DFMT_DXT1: retVal = 0; break;
|
||||
case D3DFMT_DXT3: retVal = 0; break;
|
||||
case D3DFMT_DXT5: retVal = 0; break;
|
||||
case WINED3DFMT_DXT1: retVal = 0; break;
|
||||
case WINED3DFMT_DXT3: retVal = 0; break;
|
||||
case WINED3DFMT_DXT5: retVal = 0; break;
|
||||
default:
|
||||
/* stupid compiler */
|
||||
break;
|
||||
|
@ -1651,29 +1663,29 @@ GLenum D3DFmt2GLType(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
if (retVal == 0) {
|
||||
switch (fmt) {
|
||||
/* Paletted */
|
||||
case D3DFMT_P8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case D3DFMT_A8P8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_P8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_A8P8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
/* Luminance */
|
||||
case D3DFMT_L8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case D3DFMT_A8L8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case D3DFMT_A4L4: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_L8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_A8L8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_A4L4: retVal = GL_UNSIGNED_BYTE; break;
|
||||
/* Bump */
|
||||
case D3DFMT_V8U8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case D3DFMT_V16U16: retVal = GL_UNSIGNED_SHORT; break;
|
||||
case D3DFMT_L6V5U5: retVal = GL_UNSIGNED_SHORT_5_5_5_1; break;
|
||||
case D3DFMT_X8L8V8U8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_V8U8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_V16U16: retVal = GL_UNSIGNED_SHORT; break;
|
||||
case WINED3DFMT_L6V5U5: retVal = GL_UNSIGNED_SHORT_5_5_5_1; break;
|
||||
case WINED3DFMT_X8L8V8U8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
/* Color buffer */
|
||||
case D3DFMT_R3G3B2: retVal = GL_UNSIGNED_BYTE_2_3_3_REV; break;
|
||||
case D3DFMT_R5G6B5: retVal = GL_UNSIGNED_SHORT_5_6_5; break;
|
||||
case D3DFMT_R8G8B8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case D3DFMT_A1R5G5B5: retVal = GL_UNSIGNED_SHORT_1_5_5_5_REV; break;
|
||||
case D3DFMT_X1R5G5B5: retVal = GL_UNSIGNED_SHORT_1_5_5_5_REV; break;
|
||||
case D3DFMT_A4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
|
||||
case D3DFMT_X4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
|
||||
case D3DFMT_A8R8G8B8: retVal = GL_UNSIGNED_INT_8_8_8_8_REV; break;
|
||||
case D3DFMT_X8R8G8B8: retVal = GL_UNSIGNED_INT_8_8_8_8_REV; break;
|
||||
case WINED3DFMT_R3G3B2: retVal = GL_UNSIGNED_BYTE_2_3_3_REV; break;
|
||||
case WINED3DFMT_R5G6B5: retVal = GL_UNSIGNED_SHORT_5_6_5; break;
|
||||
case WINED3DFMT_R8G8B8: retVal = GL_UNSIGNED_BYTE; break;
|
||||
case WINED3DFMT_A1R5G5B5: retVal = GL_UNSIGNED_SHORT_1_5_5_5_REV; break;
|
||||
case WINED3DFMT_X1R5G5B5: retVal = GL_UNSIGNED_SHORT_1_5_5_5_REV; break;
|
||||
case WINED3DFMT_A4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
|
||||
case WINED3DFMT_X4R4G4B4: retVal = GL_UNSIGNED_SHORT_4_4_4_4_REV; break;
|
||||
case WINED3DFMT_A8R8G8B8: retVal = GL_UNSIGNED_INT_8_8_8_8_REV; break;
|
||||
case WINED3DFMT_X8R8G8B8: retVal = GL_UNSIGNED_INT_8_8_8_8_REV; break;
|
||||
/* to see */
|
||||
case D3DFMT_A8: retVal = GL_ALPHA; break;
|
||||
case WINED3DFMT_A8: retVal = GL_ALPHA; break;
|
||||
default:
|
||||
FIXME("Unhandled fmt(%u,%s)\n", fmt, debug_d3dformat(fmt));
|
||||
retVal = GL_UNSIGNED_BYTE;
|
||||
|
@ -1689,45 +1701,45 @@ SHORT D3DFmtGetBpp(IWineD3DDeviceImpl* This, D3DFORMAT fmt) {
|
|||
|
||||
switch (fmt) {
|
||||
/* color buffer */
|
||||
case D3DFMT_R3G3B2: retVal = 1; break;
|
||||
case D3DFMT_R5G6B5: retVal = 2; break;
|
||||
case D3DFMT_R8G8B8: retVal = 3; break;
|
||||
case D3DFMT_A1R5G5B5: retVal = 2; break;
|
||||
case D3DFMT_X1R5G5B5: retVal = 2; break;
|
||||
case D3DFMT_A4R4G4B4: retVal = 2; break;
|
||||
case D3DFMT_X4R4G4B4: retVal = 2; break;
|
||||
case D3DFMT_A8R8G8B8: retVal = 4; break;
|
||||
case D3DFMT_X8R8G8B8: retVal = 4; break;
|
||||
case WINED3DFMT_R3G3B2: retVal = 1; break;
|
||||
case WINED3DFMT_R5G6B5: retVal = 2; break;
|
||||
case WINED3DFMT_R8G8B8: retVal = 3; break;
|
||||
case WINED3DFMT_A1R5G5B5: retVal = 2; break;
|
||||
case WINED3DFMT_X1R5G5B5: retVal = 2; break;
|
||||
case WINED3DFMT_A4R4G4B4: retVal = 2; break;
|
||||
case WINED3DFMT_X4R4G4B4: retVal = 2; break;
|
||||
case WINED3DFMT_A8R8G8B8: retVal = 4; break;
|
||||
case WINED3DFMT_X8R8G8B8: retVal = 4; break;
|
||||
/* Paletted */
|
||||
case D3DFMT_P8: retVal = 1; break;
|
||||
case D3DFMT_A8P8: retVal = 2; break;
|
||||
case WINED3DFMT_P8: retVal = 1; break;
|
||||
case WINED3DFMT_A8P8: retVal = 2; break;
|
||||
/* depth/stencil buffer */
|
||||
case D3DFMT_D16_LOCKABLE: retVal = 2; break;
|
||||
case D3DFMT_D16: retVal = 2; break;
|
||||
case D3DFMT_D32: retVal = 4; break;
|
||||
case D3DFMT_D15S1: retVal = 2; break;
|
||||
case D3DFMT_D24X4S4: retVal = 4; break;
|
||||
case D3DFMT_D24S8: retVal = 4; break;
|
||||
case D3DFMT_D24X8: retVal = 4; break;
|
||||
case WINED3DFMT_D16_LOCKABLE: retVal = 2; break;
|
||||
case WINED3DFMT_D16: retVal = 2; break;
|
||||
case WINED3DFMT_D32: retVal = 4; break;
|
||||
case WINED3DFMT_D15S1: retVal = 2; break;
|
||||
case WINED3DFMT_D24X4S4: retVal = 4; break;
|
||||
case WINED3DFMT_D24S8: retVal = 4; break;
|
||||
case WINED3DFMT_D24X8: retVal = 4; break;
|
||||
/* Luminance */
|
||||
case D3DFMT_L8: retVal = 1; break;
|
||||
case D3DFMT_A4L4: retVal = 1; break;
|
||||
case D3DFMT_A8L8: retVal = 2; break;
|
||||
case WINED3DFMT_L8: retVal = 1; break;
|
||||
case WINED3DFMT_A4L4: retVal = 1; break;
|
||||
case WINED3DFMT_A8L8: retVal = 2; break;
|
||||
/* Bump */
|
||||
case D3DFMT_V8U8: retVal = 2; break;
|
||||
case D3DFMT_L6V5U5: retVal = 2; break;
|
||||
case D3DFMT_V16U16: retVal = 4; break;
|
||||
case D3DFMT_X8L8V8U8: retVal = 4; break;
|
||||
case WINED3DFMT_V8U8: retVal = 2; break;
|
||||
case WINED3DFMT_L6V5U5: retVal = 2; break;
|
||||
case WINED3DFMT_V16U16: retVal = 4; break;
|
||||
case WINED3DFMT_X8L8V8U8: retVal = 4; break;
|
||||
/* Compressed */
|
||||
case D3DFMT_DXT1: retVal = 1; break; /* Actually 8 bytes per 16 pixels - Special cased later */
|
||||
case D3DFMT_DXT3: retVal = 1; break; /* Actually 16 bytes per 16 pixels */
|
||||
case D3DFMT_DXT5: retVal = 1; break; /* Actually 16 bytes per 16 pixels */
|
||||
case WINED3DFMT_DXT1: retVal = 1; break; /* Actually 8 bytes per 16 pixels - Special cased later */
|
||||
case WINED3DFMT_DXT3: retVal = 1; break; /* Actually 16 bytes per 16 pixels */
|
||||
case WINED3DFMT_DXT5: retVal = 1; break; /* Actually 16 bytes per 16 pixels */
|
||||
/* to see */
|
||||
case D3DFMT_A8: retVal = 1; break;
|
||||
case WINED3DFMT_A8: retVal = 1; break;
|
||||
/* unknown */
|
||||
case D3DFMT_UNKNOWN:
|
||||
case WINED3DFMT_UNKNOWN:
|
||||
/* Guess at the highest value of the above */
|
||||
TRACE("D3DFMT_UNKNOWN - Guessing at 4 bytes/pixel %u\n", fmt);
|
||||
TRACE("WINED3DFMT_UNKNOWN - Guessing at 4 bytes/pixel %u\n", fmt);
|
||||
retVal = 4;
|
||||
break;
|
||||
|
||||
|
|
|
@ -126,13 +126,12 @@ extern int num_lock;
|
|||
|
||||
#define MAX_STREAMS 16 /* Maximum possible streams - used for fixed size arrays
|
||||
See MaxStreams in MSDN under GetDeviceCaps */
|
||||
/* Maximum number of constants provided to the shaders */
|
||||
#define HIGHEST_TRANSFORMSTATE 512
|
||||
/* Highest value in D3DTRANSFORMSTATETYPE */
|
||||
#define HIGHEST_RENDER_STATE 209
|
||||
/* Highest D3DRS_ value */
|
||||
#define HIGHEST_TEXTURE_STATE 32
|
||||
#define HIGHEST_TEXTURE_STATE D3DTSS_CONSTANT
|
||||
/* Highest D3DTSS_ value */
|
||||
#define WINED3D_VSHADER_MAX_CONSTANTS 96
|
||||
#define HIGHEST_SAMPLER_STATE D3DSAMP_DMAPOFFSET
|
||||
/* Maximum number of constants provided to the shaders */
|
||||
#define MAX_CLIPPLANES D3DMAXUSERCLIPPLANES
|
||||
|
||||
|
@ -666,7 +665,7 @@ typedef struct SAVEDSTATES {
|
|||
BOOL textures[8];
|
||||
BOOL transform[HIGHEST_TRANSFORMSTATE];
|
||||
BOOL viewport;
|
||||
BOOL renderState[HIGHEST_RENDER_STATE];
|
||||
BOOL renderState[WINEHIGHEST_RENDER_STATE];
|
||||
BOOL textureState[8][HIGHEST_TEXTURE_STATE];
|
||||
BOOL clipplane[MAX_CLIPPLANES];
|
||||
BOOL vertexDecl;
|
||||
|
@ -727,7 +726,7 @@ struct IWineD3DStateBlockImpl
|
|||
FLOAT tween_factor;
|
||||
|
||||
/* RenderState */
|
||||
DWORD renderState[HIGHEST_RENDER_STATE];
|
||||
DWORD renderState[WINEHIGHEST_RENDER_STATE];
|
||||
|
||||
/* Texture */
|
||||
IWineD3DBaseTexture *textures[8];
|
||||
|
@ -740,6 +739,31 @@ struct IWineD3DStateBlockImpl
|
|||
|
||||
extern IWineD3DStateBlockVtbl IWineD3DStateBlock_Vtbl;
|
||||
|
||||
/*****************************************************************************
|
||||
* IWineD3DQueryImpl implementation structure (extends IUnknown)
|
||||
*/
|
||||
typedef struct IWineD3DQueryImpl
|
||||
{
|
||||
IWineD3DQueryVtbl *lpVtbl;
|
||||
DWORD ref; /* Note: Ref counting not required */
|
||||
|
||||
IUnknown *parent;
|
||||
/*TODO: replace with iface usage */
|
||||
#if 0
|
||||
IWineD3DDevice *wineD3DDevice;
|
||||
#else
|
||||
IWineD3DDeviceImpl *wineD3DDevice;
|
||||
#endif
|
||||
/* IWineD3DQuery fields */
|
||||
|
||||
D3DQUERYTYPE type;
|
||||
void *extendedData;
|
||||
|
||||
|
||||
} IWineD3DQueryImpl;
|
||||
|
||||
extern IWineD3DQueryVtbl IWineD3DQuery_Vtbl;
|
||||
|
||||
/*****************************************************************************
|
||||
* Utility function prototypes
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Copyright (C) 2002-2003 Jason Edmeades
|
||||
* Raphael Junqueira
|
||||
* Copyright (C) 2002-2003 Raphael Junqueira
|
||||
* Copyright (C) 2005 Oliver Stieber
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
|
@ -73,6 +74,7 @@
|
|||
#define D3DLOCK_NOSYSLOCK 0x0800
|
||||
#define D3DLOCK_NOOVERWRITE 0x1000
|
||||
#define D3DLOCK_DISCARD 0x2000
|
||||
#define D3DLOCK_DONOTWAIT 0x4000
|
||||
#define D3DLOCK_NO_DIRTY_UPDATE 0x8000
|
||||
|
||||
#define D3DMAXUSERCLIPPLANES 32
|
||||
|
@ -86,6 +88,7 @@
|
|||
|
||||
#define D3DRENDERSTATE_WRAPBIAS 128UL
|
||||
|
||||
/* MSDN has this in d3d9caps.h, but it should be here */
|
||||
#define D3DTSS_TCI_PASSTHRU 0x00000
|
||||
#define D3DTSS_TCI_CAMERASPACENORMAL 0x10000
|
||||
#define D3DTSS_TCI_CAMERASPACEPOSITION 0x20000
|
||||
|
@ -99,15 +102,25 @@
|
|||
#define D3DTS_WORLD3 D3DTS_WORLDMATRIX(3)
|
||||
#define D3DTS_WORLDMATRIX(index) (D3DTRANSFORMSTATETYPE)(index + 256)
|
||||
|
||||
#define D3DUSAGE_RENDERTARGET 0x01
|
||||
#define D3DUSAGE_DEPTHSTENCIL 0x02
|
||||
#define D3DUSAGE_WRITEONLY 0x08
|
||||
#define D3DUSAGE_SOFTWAREPROCESSING 0x10
|
||||
#define D3DUSAGE_DONOTCLIP 0x20
|
||||
#define D3DUSAGE_POINTS 0x40
|
||||
#define D3DUSAGE_RTPATCHES 0x80
|
||||
#define D3DUSAGE_NPATCHES 0x100
|
||||
#define D3DUSAGE_DYNAMIC 0x200
|
||||
#define D3DUSAGE_RENDERTARGET 0x00000001L
|
||||
#define D3DUSAGE_DEPTHSTENCIL 0x00000002L
|
||||
#define D3DUSAGE_WRITEONLY 0x00000008L
|
||||
#define D3DUSAGE_SOFTWAREPROCESSING 0x00000010L
|
||||
#define D3DUSAGE_DONOTCLIP 0x00000020L
|
||||
#define D3DUSAGE_POINTS 0x00000040L
|
||||
#define D3DUSAGE_RTPATCHES 0x00000080L
|
||||
#define D3DUSAGE_NPATCHES 0x00000100L
|
||||
#define D3DUSAGE_DYNAMIC 0x00000200L
|
||||
#define D3DUSAGE_AUTOGENMIPMAP 0x00000400L
|
||||
#define D3DUSAGE_DMAP 0x00004000L
|
||||
|
||||
#define D3DUSAGE_QUERY_FILTER 0x00020000L
|
||||
#define D3DUSAGE_QUERY_LEGACYBUMPMAP 0x00008000L
|
||||
#define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING 0x00080000L
|
||||
#define D3DUSAGE_QUERY_SRGBREAD 0x00010000L
|
||||
#define D3DUSAGE_QUERY_SRGBWRITE 0x00040000L
|
||||
#define D3DUSAGE_QUERY_VERTEXTEXTURE 0x00100000L
|
||||
|
||||
|
||||
#define D3DWRAP_U 1
|
||||
#define D3DWRAP_V 2
|
||||
|
@ -164,8 +177,19 @@
|
|||
#define D3DCOLORWRITEENABLE_BLUE (1L<<2)
|
||||
#define D3DCOLORWRITEENABLE_ALPHA (1L<<3)
|
||||
|
||||
#define D3DPV_DONOTCOPYDATA (1 << 0)
|
||||
|
||||
#define D3DSTREAMSOURCE_INDEXEDDATA (1 << 30)
|
||||
#define D3DSTREAMSOURCE_INSTANCEDATA (2 << 30)
|
||||
|
||||
#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS 4
|
||||
|
||||
#define MAXD3DDECLLENGTH 64 /* +end marker */
|
||||
#define MAXD3DDECLMETHOD D3DDECLMETHOD_LOOKUPPRESAMPLED
|
||||
#define MAXD3DDECLTYPE D3DDECLTYPE_UNUSED
|
||||
#define MAXD3DDECLUSAGE D3DDECLUSAGE_SAMPLE
|
||||
#define MAXD3DDECLUSAGEINDEX 15
|
||||
|
||||
#define D3DDMAPSAMPLER 256
|
||||
#define D3DVERTEXTEXTURESAMPLER0 (D3DDMAPSAMPLER+1)
|
||||
#define D3DVERTEXTEXTURESAMPLER1 (D3DDMAPSAMPLER+2)
|
||||
|
@ -176,6 +200,14 @@
|
|||
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
|
||||
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
|
||||
|
||||
/* Constants used by D3DPRESENT_PARAMETERS. when creating a device or swapchain */
|
||||
|
||||
#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER 0x00000001 /* Create a lockable backbuffer */
|
||||
#define D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL 0x00000002 /* Discard Z buffer */
|
||||
#define D3DPRESENTFLAG_DEVICECLIP 0x00000004 /* Clip the window blited into the client area 2k + xp only */
|
||||
#define D3DPRESENTFLAG_VIDEO 0x00000010 /* backbuffer 'may' contain video data */
|
||||
|
||||
|
||||
|
||||
/****************************
|
||||
* Vertex Shaders Declaration
|
||||
|
@ -198,21 +230,32 @@ typedef enum _D3DDECLUSAGE {
|
|||
D3DDECLUSAGE_SAMPLE = 13
|
||||
} D3DDECLUSAGE;
|
||||
|
||||
#define MAXD3DDECLUSAGE D3DDECLUSAGE_SAMPLE
|
||||
#define MAXD3DDECLUSAGEINDEX 15
|
||||
#define MAXD3DDECLLENGTH 64
|
||||
/* MSDN is quite confussing at this point...
|
||||
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/graphics/reference/d3d/constants/OTHER_D3D.asp
|
||||
says D3DMAX, and D3DMAXDECLUSAGE = D3DDECLUSAGE_DEPTH
|
||||
http://msdn.microsoft.com/library/default.asp?url=/archive/en-us/directx9_c_summer_03/directx/graphics/reference/d3d/constants/other_d3d.asp
|
||||
says MAXD3D, and D3DDECLUSAGE_SAMPLE
|
||||
|
||||
So both are defined
|
||||
*/
|
||||
|
||||
#define D3DMAXDECLUSAGE D3DDECLUSAGE_SAMPLE
|
||||
#define D3DMAXDECLUSAGEINDEX 15
|
||||
#define D3DMAXDECLLENGTH 18
|
||||
#define D3DMAXDECLUSAGE_DX8 D3DDECLUSAGE_TEXCOORD
|
||||
|
||||
typedef enum _D3DDECLMETHOD {
|
||||
D3DDECLMETHOD_DEFAULT = 0,
|
||||
D3DDECLMETHOD_PARTIALU,
|
||||
D3DDECLMETHOD_PARTIALV,
|
||||
D3DDECLMETHOD_CROSSUV,
|
||||
D3DDECLMETHOD_UV,
|
||||
D3DDECLMETHOD_LOOKUP,
|
||||
D3DDECLMETHOD_LOOKUPPRESAMPLED
|
||||
D3DDECLMETHOD_PARTIALU = 1,
|
||||
D3DDECLMETHOD_PARTIALV = 2,
|
||||
D3DDECLMETHOD_CROSSUV = 3,
|
||||
D3DDECLMETHOD_UV = 4,
|
||||
D3DDECLMETHOD_LOOKUP = 5,
|
||||
D3DDECLMETHOD_LOOKUPPRESAMPLED = 6
|
||||
} D3DDECLMETHOD;
|
||||
|
||||
#define MAXD3DDECLMETHOD D3DDECLMETHOD_LOOKUPPRESAMPLED
|
||||
|
||||
#define D3DMAXDECLMETHOD D3DDECLMETHOD_LOOKUPPRESAMPLED
|
||||
|
||||
typedef enum _D3DDECLTYPE {
|
||||
D3DDECLTYPE_FLOAT1 = 0,
|
||||
|
@ -236,7 +279,7 @@ typedef enum _D3DDECLTYPE {
|
|||
D3DDECLTYPE_UNUSED = 17,
|
||||
} D3DDECLTYPE;
|
||||
|
||||
#define MAXD3DDECLTYPE D3DDECLTYPE_UNUSED
|
||||
#define D3DMAXDECLTYPE D3DDECLTYPE_UNUSED
|
||||
|
||||
typedef struct _D3DVERTEXELEMENT9 {
|
||||
WORD Stream;
|
||||
|
@ -247,6 +290,29 @@ typedef struct _D3DVERTEXELEMENT9 {
|
|||
BYTE UsageIndex;
|
||||
} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
|
||||
|
||||
|
||||
typedef enum _D3DQUERYTYPE {
|
||||
D3DQUERYTYPE_VCACHE = 4,
|
||||
D3DQUERYTYPE_RESOURCEMANAGER = 5,
|
||||
D3DQUERYTYPE_VERTEXSTATS = 6,
|
||||
D3DQUERYTYPE_EVENT = 8,
|
||||
D3DQUERYTYPE_OCCLUSION = 9,
|
||||
D3DQUERYTYPE_TIMESTAMP = 10,
|
||||
D3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
|
||||
D3DQUERYTYPE_TIMESTAMPFREQ = 12,
|
||||
D3DQUERYTYPE_PIPELINETIMINGS = 13,
|
||||
D3DQUERYTYPE_INTERFACETIMINGS = 14,
|
||||
D3DQUERYTYPE_VERTEXTIMINGS = 15,
|
||||
D3DQUERYTYPE_PIXELTIMINGS = 16,
|
||||
D3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
|
||||
D3DQUERYTYPE_CACHEUTILIZATION = 18
|
||||
} D3DQUERYTYPE;
|
||||
|
||||
#define D3DISSUE_BEGIN (1 << 1)
|
||||
#define D3DISSUE_END (1 << 0)
|
||||
#define D3DGETDATA_FLUSH (1 << 0)
|
||||
|
||||
|
||||
#define D3DDECL_END() {0xFF,0,D3DDECLTYPE_UNUSED,0,0,0}
|
||||
#define D3DDP_MAXTEXCOORD 8
|
||||
|
||||
|
@ -582,6 +648,8 @@ typedef enum _D3DBACKBUFFER_TYPE {
|
|||
D3DBACKBUFFER_TYPE_FORCE_DWORD = 0x7fffffff
|
||||
} D3DBACKBUFFER_TYPE;
|
||||
|
||||
#define D3DPRESENT_BACK_BUFFER_MAX 3L
|
||||
|
||||
typedef enum _D3DBASISTYPE {
|
||||
D3DBASIS_BEZIER = 0,
|
||||
D3DBASIS_BSPLINE = 1,
|
||||
|
@ -658,6 +726,15 @@ typedef enum _D3DDEBUGMONITORTOKENS {
|
|||
D3DDMT_FORCE_DWORD = 0x7fffffff
|
||||
} D3DDEBUGMONITORTOKENS;
|
||||
|
||||
typedef enum _D3DDEGREETYPE {
|
||||
D3DDEGREE_LINEAR = 1,
|
||||
D3DDEGREE_QUADRATIC = 2,
|
||||
D3DDEGREE_CUBIC = 3,
|
||||
D3DDEGREE_QUINTIC = 5,
|
||||
|
||||
D3DDEGREE_FORCE_DWORD = 0x7fffffff
|
||||
} D3DDEGREETYPE;
|
||||
|
||||
typedef enum _D3DDEVTYPE {
|
||||
D3DDEVTYPE_HAL = 1,
|
||||
D3DDEVTYPE_REF = 2,
|
||||
|
@ -697,6 +774,13 @@ typedef enum _D3DFORMAT {
|
|||
D3DFMT_A8 = 28,
|
||||
D3DFMT_A8R3G3B2 = 29,
|
||||
D3DFMT_X4R4G4B4 = 30,
|
||||
D3DFMT_A2B10G10R10 = 31,
|
||||
D3DFMT_A8B8G8R8 = 32,
|
||||
D3DFMT_X8B8G8R8 = 33,
|
||||
D3DFMT_G16R16 = 34,
|
||||
D3DFMT_A2R10G10B10 = 35,
|
||||
D3DFMT_A16B16G16R16 = 36,
|
||||
|
||||
|
||||
D3DFMT_A8P8 = 40,
|
||||
D3DFMT_P8 = 41,
|
||||
|
@ -711,6 +795,7 @@ typedef enum _D3DFORMAT {
|
|||
D3DFMT_Q8W8V8U8 = 63,
|
||||
D3DFMT_V16U16 = 64,
|
||||
D3DFMT_W11V11U10 = 65,
|
||||
D3DFMT_A2W10V10U10 = 67,
|
||||
|
||||
D3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
|
||||
D3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
|
||||
|
@ -719,18 +804,35 @@ typedef enum _D3DFORMAT {
|
|||
D3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
|
||||
D3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
|
||||
D3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
|
||||
D3DFMT_MULTI2_ARGB = MAKEFOURCC('M', 'E', 'T', '1'),
|
||||
D3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
|
||||
D3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
|
||||
|
||||
D3DFMT_D16_LOCKABLE = 70,
|
||||
D3DFMT_D32 = 71,
|
||||
D3DFMT_D15S1 = 73,
|
||||
D3DFMT_D24S8 = 75,
|
||||
D3DFMT_D16 = 80,
|
||||
D3DFMT_D24X8 = 77,
|
||||
D3DFMT_D24X4S4 = 79,
|
||||
D3DFMT_D16 = 80,
|
||||
D3DFMT_D32F_LOCKABLE = 82,
|
||||
D3DFMT_D24FS8 = 83,
|
||||
|
||||
D3DFMT_VERTEXDATA = 100,
|
||||
D3DFMT_INDEX16 = 101,
|
||||
D3DFMT_INDEX32 = 102,
|
||||
D3DFMT_Q16W16V16U16 = 110,
|
||||
/* Flaoting point formats */
|
||||
D3DFMT_R16F = 111,
|
||||
D3DFMT_G16R16F = 112,
|
||||
D3DFMT_A16B16G16R16F = 113,
|
||||
|
||||
/* IEEE formats */
|
||||
D3DFMT_R32F = 114,
|
||||
D3DFMT_G32R32F = 115,
|
||||
D3DFMT_A32B32G32R32F = 116,
|
||||
|
||||
D3DFMT_CxV8U8 = 117,
|
||||
|
||||
|
||||
D3DFMT_FORCE_DWORD = 0xFFFFFFFF
|
||||
} D3DFORMAT;
|
||||
|
@ -753,6 +855,7 @@ typedef enum _D3DMATERIALCOLORSOURCE {
|
|||
|
||||
typedef enum _D3DMULTISAMPLE_TYPE {
|
||||
D3DMULTISAMPLE_NONE = 0,
|
||||
D3DMULTISAMPLE_NONMASKABLE = 1,
|
||||
D3DMULTISAMPLE_2_SAMPLES = 2,
|
||||
D3DMULTISAMPLE_3_SAMPLES = 3,
|
||||
D3DMULTISAMPLE_4_SAMPLES = 4,
|
||||
|
@ -772,6 +875,7 @@ typedef enum _D3DMULTISAMPLE_TYPE {
|
|||
D3DMULTISAMPLE_FORCE_DWORD = 0xffffffff
|
||||
} D3DMULTISAMPLE_TYPE;
|
||||
|
||||
#if 0
|
||||
typedef enum _D3DORDERTYPE {
|
||||
D3DORDER_LINEAR = 1,
|
||||
D3DORDER_QUADRATIC = 2,
|
||||
|
@ -780,7 +884,7 @@ typedef enum _D3DORDERTYPE {
|
|||
|
||||
D3DORDER_FORCE_DWORD = 0x7fffffff
|
||||
} D3DORDERTYPE;
|
||||
|
||||
#endif
|
||||
typedef enum _D3DPATCHEDGESTYLE {
|
||||
D3DPATCHEDGE_DISCRETE = 0,
|
||||
D3DPATCHEDGE_CONTINUOUS = 1,
|
||||
|
@ -812,7 +916,6 @@ typedef enum _D3DRENDERSTATETYPE {
|
|||
D3DRS_ZENABLE = 7,
|
||||
D3DRS_FILLMODE = 8,
|
||||
D3DRS_SHADEMODE = 9,
|
||||
D3DRS_LINEPATTERN = 10,
|
||||
D3DRS_ZWRITEENABLE = 14,
|
||||
D3DRS_ALPHATESTENABLE = 15,
|
||||
D3DRS_LASTPIXEL = 16,
|
||||
|
@ -826,14 +929,11 @@ typedef enum _D3DRENDERSTATETYPE {
|
|||
D3DRS_ALPHABLENDENABLE = 27,
|
||||
D3DRS_FOGENABLE = 28,
|
||||
D3DRS_SPECULARENABLE = 29,
|
||||
D3DRS_ZVISIBLE = 30,
|
||||
D3DRS_FOGCOLOR = 34,
|
||||
D3DRS_FOGTABLEMODE = 35,
|
||||
D3DRS_FOGSTART = 36,
|
||||
D3DRS_FOGEND = 37,
|
||||
D3DRS_FOGDENSITY = 38,
|
||||
D3DRS_EDGEANTIALIAS = 40,
|
||||
D3DRS_ZBIAS = 47,
|
||||
D3DRS_RANGEFOGENABLE = 48,
|
||||
D3DRS_STENCILENABLE = 52,
|
||||
D3DRS_STENCILFAIL = 53,
|
||||
|
@ -865,7 +965,6 @@ typedef enum _D3DRENDERSTATETYPE {
|
|||
D3DRS_EMISSIVEMATERIALSOURCE = 148,
|
||||
D3DRS_VERTEXBLEND = 151,
|
||||
D3DRS_CLIPPLANEENABLE = 152,
|
||||
D3DRS_SOFTWAREVERTEXPROCESSING = 153,
|
||||
D3DRS_POINTSIZE = 154,
|
||||
D3DRS_POINTSIZE_MIN = 155,
|
||||
D3DRS_POINTSPRITEENABLE = 156,
|
||||
|
@ -876,15 +975,14 @@ typedef enum _D3DRENDERSTATETYPE {
|
|||
D3DRS_MULTISAMPLEANTIALIAS = 161,
|
||||
D3DRS_MULTISAMPLEMASK = 162,
|
||||
D3DRS_PATCHEDGESTYLE = 163,
|
||||
D3DRS_PATCHSEGMENTS = 164,
|
||||
D3DRS_DEBUGMONITORTOKEN = 165,
|
||||
D3DRS_POINTSIZE_MAX = 166,
|
||||
D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
|
||||
D3DRS_COLORWRITEENABLE = 168,
|
||||
D3DRS_TWEENFACTOR = 170,
|
||||
D3DRS_BLENDOP = 171,
|
||||
D3DRS_POSITIONORDER = 172,
|
||||
D3DRS_NORMALORDER = 173,
|
||||
D3DRS_POSITIONDEGREE = 172,
|
||||
D3DRS_NORMALDEGREE = 173,
|
||||
D3DRS_SCISSORTESTENABLE = 174,
|
||||
D3DRS_SLOPESCALEDEPTHBIAS = 175,
|
||||
D3DRS_ANTIALIASEDLINEENABLE = 176,
|
||||
|
@ -934,6 +1032,8 @@ typedef enum _D3DRESOURCETYPE {
|
|||
D3DRTYPE_FORCE_DWORD = 0x7fffffff
|
||||
} D3DRESOURCETYPE;
|
||||
|
||||
#define D3DRTYPECOUNT (D3DRTYPE_INDEXBUFFER+1)
|
||||
|
||||
typedef enum _D3DSHADEMODE {
|
||||
D3DSHADE_FLAT = 1,
|
||||
D3DSHADE_GOURAUD = 2,
|
||||
|
@ -967,8 +1067,6 @@ typedef enum _D3DSWAPEFFECT {
|
|||
D3DSWAPEFFECT_DISCARD = 1,
|
||||
D3DSWAPEFFECT_FLIP = 2,
|
||||
D3DSWAPEFFECT_COPY = 3,
|
||||
D3DSWAPEFFECT_COPY_VSYNC = 4,
|
||||
|
||||
D3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF
|
||||
} D3DSWAPEFFECT;
|
||||
|
||||
|
@ -1037,6 +1135,7 @@ typedef enum _D3DTEXTURESTAGESTATETYPE {
|
|||
D3DTSS_BUMPENVMAT10 = 9,
|
||||
D3DTSS_BUMPENVMAT11 = 10,
|
||||
D3DTSS_TEXCOORDINDEX = 11,
|
||||
#if 1 /* TODO: remove once samplerstates are implemented. */
|
||||
D3DTSS_ADDRESSU = 13,
|
||||
D3DTSS_ADDRESSV = 14,
|
||||
D3DTSS_BORDERCOLOR = 15,
|
||||
|
@ -1046,6 +1145,7 @@ typedef enum _D3DTEXTURESTAGESTATETYPE {
|
|||
D3DTSS_MIPMAPLODBIAS = 19,
|
||||
D3DTSS_MAXMIPLEVEL = 20,
|
||||
D3DTSS_MAXANISOTROPY = 21,
|
||||
#endif
|
||||
D3DTSS_BUMPENVLSCALE = 22,
|
||||
D3DTSS_BUMPENVLOFFSET = 23,
|
||||
D3DTSS_TEXTURETRANSFORMFLAGS = 24,
|
||||
|
@ -1172,6 +1272,75 @@ typedef struct _D3DDEVICE_CREATION_PARAMETERS {
|
|||
DWORD BehaviorFlags;
|
||||
} D3DDEVICE_CREATION_PARAMETERS;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3D9BANDWIDTHTIMINGS {
|
||||
float MaxBandwidthUtilized;
|
||||
float FrontEndUploadMemoryUtilizedPercent;
|
||||
float VertexRateUtilizedPercent;
|
||||
float TriangleSetupRateUtilizedPercent;
|
||||
float FillRateUtilizedPercent;
|
||||
} D3DDEVINFO_D3D9BANDWIDTHTIMINGS;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3D9CACHEUTILIZATION {
|
||||
float TextureCacheHitRate;
|
||||
float PostTransformVertexCacheHitRate;
|
||||
} D3DDEVINFO_D3D9CACHEUTILIZATION;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3D9INTERFACETIMINGS {
|
||||
float WaitingForGPUToUseApplicationResourceTimePercent;
|
||||
float WaitingForGPUToAcceptMoreCommandsTimePercent;
|
||||
float WaitingForGPUToStayWithinLatencyTimePercent;
|
||||
float WaitingForGPUExclusiveResourceTimePercent;
|
||||
float WaitingForGPUOtherTimePercent;
|
||||
} D3DDEVINFO_D3D9INTERFACETIMINGS;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3D9PIPELINETIMINGS {
|
||||
float VertexProcessingTimePercent;
|
||||
float PixelProcessingTimePercent;
|
||||
float OtherGPUProcessingTimePercent;
|
||||
float GPUIdleTimePercent;
|
||||
} D3DDEVINFO_D3D9PIPELINETIMINGS;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3D9STAGETIMINGS {
|
||||
float MemoryProcessingPercent;
|
||||
float ComputationProcessingPercent;
|
||||
} D3DDEVINFO_D3D9STAGETIMINGS;
|
||||
|
||||
|
||||
/* Vertex cache optimization hints. */
|
||||
typedef struct D3DDEVINFO_VCACHE {
|
||||
/* Must be a 4 char code FOURCC (e.g. CACH) */
|
||||
DWORD Pattern;
|
||||
/* 0 to get the longest strips, 1 vertex cache */
|
||||
DWORD OptMethod;
|
||||
/* Cache size to use (only valid if OptMethod==1) */
|
||||
DWORD CacheSize;
|
||||
/* internal for deciding when to restart strips, non user modifyable (only valid if OptMethod==1) */
|
||||
DWORD MagicNumber;
|
||||
} D3DDEVINFO_VCACHE;
|
||||
|
||||
typedef struct D3DRESOURCESTATS {
|
||||
BOOL bThrashing;
|
||||
DWORD ApproxBytesDownloaded;
|
||||
DWORD NumEvicts;
|
||||
DWORD NumVidCreates;
|
||||
DWORD LastPri;
|
||||
DWORD NumUsed;
|
||||
DWORD NumUsedInVidMem;
|
||||
DWORD WorkingSet;
|
||||
DWORD WorkingSetBytes;
|
||||
DWORD TotalManaged;
|
||||
DWORD TotalBytes;
|
||||
} D3DRESOURCESTATS;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3DRESOURCEMANAGER {
|
||||
D3DRESOURCESTATS stats[D3DRTYPECOUNT];
|
||||
} D3DDEVINFO_D3DRESOURCEMANAGER;
|
||||
|
||||
typedef struct _D3DDEVINFO_D3DVERTEXSTATS {
|
||||
DWORD NumRenderedTriangles;
|
||||
DWORD NumExtraClippingTriangles;
|
||||
} D3DDEVINFO_D3DVERTEXSTATS;
|
||||
|
||||
typedef struct _D3DDISPLAYMODE {
|
||||
UINT Width;
|
||||
UINT Height;
|
||||
|
@ -1296,7 +1465,7 @@ typedef struct _D3DRECTPATCH_INFO {
|
|||
UINT Height;
|
||||
UINT Stride;
|
||||
D3DBASISTYPE Basis;
|
||||
D3DORDERTYPE Order;
|
||||
D3DDEGREETYPE Degree;
|
||||
} D3DRECTPATCH_INFO;
|
||||
|
||||
typedef struct _D3DSURFACE_DESC {
|
||||
|
@ -1314,7 +1483,7 @@ typedef struct _D3DTRIPATCH_INFO {
|
|||
UINT StartVertexOffset;
|
||||
UINT NumVertices;
|
||||
D3DBASISTYPE Basis;
|
||||
D3DORDERTYPE Order;
|
||||
D3DDEGREETYPE Degree;
|
||||
} D3DTRIPATCH_INFO;
|
||||
|
||||
typedef struct _D3DVERTEXBUFFER_DESC {
|
||||
|
@ -1346,12 +1515,4 @@ typedef struct _D3DVOLUME_DESC {
|
|||
UINT Depth;
|
||||
} D3DVOLUME_DESC;
|
||||
|
||||
typedef enum _D3DQUERYTYPE {
|
||||
D3DQUERYTYPE_VCACHE = 4,
|
||||
D3DQUERYTYPE_RESOURCEMANAGER = 5,
|
||||
D3DQUERYTYPE_VERTEXSTATS = 6,
|
||||
D3DQUERYTYPE_EVENT = 8,
|
||||
D3DQUERYTYPE_OCCLUSION = 9
|
||||
} D3DQUERYTYPE;
|
||||
|
||||
#endif /* __WINE_D3D9TYPES_H */
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
# error You must include d3d8.h or d3d9.h header to use this header
|
||||
#endif
|
||||
|
||||
#include "wined3d_types.h"
|
||||
/*****************************************************************
|
||||
* THIS FILE MUST NOT CONTAIN X11 or MESA DEFINES
|
||||
* PLEASE USE wine/wined3d_gl.h INSTEAD
|
||||
|
@ -114,113 +115,6 @@ DEFINE_GUID(IID_IWineD3DQuery,
|
|||
0x905ddbac, 0x6f30, 0x11d9, 0xc6, 0x87, 0x0, 0x4, 0x61, 0x42, 0xc1, 0x4f);
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* WineD3D Structures to be used when d3d8 and d3d9 are incompatible
|
||||
*/
|
||||
|
||||
typedef enum _WINED3DSAMPLERSTATETYPE {
|
||||
WINED3DSAMP_ADDRESSU = 1,
|
||||
WINED3DSAMP_ADDRESSV = 2,
|
||||
WINED3DSAMP_ADDRESSW = 3,
|
||||
WINED3DSAMP_BORDERCOLOR = 4,
|
||||
WINED3DSAMP_MAGFILTER = 5,
|
||||
WINED3DSAMP_MINFILTER = 6,
|
||||
WINED3DSAMP_MIPFILTER = 7,
|
||||
WINED3DSAMP_MIPMAPLODBIAS = 8,
|
||||
WINED3DSAMP_MAXMIPLEVEL = 9,
|
||||
WINED3DSAMP_MAXANISOTROPY = 10,
|
||||
WINED3DSAMP_SRGBTEXTURE = 11,
|
||||
WINED3DSAMP_ELEMENTINDEX = 12,
|
||||
WINED3DSAMP_DMAPOFFSET = 13,
|
||||
|
||||
WINED3DSAMP_FORCE_DWORD = 0x7fffffff,
|
||||
} WINED3DSAMPLERSTATETYPE;
|
||||
|
||||
typedef struct _WINED3DADAPTER_IDENTIFIER {
|
||||
char *Driver;
|
||||
char *Description;
|
||||
char *DeviceName;
|
||||
LARGE_INTEGER *DriverVersion;
|
||||
DWORD *VendorId;
|
||||
DWORD *DeviceId;
|
||||
DWORD *SubSysId;
|
||||
DWORD *Revision;
|
||||
GUID *DeviceIdentifier;
|
||||
DWORD *WHQLLevel;
|
||||
} WINED3DADAPTER_IDENTIFIER;
|
||||
|
||||
typedef struct _WINED3DPRESENT_PARAMETERS {
|
||||
UINT *BackBufferWidth;
|
||||
UINT *BackBufferHeight;
|
||||
D3DFORMAT *BackBufferFormat;
|
||||
UINT *BackBufferCount;
|
||||
D3DMULTISAMPLE_TYPE *MultiSampleType;
|
||||
DWORD *MultiSampleQuality;
|
||||
D3DSWAPEFFECT *SwapEffect;
|
||||
HWND *hDeviceWindow;
|
||||
BOOL *Windowed;
|
||||
BOOL *EnableAutoDepthStencil;
|
||||
D3DFORMAT *AutoDepthStencilFormat;
|
||||
DWORD *Flags;
|
||||
UINT *FullScreen_RefreshRateInHz;
|
||||
UINT *PresentationInterval;
|
||||
} WINED3DPRESENT_PARAMETERS;
|
||||
|
||||
typedef struct _WINED3DSURFACE_DESC
|
||||
{
|
||||
D3DFORMAT *Format;
|
||||
D3DRESOURCETYPE *Type;
|
||||
DWORD *Usage;
|
||||
D3DPOOL *Pool;
|
||||
UINT *Size;
|
||||
|
||||
D3DMULTISAMPLE_TYPE *MultiSampleType;
|
||||
DWORD *MultiSampleQuality;
|
||||
UINT *Width;
|
||||
UINT *Height;
|
||||
} WINED3DSURFACE_DESC;
|
||||
|
||||
typedef struct _WINED3DVOLUME_DESC
|
||||
{
|
||||
D3DFORMAT *Format;
|
||||
D3DRESOURCETYPE *Type;
|
||||
DWORD *Usage;
|
||||
D3DPOOL *Pool;
|
||||
UINT *Size;
|
||||
|
||||
UINT *Width;
|
||||
UINT *Height;
|
||||
UINT *Depth;
|
||||
} WINED3DVOLUME_DESC;
|
||||
|
||||
typedef struct _WINED3DVERTEXELEMENT {
|
||||
WORD Stream;
|
||||
WORD Offset;
|
||||
BYTE Type;
|
||||
BYTE Method;
|
||||
BYTE Usage;
|
||||
BYTE UsageIndex;
|
||||
} WINED3DVERTEXELEMENT, *LPWINED3DVERTEXELEMENT;
|
||||
|
||||
|
||||
typedef enum _WINED3DQUERYTYPE {
|
||||
WINED3DQUERYTYPE_VCACHE = 4,
|
||||
WINED3DQUERYTYPE_RESOURCEMANAGER = 5,
|
||||
WINED3DQUERYTYPE_VERTEXSTATS = 6,
|
||||
WINED3DQUERYTYPE_EVENT = 8,
|
||||
WINED3DQUERYTYPE_OCCLUSION = 9,
|
||||
WINED3DQUERYTYPE_TIMESTAMP = 10,
|
||||
WINED3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
|
||||
WINED3DQUERYTYPE_TIMESTAMPFREQ = 12,
|
||||
WINED3DQUERYTYPE_PIPELINETIMINGS = 13,
|
||||
WINED3DQUERYTYPE_INTERFACETIMINGS = 14,
|
||||
WINED3DQUERYTYPE_VERTEXTIMINGS = 15,
|
||||
WINED3DQUERYTYPE_PIXELTIMINGS = 16,
|
||||
WINED3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
|
||||
WINED3DQUERYTYPE_CACHEUTILIZATION = 18
|
||||
} WINED3DQUERYTYPE;
|
||||
|
||||
/* The following have differing names, but actually are the same layout. */
|
||||
/* Also, D3DCAPS8 is a subset of D3DCAPS9 so can be typecase as long as
|
||||
none of the 9 fields are accessed when the device is d3d8 */
|
||||
|
@ -260,6 +154,7 @@ typedef struct IWineD3DVolume IWineD3DVolume;
|
|||
typedef struct IWineD3DVertexDeclaration IWineD3DVertexDeclaration;
|
||||
typedef struct IWineD3DVertexShader IWineD3DVertexShader;
|
||||
typedef struct IWineD3DPixelShader IWineD3DPixelShader;
|
||||
typedef struct IWineD3DQuery IWineD3DQuery;
|
||||
|
||||
/*****************************************************************************
|
||||
* Callback functions required for predefining surfaces / stencils
|
||||
|
@ -386,7 +281,7 @@ DECLARE_INTERFACE_(IWineD3DDevice,IUnknown)
|
|||
STDMETHOD(CreateVolumeTexture)(THIS_ UINT Width, UINT Height, UINT Depth, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IWineD3DVolumeTexture** ppVolumeTexture, HANDLE* pSharedHandle, IUnknown *parent, D3DCB_CREATEVOLUMEFN pFn) PURE;
|
||||
STDMETHOD(CreateVolume)(THIS_ UINT Width, UINT Height, UINT Depth, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IWineD3DVolume** ppVolumeTexture, HANDLE* pSharedHandle, IUnknown *parent) PURE;
|
||||
STDMETHOD(CreateCubeTexture)(THIS_ UINT EdgeLength, UINT Levels, DWORD Usage, D3DFORMAT Format, D3DPOOL Pool, IWineD3DCubeTexture** ppCubeTexture, HANDLE* pSharedHandle, IUnknown *parent, D3DCB_CREATESURFACEFN pFn) PURE;
|
||||
STDMETHOD(CreateQuery)(THIS_ WINED3DQUERYTYPE Type, void **ppQuery, IUnknown *pParent);
|
||||
STDMETHOD(CreateQuery)(THIS_ WINED3DQUERYTYPE Type, IWineD3DQuery **ppQuery, IUnknown *pParent);
|
||||
STDMETHOD(CreateAdditionalSwapChain)(THIS_ WINED3DPRESENT_PARAMETERS* pPresentationParameters, void** pSwapChain, IUnknown* pParent, D3DCB_CREATERENDERTARGETFN pFn, D3DCB_CREATEDEPTHSTENCILSURFACEFN pFn2);
|
||||
STDMETHOD(CreateVertexDeclaration)(THIS_ CONST VOID* pDeclaration, IWineD3DVertexDeclaration** ppDecl, IUnknown* pParent) PURE;
|
||||
STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD* pFunction, IWineD3DVertexShader** ppShader, IUnknown *pParent) PURE;
|
||||
|
@ -1193,6 +1088,41 @@ DECLARE_INTERFACE_(IWineD3DStateBlock,IUnknown)
|
|||
#define IWineD3DStateBlock_InitStartupStateBlock(p) (p)->lpVtbl->InitStartupStateBlock(p)
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
* WineD3DQuery interface
|
||||
*/
|
||||
#define INTERFACE IWineD3DQuery
|
||||
DECLARE_INTERFACE_(IWineD3DQuery,IUnknown)
|
||||
{
|
||||
/*** IUnknown methods ***/
|
||||
STDMETHOD_(HRESULT,QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE;
|
||||
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
|
||||
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||
/*** IWineD3DQuery methods ***/
|
||||
STDMETHOD(GetParent)(THIS_ IUnknown **pParent) PURE;
|
||||
STDMETHOD(GetDevice)(THIS_ IWineD3DDevice **ppDevice) PURE;
|
||||
STDMETHOD(GetData)(THIS_ void *pData, DWORD dwSize, DWORD dwGetDataFlags) PURE;
|
||||
STDMETHOD_(DWORD,GetDataSize)(THIS) PURE;
|
||||
STDMETHOD_(WINED3DQUERYTYPE, GetType)(THIS) PURE;
|
||||
STDMETHOD(Issue)(THIS_ DWORD dwIssueFlags) PURE;
|
||||
|
||||
};
|
||||
#undef INTERFACE
|
||||
|
||||
#if !defined(__cplusplus) || defined(CINTERFACE)
|
||||
/*** IUnknown methods ***/
|
||||
#define IWineD3DQuery_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
|
||||
#define IWineD3DQuery_AddRef(p) (p)->lpVtbl->AddRef(p)
|
||||
#define IWineD3DQuery_Release(p) (p)->lpVtbl->Release(p)
|
||||
/*** IWineD3DQuery methods ***/
|
||||
#define IWineD3DQuery_GetParent(p,a) (p)->lpVtbl->GetParent(p,a)
|
||||
#define IWineD3DQuery_GetDevice(p,a) (p)->lpVtbl->GetDevice(p,a)
|
||||
#define IWineD3DQuery_GetData(p,a,b,c) (p)->lpVtbl->GetData(p,a,b,c)
|
||||
#define IWineD3DQuery_GetDataSize(p) (p)->lpVtbl->GetDataSize(p)
|
||||
#define IWineD3DQuery_GetType(p) (p)->lpVtbl->GetType(p)
|
||||
#define IWineD3DQuery_Issue(p,a) (p)->lpVtbl->Issue(p,a)
|
||||
|
||||
#endif
|
||||
|
||||
/*****************************************************************************
|
||||
* IWineD3DVertexShader interface
|
||||
|
|
|
@ -23,36 +23,44 @@
|
|||
#ifndef __WINE_WINED3D_TYPES_H
|
||||
#define __WINE_WINED3D_TYPES_H
|
||||
|
||||
typedef struct _D3DVECTOR_3 {
|
||||
/* TODO: remove the dependency on d3d9 or d3d8 */
|
||||
#if !defined( __WINE_D3D8_H ) && !defined( __WINE_D3D9_H )
|
||||
# error You must include d3d8.h or d3d9.h header to use this header
|
||||
#endif
|
||||
|
||||
#define WINED3D_VSHADER_MAX_CONSTANTS 96
|
||||
#define WINED3D_PSHADER_MAX_CONSTANTS 32
|
||||
|
||||
typedef struct _WINED3DVECTOR_3 {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
} D3DVECTOR_3;
|
||||
} WINED3DVECTOR_3;
|
||||
|
||||
typedef struct _D3DVECTOR_4 {
|
||||
typedef struct _WINED3DVECTOR_4 {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float w;
|
||||
} D3DVECTOR_4;
|
||||
} WINED3DVECTOR_4;
|
||||
|
||||
typedef struct D3DSHADERVECTOR {
|
||||
typedef struct WINED3DSHADERVECTOR {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float w;
|
||||
} D3DSHADERVECTOR;
|
||||
} WINED3DSHADERVECTOR;
|
||||
|
||||
typedef struct D3DSHADERSCALAR {
|
||||
typedef struct WINED3DSHADERSCALAR {
|
||||
float x;
|
||||
} D3DSHADERSCALAR;
|
||||
} WINED3DSHADERSCALAR;
|
||||
|
||||
typedef D3DSHADERVECTOR VSHADERCONSTANTS8[D3D_VSHADER_MAX_CONSTANTS];
|
||||
typedef WINED3DSHADERVECTOR WINEVSHADERCONSTANTS8[WINED3D_VSHADER_MAX_CONSTANTS];
|
||||
|
||||
typedef struct VSHADERDATA {
|
||||
/** Run Time Shader Function Constants */
|
||||
/*D3DXBUFFER* constants;*/
|
||||
VSHADERCONSTANTS8 C;
|
||||
WINEVSHADERCONSTANTS8 C;
|
||||
/** Shader Code as char ... */
|
||||
CONST DWORD* code;
|
||||
UINT codeLength;
|
||||
|
@ -60,24 +68,24 @@ typedef struct VSHADERDATA {
|
|||
|
||||
/** temporary here waiting for buffer code */
|
||||
typedef struct VSHADERINPUTDATA {
|
||||
D3DSHADERVECTOR V[17];
|
||||
} VSHADERINPUTDATA;
|
||||
WINED3DSHADERVECTOR V[17];
|
||||
} WINEVSHADERINPUTDATA;
|
||||
|
||||
/** temporary here waiting for buffer code */
|
||||
typedef struct VSHADEROUTPUTDATA {
|
||||
D3DSHADERVECTOR oPos;
|
||||
D3DSHADERVECTOR oD[2];
|
||||
D3DSHADERVECTOR oT[8];
|
||||
D3DSHADERVECTOR oFog;
|
||||
D3DSHADERVECTOR oPts;
|
||||
} VSHADEROUTPUTDATA;
|
||||
WINED3DSHADERVECTOR oPos;
|
||||
WINED3DSHADERVECTOR oD[2];
|
||||
WINED3DSHADERVECTOR oT[8];
|
||||
WINED3DSHADERVECTOR oFog;
|
||||
WINED3DSHADERVECTOR oPts;
|
||||
} WINEVSHADEROUTPUTDATA;
|
||||
|
||||
typedef D3DSHADERVECTOR PSHADERCONSTANTS8[D3D_PSHADER_MAX_CONSTANTS];
|
||||
typedef WINED3DSHADERVECTOR WINEPSHADERCONSTANTS8[WINED3D_PSHADER_MAX_CONSTANTS];
|
||||
|
||||
typedef struct PSHADERDATA {
|
||||
/** Run Time Shader Function Constants */
|
||||
/*D3DXBUFFER* constants;*/
|
||||
PSHADERCONSTANTS8 C;
|
||||
WINEPSHADERCONSTANTS8 C;
|
||||
/** Shader Code as char ... */
|
||||
CONST DWORD* code;
|
||||
UINT codeLength;
|
||||
|
@ -85,16 +93,449 @@ typedef struct PSHADERDATA {
|
|||
|
||||
/** temporary here waiting for buffer code */
|
||||
typedef struct PSHADERINPUTDATA {
|
||||
D3DSHADERVECTOR V[2];
|
||||
D3DSHADERVECTOR T[8];
|
||||
D3DSHADERVECTOR S[16];
|
||||
WINED3DSHADERVECTOR V[2];
|
||||
WINED3DSHADERVECTOR T[8];
|
||||
WINED3DSHADERVECTOR S[16];
|
||||
/*D3DSHADERVECTOR R[12];*/
|
||||
} PSHADERINPUTDATA;
|
||||
} WINEPSHADERINPUTDATA;
|
||||
|
||||
/** temporary here waiting for buffer code */
|
||||
typedef struct PSHADEROUTPUTDATA {
|
||||
D3DSHADERVECTOR oC[4];
|
||||
D3DSHADERVECTOR oDepth;
|
||||
} PSHADEROUTPUTDATA;
|
||||
WINED3DSHADERVECTOR oC[4];
|
||||
WINED3DSHADERVECTOR oDepth;
|
||||
} WINEPSHADEROUTPUTDATA;
|
||||
|
||||
/*****************************************************************************
|
||||
* WineD3D Structures to be used when d3d8 and d3d9 are incompatible
|
||||
*/
|
||||
|
||||
typedef enum _WINED3DDEGREETYPE {
|
||||
WINED3DDEGREE_LINEAR = 1,
|
||||
WINED3DDEGREE_QUADRATIC = 2,
|
||||
WINED3DDEGREE_CUBIC = 3,
|
||||
WINED3DDEGREE_QUINTIC = 5,
|
||||
|
||||
WINED3DDEGREE_FORCE_DWORD = 0x7fffffff
|
||||
} WINED3DDEGREETYPE;
|
||||
|
||||
|
||||
typedef enum _WINED3DFORMAT {
|
||||
WINED3DFMT_UNKNOWN = 0,
|
||||
|
||||
WINED3DFMT_R8G8B8 = 20,
|
||||
WINED3DFMT_A8R8G8B8 = 21,
|
||||
WINED3DFMT_X8R8G8B8 = 22,
|
||||
WINED3DFMT_R5G6B5 = 23,
|
||||
WINED3DFMT_X1R5G5B5 = 24,
|
||||
WINED3DFMT_A1R5G5B5 = 25,
|
||||
WINED3DFMT_A4R4G4B4 = 26,
|
||||
WINED3DFMT_R3G3B2 = 27,
|
||||
WINED3DFMT_A8 = 28,
|
||||
WINED3DFMT_A8R3G3B2 = 29,
|
||||
WINED3DFMT_X4R4G4B4 = 30,
|
||||
WINED3DFMT_A2B10G10R10 = 31,
|
||||
WINED3DFMT_A8B8G8R8 = 32,
|
||||
WINED3DFMT_X8B8G8R8 = 33,
|
||||
WINED3DFMT_G16R16 = 34,
|
||||
WINED3DFMT_A2R10G10B10 = 35,
|
||||
WINED3DFMT_A16B16G16R16 = 36,
|
||||
|
||||
|
||||
WINED3DFMT_A8P8 = 40,
|
||||
WINED3DFMT_P8 = 41,
|
||||
|
||||
WINED3DFMT_L8 = 50,
|
||||
WINED3DFMT_A8L8 = 51,
|
||||
WINED3DFMT_A4L4 = 52,
|
||||
|
||||
WINED3DFMT_V8U8 = 60,
|
||||
WINED3DFMT_L6V5U5 = 61,
|
||||
WINED3DFMT_X8L8V8U8 = 62,
|
||||
WINED3DFMT_Q8W8V8U8 = 63,
|
||||
WINED3DFMT_V16U16 = 64,
|
||||
WINED3DFMT_W11V11U10 = 65,
|
||||
WINED3DFMT_A2W10V10U10 = 67,
|
||||
|
||||
WINED3DFMT_UYVY = MAKEFOURCC('U', 'Y', 'V', 'Y'),
|
||||
WINED3DFMT_YUY2 = MAKEFOURCC('Y', 'U', 'Y', '2'),
|
||||
WINED3DFMT_DXT1 = MAKEFOURCC('D', 'X', 'T', '1'),
|
||||
WINED3DFMT_DXT2 = MAKEFOURCC('D', 'X', 'T', '2'),
|
||||
WINED3DFMT_DXT3 = MAKEFOURCC('D', 'X', 'T', '3'),
|
||||
WINED3DFMT_DXT4 = MAKEFOURCC('D', 'X', 'T', '4'),
|
||||
WINED3DFMT_DXT5 = MAKEFOURCC('D', 'X', 'T', '5'),
|
||||
WINED3DFMT_MULTI2_ARGB = MAKEFOURCC('M', 'E', 'T', '1'),
|
||||
WINED3DFMT_G8R8_G8B8 = MAKEFOURCC('G', 'R', 'G', 'B'),
|
||||
WINED3DFMT_R8G8_B8G8 = MAKEFOURCC('R', 'G', 'B', 'G'),
|
||||
|
||||
WINED3DFMT_D16_LOCKABLE = 70,
|
||||
WINED3DFMT_D32 = 71,
|
||||
WINED3DFMT_D15S1 = 73,
|
||||
WINED3DFMT_D24S8 = 75,
|
||||
WINED3DFMT_D24X8 = 77,
|
||||
WINED3DFMT_D24X4S4 = 79,
|
||||
WINED3DFMT_D16 = 80,
|
||||
WINED3DFMT_D32F_LOCKABLE = 82,
|
||||
WINED3DFMT_D24FS8 = 83,
|
||||
|
||||
WINED3DFMT_VERTEXDATA = 100,
|
||||
WINED3DFMT_INDEX16 = 101,
|
||||
WINED3DFMT_INDEX32 = 102,
|
||||
WINED3DFMT_Q16W16V16U16 = 110,
|
||||
/* Flaoting point formats */
|
||||
WINED3DFMT_R16F = 111,
|
||||
WINED3DFMT_G16R16F = 112,
|
||||
WINED3DFMT_A16B16G16R16F = 113,
|
||||
|
||||
/* IEEE formats */
|
||||
WINED3DFMT_R32F = 114,
|
||||
WINED3DFMT_G32R32F = 115,
|
||||
WINED3DFMT_A32B32G32R32F = 116,
|
||||
|
||||
WINED3DFMT_CxV8U8 = 117,
|
||||
|
||||
|
||||
WINED3DFMT_FORCE_DWORD = 0xFFFFFFFF
|
||||
} WINED3DFORMAT;
|
||||
|
||||
|
||||
|
||||
|
||||
typedef enum _WINED3DRENDERSTATETYPE {
|
||||
WINED3DRS_ZENABLE = 7,
|
||||
WINED3DRS_FILLMODE = 8,
|
||||
WINED3DRS_SHADEMODE = 9,
|
||||
WINED3DRS_LINEPATTERN = 10,
|
||||
WINED3DRS_ZWRITEENABLE = 14,
|
||||
WINED3DRS_ALPHATESTENABLE = 15,
|
||||
WINED3DRS_LASTPIXEL = 16,
|
||||
WINED3DRS_SRCBLEND = 19,
|
||||
WINED3DRS_DESTBLEND = 20,
|
||||
WINED3DRS_CULLMODE = 22,
|
||||
WINED3DRS_ZFUNC = 23,
|
||||
WINED3DRS_ALPHAREF = 24,
|
||||
WINED3DRS_ALPHAFUNC = 25,
|
||||
WINED3DRS_DITHERENABLE = 26,
|
||||
WINED3DRS_ALPHABLENDENABLE = 27,
|
||||
WINED3DRS_FOGENABLE = 28,
|
||||
WINED3DRS_SPECULARENABLE = 29,
|
||||
WINED3DRS_ZVISIBLE = 30,
|
||||
WINED3DRS_FOGCOLOR = 34,
|
||||
WINED3DRS_FOGTABLEMODE = 35,
|
||||
WINED3DRS_FOGSTART = 36,
|
||||
WINED3DRS_FOGEND = 37,
|
||||
WINED3DRS_FOGDENSITY = 38,
|
||||
WINED3DRS_EDGEANTIALIAS = 40,
|
||||
WINED3DRS_ZBIAS = 47,
|
||||
WINED3DRS_RANGEFOGENABLE = 48,
|
||||
WINED3DRS_STENCILENABLE = 52,
|
||||
WINED3DRS_STENCILFAIL = 53,
|
||||
WINED3DRS_STENCILZFAIL = 54,
|
||||
WINED3DRS_STENCILPASS = 55,
|
||||
WINED3DRS_STENCILFUNC = 56,
|
||||
WINED3DRS_STENCILREF = 57,
|
||||
WINED3DRS_STENCILMASK = 58,
|
||||
WINED3DRS_STENCILWRITEMASK = 59,
|
||||
WINED3DRS_TEXTUREFACTOR = 60,
|
||||
WINED3DRS_WRAP0 = 128,
|
||||
WINED3DRS_WRAP1 = 129,
|
||||
WINED3DRS_WRAP2 = 130,
|
||||
WINED3DRS_WRAP3 = 131,
|
||||
WINED3DRS_WRAP4 = 132,
|
||||
WINED3DRS_WRAP5 = 133,
|
||||
WINED3DRS_WRAP6 = 134,
|
||||
WINED3DRS_WRAP7 = 135,
|
||||
WINED3DRS_CLIPPING = 136,
|
||||
WINED3DRS_LIGHTING = 137,
|
||||
WINED3DRS_AMBIENT = 139,
|
||||
WINED3DRS_FOGVERTEXMODE = 140,
|
||||
WINED3DRS_COLORVERTEX = 141,
|
||||
WINED3DRS_LOCALVIEWER = 142,
|
||||
WINED3DRS_NORMALIZENORMALS = 143,
|
||||
WINED3DRS_DIFFUSEMATERIALSOURCE = 145,
|
||||
WINED3DRS_SPECULARMATERIALSOURCE = 146,
|
||||
WINED3DRS_AMBIENTMATERIALSOURCE = 147,
|
||||
WINED3DRS_EMISSIVEMATERIALSOURCE = 148,
|
||||
WINED3DRS_VERTEXBLEND = 151,
|
||||
WINED3DRS_CLIPPLANEENABLE = 152,
|
||||
WINED3DRS_SOFTWAREVERTEXPROCESSING = 153,
|
||||
WINED3DRS_POINTSIZE = 154,
|
||||
WINED3DRS_POINTSIZE_MIN = 155,
|
||||
WINED3DRS_POINTSPRITEENABLE = 156,
|
||||
WINED3DRS_POINTSCALEENABLE = 157,
|
||||
WINED3DRS_POINTSCALE_A = 158,
|
||||
WINED3DRS_POINTSCALE_B = 159,
|
||||
WINED3DRS_POINTSCALE_C = 160,
|
||||
WINED3DRS_MULTISAMPLEANTIALIAS = 161,
|
||||
WINED3DRS_MULTISAMPLEMASK = 162,
|
||||
WINED3DRS_PATCHEDGESTYLE = 163,
|
||||
WINED3DRS_PATCHSEGMENTS = 164,
|
||||
WINED3DRS_DEBUGMONITORTOKEN = 165,
|
||||
WINED3DRS_POINTSIZE_MAX = 166,
|
||||
WINED3DRS_INDEXEDVERTEXBLENDENABLE = 167,
|
||||
WINED3DRS_COLORWRITEENABLE = 168,
|
||||
WINED3DRS_TWEENFACTOR = 170,
|
||||
WINED3DRS_BLENDOP = 171,
|
||||
WINED3DRS_POSITIONORDER = 172,
|
||||
WINED3DRS_NORMALORDER = 173,
|
||||
WINED3DRS_POSITIONDEGREE = 172,
|
||||
WINED3DRS_NORMALDEGREE = 173,
|
||||
WINED3DRS_SCISSORTESTENABLE = 174,
|
||||
WINED3DRS_SLOPESCALEDEPTHBIAS = 175,
|
||||
WINED3DRS_ANTIALIASEDLINEENABLE = 176,
|
||||
WINED3DRS_MINTESSELLATIONLEVEL = 178,
|
||||
WINED3DRS_MAXTESSELLATIONLEVEL = 179,
|
||||
WINED3DRS_ADAPTIVETESS_X = 180,
|
||||
WINED3DRS_ADAPTIVETESS_Y = 181,
|
||||
WINED3DRS_ADAPTIVETESS_Z = 182,
|
||||
WINED3DRS_ADAPTIVETESS_W = 183,
|
||||
WINED3DRS_ENABLEADAPTIVETESSELLATION= 184,
|
||||
WINED3DRS_TWOSIDEDSTENCILMODE = 185,
|
||||
WINED3DRS_CCW_STENCILFAIL = 186,
|
||||
WINED3DRS_CCW_STENCILZFAIL = 187,
|
||||
WINED3DRS_CCW_STENCILPASS = 188,
|
||||
WINED3DRS_CCW_STENCILFUNC = 189,
|
||||
WINED3DRS_COLORWRITEENABLE1 = 190,
|
||||
WINED3DRS_COLORWRITEENABLE2 = 191,
|
||||
WINED3DRS_COLORWRITEENABLE3 = 192,
|
||||
WINED3DRS_BLENDFACTOR = 193,
|
||||
WINED3DRS_SRGBWRITEENABLE = 194,
|
||||
WINED3DRS_DEPTHBIAS = 195,
|
||||
WINED3DRS_WRAP8 = 198,
|
||||
WINED3DRS_WRAP9 = 199,
|
||||
WINED3DRS_WRAP10 = 200,
|
||||
WINED3DRS_WRAP11 = 201,
|
||||
WINED3DRS_WRAP12 = 202,
|
||||
WINED3DRS_WRAP13 = 203,
|
||||
WINED3DRS_WRAP14 = 204,
|
||||
WINED3DRS_WRAP15 = 205,
|
||||
WINED3DRS_SEPARATEALPHABLENDENABLE = 206,
|
||||
WINED3DRS_SRCBLENDALPHA = 207,
|
||||
WINED3DRS_DESTBLENDALPHA = 208,
|
||||
WINED3DRS_BLENDOPALPHA = 209,
|
||||
|
||||
WINED3DRS_FORCE_DWORD = 0x7fffffff
|
||||
} WINED3DRENDERSTATETYPE;
|
||||
|
||||
#define WINEHIGHEST_RENDER_STATE WINED3DRS_BLENDOPALPHA
|
||||
/* Highest D3DRS_ value */
|
||||
|
||||
typedef enum _WINED3DSWAPEFFECT {
|
||||
WINED3DSWAPEFFECT_DISCARD = 1,
|
||||
WINED3DSWAPEFFECT_FLIP = 2,
|
||||
WINED3DSWAPEFFECT_COPY = 3,
|
||||
WINED3DSWAPEFFECT_COPY_VSYNC = 4,
|
||||
WINED3DSWAPEFFECT_FORCE_DWORD = 0xFFFFFFFF
|
||||
} WINED3DSWAPEFFECT;
|
||||
|
||||
|
||||
typedef enum _WINED3DSAMPLERSTATETYPE {
|
||||
WINED3DSAMP_ADDRESSU = 1,
|
||||
WINED3DSAMP_ADDRESSV = 2,
|
||||
WINED3DSAMP_ADDRESSW = 3,
|
||||
WINED3DSAMP_BORDERCOLOR = 4,
|
||||
WINED3DSAMP_MAGFILTER = 5,
|
||||
WINED3DSAMP_MINFILTER = 6,
|
||||
WINED3DSAMP_MIPFILTER = 7,
|
||||
WINED3DSAMP_MIPMAPLODBIAS = 8,
|
||||
WINED3DSAMP_MAXMIPLEVEL = 9,
|
||||
WINED3DSAMP_MAXANISOTROPY = 10,
|
||||
WINED3DSAMP_SRGBTEXTURE = 11,
|
||||
WINED3DSAMP_ELEMENTINDEX = 12,
|
||||
WINED3DSAMP_DMAPOFFSET = 13,
|
||||
|
||||
WINED3DSAMP_FORCE_DWORD = 0x7fffffff,
|
||||
} WINED3DSAMPLERSTATETYPE;
|
||||
|
||||
typedef struct _WINEDD3DRECTPATCH_INFO {
|
||||
UINT StartVertexOffsetWidth;
|
||||
UINT StartVertexOffsetHeight;
|
||||
UINT Width;
|
||||
UINT Height;
|
||||
UINT Stride;
|
||||
D3DBASISTYPE Basis;
|
||||
WINED3DDEGREETYPE Degree;
|
||||
} WINED3DRECTPATCH_INFO;
|
||||
|
||||
|
||||
typedef struct _WINED3DADAPTER_IDENTIFIER {
|
||||
char *Driver;
|
||||
char *Description;
|
||||
char *DeviceName;
|
||||
LARGE_INTEGER *DriverVersion;
|
||||
DWORD *VendorId;
|
||||
DWORD *DeviceId;
|
||||
DWORD *SubSysId;
|
||||
DWORD *Revision;
|
||||
GUID *DeviceIdentifier;
|
||||
DWORD *WHQLLevel;
|
||||
} WINED3DADAPTER_IDENTIFIER;
|
||||
|
||||
typedef struct _WINED3DPRESENT_PARAMETERS {
|
||||
UINT *BackBufferWidth;
|
||||
UINT *BackBufferHeight;
|
||||
D3DFORMAT *BackBufferFormat;
|
||||
UINT *BackBufferCount;
|
||||
D3DMULTISAMPLE_TYPE *MultiSampleType;
|
||||
DWORD *MultiSampleQuality;
|
||||
D3DSWAPEFFECT *SwapEffect;
|
||||
HWND *hDeviceWindow;
|
||||
BOOL *Windowed;
|
||||
BOOL *EnableAutoDepthStencil;
|
||||
D3DFORMAT *AutoDepthStencilFormat;
|
||||
DWORD *Flags;
|
||||
UINT *FullScreen_RefreshRateInHz;
|
||||
UINT *PresentationInterval;
|
||||
} WINED3DPRESENT_PARAMETERS;
|
||||
|
||||
typedef struct _WINED3DSURFACE_DESC
|
||||
{
|
||||
D3DFORMAT *Format;
|
||||
D3DRESOURCETYPE *Type;
|
||||
DWORD *Usage;
|
||||
D3DPOOL *Pool;
|
||||
UINT *Size;
|
||||
|
||||
D3DMULTISAMPLE_TYPE *MultiSampleType;
|
||||
DWORD *MultiSampleQuality;
|
||||
UINT *Width;
|
||||
UINT *Height;
|
||||
} WINED3DSURFACE_DESC;
|
||||
|
||||
typedef struct _WINED3DVOLUME_DESC
|
||||
{
|
||||
D3DFORMAT *Format;
|
||||
D3DRESOURCETYPE *Type;
|
||||
DWORD *Usage;
|
||||
D3DPOOL *Pool;
|
||||
UINT *Size;
|
||||
|
||||
UINT *Width;
|
||||
UINT *Height;
|
||||
UINT *Depth;
|
||||
} WINED3DVOLUME_DESC;
|
||||
|
||||
typedef struct _WINED3DVERTEXELEMENT {
|
||||
WORD Stream;
|
||||
WORD Offset;
|
||||
BYTE Type;
|
||||
BYTE Method;
|
||||
BYTE Usage;
|
||||
BYTE UsageIndex;
|
||||
} WINED3DVERTEXELEMENT, *LPWINED3DVERTEXELEMENT;
|
||||
|
||||
|
||||
typedef enum _WINED3DQUERYTYPE {
|
||||
WINED3DQUERYTYPE_VCACHE = 4,
|
||||
WINED3DQUERYTYPE_RESOURCEMANAGER = 5,
|
||||
WINED3DQUERYTYPE_VERTEXSTATS = 6,
|
||||
WINED3DQUERYTYPE_EVENT = 8,
|
||||
WINED3DQUERYTYPE_OCCLUSION = 9,
|
||||
WINED3DQUERYTYPE_TIMESTAMP = 10,
|
||||
WINED3DQUERYTYPE_TIMESTAMPDISJOINT = 11,
|
||||
WINED3DQUERYTYPE_TIMESTAMPFREQ = 12,
|
||||
WINED3DQUERYTYPE_PIPELINETIMINGS = 13,
|
||||
WINED3DQUERYTYPE_INTERFACETIMINGS = 14,
|
||||
WINED3DQUERYTYPE_VERTEXTIMINGS = 15,
|
||||
WINED3DQUERYTYPE_PIXELTIMINGS = 16,
|
||||
WINED3DQUERYTYPE_BANDWIDTHTIMINGS = 17,
|
||||
WINED3DQUERYTYPE_CACHEUTILIZATION = 18
|
||||
} WINED3DQUERYTYPE;
|
||||
|
||||
#define WINED3DISSUE_BEGIN (1 << 1)
|
||||
#define WINED3DISSUE_END (1 << 0)
|
||||
#define WINED3DGETDATA_FLUSH (1 << 0)
|
||||
|
||||
typedef struct _WINED3DDEVICE_CREATION_PARAMETERS {
|
||||
UINT AdapterOrdinal;
|
||||
D3DDEVTYPE DeviceType;
|
||||
HWND hFocusWindow;
|
||||
DWORD BehaviorFlags;
|
||||
} WINED3DDEVICE_CREATION_PARAMETERS;
|
||||
|
||||
typedef struct _WINED3DDEVINFO_BANDWIDTHTIMINGS {
|
||||
float MaxBandwidthUtilized;
|
||||
float FrontEndUploadMemoryUtilizedPercent;
|
||||
float VertexRateUtilizedPercent;
|
||||
float TriangleSetupRateUtilizedPercent;
|
||||
float FillRateUtilizedPercent;
|
||||
} WINED3DDEVINFO_BANDWIDTHTIMINGS;
|
||||
|
||||
typedef struct _WINED3DDEVINFO_CACHEUTILIZATION {
|
||||
float TextureCacheHitRate;
|
||||
float PostTransformVertexCacheHitRate;
|
||||
} WINED3DDEVINFO_CACHEUTILIZATION;
|
||||
|
||||
typedef struct _WINED3DDEVINFO_INTERFACETIMINGS {
|
||||
float WaitingForGPUToUseApplicationResourceTimePercent;
|
||||
float WaitingForGPUToAcceptMoreCommandsTimePercent;
|
||||
float WaitingForGPUToStayWithinLatencyTimePercent;
|
||||
float WaitingForGPUExclusiveResourceTimePercent;
|
||||
float WaitingForGPUOtherTimePercent;
|
||||
} WINED3DDEVINFO_INTERFACETIMINGS;
|
||||
|
||||
typedef struct _WINED3DDEVINFO_PIPELINETIMINGS {
|
||||
float VertexProcessingTimePercent;
|
||||
float PixelProcessingTimePercent;
|
||||
float OtherGPUProcessingTimePercent;
|
||||
float GPUIdleTimePercent;
|
||||
} WINED3DDEVINFO_PIPELINETIMINGS;
|
||||
|
||||
typedef struct _WINED3DDEVINFO_STAGETIMINGS {
|
||||
float MemoryProcessingPercent;
|
||||
float ComputationProcessingPercent;
|
||||
} WINED3DDEVINFO_STAGETIMINGS;
|
||||
|
||||
|
||||
typedef struct WINED3DRESOURCESTATS {
|
||||
BOOL bThrashing;
|
||||
DWORD ApproxBytesDownloaded;
|
||||
DWORD NumEvicts;
|
||||
DWORD NumVidCreates;
|
||||
DWORD LastPri;
|
||||
DWORD NumUsed;
|
||||
DWORD NumUsedInVidMem;
|
||||
DWORD WorkingSet;
|
||||
DWORD WorkingSetBytes;
|
||||
DWORD TotalManaged;
|
||||
DWORD TotalBytes;
|
||||
} WINED3DRESOURCESTATS;
|
||||
|
||||
typedef enum _WINED3DRESOURCETYPE {
|
||||
WINED3DRTYPE_SURFACE = 1,
|
||||
WINED3DRTYPE_VOLUME = 2,
|
||||
WINED3DRTYPE_TEXTURE = 3,
|
||||
WINED3DRTYPE_VOLUMETEXTURE = 4,
|
||||
WINED3DRTYPE_CUBETEXTURE = 5,
|
||||
WINED3DRTYPE_VERTEXBUFFER = 6,
|
||||
WINED3DRTYPE_INDEXBUFFER = 7,
|
||||
|
||||
WINED3DRTYPE_FORCE_DWORD = 0x7fffffff
|
||||
} WINED3DRESOURCETYPE;
|
||||
|
||||
#define WINED3DRTYPECOUNT (WINED3DRTYPE_INDEXBUFFER+1)
|
||||
|
||||
typedef struct _WINED3DDEVINFO_RESOURCEMANAGER {
|
||||
WINED3DRESOURCESTATS stats[WINED3DRTYPECOUNT];
|
||||
} WINED3DDEVINFO_RESOURCEMANAGER;
|
||||
|
||||
typedef struct _WINED3DDEVINFO_VERTEXSTATS {
|
||||
DWORD NumRenderedTriangles;
|
||||
DWORD NumExtraClippingTriangles;
|
||||
} WINED3DDEVINFO_VERTEXSTATS;
|
||||
|
||||
|
||||
/*Vertex cache optimization hints.*/
|
||||
typedef struct WINED3DDEVINFO_VCACHE {
|
||||
/*Must be a 4 char code FOURCC (e.g. CACH)*/
|
||||
DWORD Pattern;
|
||||
/*0 to get the longest strips, 1 vertex cache*/
|
||||
DWORD OptMethod;
|
||||
/*Cache size to use (only valid if OptMethod==1) */
|
||||
DWORD CacheSize;
|
||||
/*internal for deciding when to restart strips, non user modifyable (only valid if OptMethod==1)*/
|
||||
DWORD MagicNumber;
|
||||
} WINED3DDEVINFO_VCACHE;
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue