wined3d: Add dynamic locking support to CheckDeviceFormat.

This commit is contained in:
Roderick Colenbrander 2008-03-18 09:43:27 +01:00 committed by Alexandre Julliard
parent 7fd87f10cd
commit 30a3bc2651

View File

@ -2245,6 +2245,10 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
} }
} }
/* Always report dynamic locking */
if(Usage & WINED3DUSAGE_DYNAMIC)
UsageCaps |= WINED3DUSAGE_DYNAMIC;
if(Usage & WINED3DUSAGE_RENDERTARGET) { if(Usage & WINED3DUSAGE_RENDERTARGET) {
if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) { if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) {
UsageCaps |= WINED3DUSAGE_RENDERTARGET; UsageCaps |= WINED3DUSAGE_RENDERTARGET;
@ -2333,6 +2337,10 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
} }
} }
/* Always report dynamic locking */
if(Usage & WINED3DUSAGE_DYNAMIC)
UsageCaps |= WINED3DUSAGE_DYNAMIC;
if(Usage & WINED3DUSAGE_RENDERTARGET) { if(Usage & WINED3DUSAGE_RENDERTARGET) {
if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) { if(CheckRenderTargetCapability(AdapterFormat, CheckFormat)) {
UsageCaps |= WINED3DUSAGE_RENDERTARGET; UsageCaps |= WINED3DUSAGE_RENDERTARGET;
@ -2386,6 +2394,12 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
UsageCaps |= WINED3DUSAGE_DEPTHSTENCIL; UsageCaps |= WINED3DUSAGE_DEPTHSTENCIL;
} }
} else if(RType == WINED3DRTYPE_VOLUMETEXTURE) { } else if(RType == WINED3DRTYPE_VOLUMETEXTURE) {
/* Volumetexture allows:
* - D3DUSAGE_DYNAMIC
* - D3DUSAGE_NONSECURE (d3d9ex)
* - D3DUSAGE_SOFTWAREPROCESSING
*/
/* Check volume texture and volume usage caps */ /* Check volume texture and volume usage caps */
if(GL_SUPPORT(EXT_TEXTURE3D)) { if(GL_SUPPORT(EXT_TEXTURE3D)) {
if(CheckTextureCapability(Adapter, CheckFormat) == FALSE) { if(CheckTextureCapability(Adapter, CheckFormat) == FALSE) {
@ -2393,6 +2407,10 @@ static HRESULT WINAPI IWineD3DImpl_CheckDeviceFormat(IWineD3D *iface, UINT Adapt
return WINED3DERR_NOTAVAILABLE; return WINED3DERR_NOTAVAILABLE;
} }
/* Always report dynamic locking */
if(Usage & WINED3DUSAGE_DYNAMIC)
UsageCaps |= WINED3DUSAGE_DYNAMIC;
/* Check QUERY_FILTER support */ /* Check QUERY_FILTER support */
if(Usage & WINED3DUSAGE_QUERY_FILTER) { if(Usage & WINED3DUSAGE_QUERY_FILTER) {
if(CheckFilterCapability(CheckFormat)) { if(CheckFilterCapability(CheckFormat)) {