Stefan Dösinger wrote:
D3D9 does not have Overlay surfaces like ddraw does, so we need a wined3d-private way to create ddraw overlays. I decided to add a new usage flag outside of the flags defined by Direct3D and use it in wined3d. d3d8 and d3d9 have to filter usage flags which are not valid in d3d8 and d3d9 to prevent broken applications from accidentally passing WINED3DUSAGE_OVERLAY.
D3D9 does not need overlays, because dynamic textures + drawing textured quads can provide simmilar functionality. But it is hard to implement ddraw ovelays using dynamic textures in ddraw.dll in an efficient way, so I decided to implement overlays in the ddraw way in wined3d.
@@ -274,7 +274,7 @@ static HRESULT WINAPI IDirect3DDevice9I
TRACE("(%p) : w(%d) h(%d) fmt(%d) surf@%p\n", This, Width, Height, Format, *ppSurface);
- hrc = IWineD3DDevice_CreateSurface(This->WineD3DDevice, Width, Height, Format, Lockable, Discard, Level, &object->wineD3DSurface, Type, Usage, (WINED3DPOOL) Pool,MultiSample,MultisampleQuality,pSharedHandle,SURFACE_OPENGL,(IUnknown *)object);
- hrc = IWineD3DDevice_CreateSurface(This->WineD3DDevice, Width, Height, Format, Lockable, Discard, Level, &object->wineD3DSurface, Type, Usage & WINED3DUSAGE_MASK, (WINED3DPOOL) Pool,MultiSample,MultisampleQuality,pSharedHandle,SURFACE_OPENGL,(IUnknown *)object);
Should we split lines like this? It's doesn't fit even on my 1600x1200 display.
diff --git a/include/wine/wined3d_types.h b/include/wine/wined3d_types.h index e70a814..278e7d7 100644 --- a/include/wine/wined3d_types.h +++ b/include/wine/wined3d_types.h @@ -1053,6 +1053,7 @@ #define WINED3DUSAGE_DYNAMIC #define WINED3DUSAGE_AUTOGENMIPMAP 0x00000400L #define WINED3DUSAGE_DMAP 0x00004000L #define WINED3DUSAGE_MASK 0x00004FFFL +#define WINED3DUSAGE_OVERLAY 0x00010000L
I think it would be safer to make it 0x10000000L instead.
Vitaliy