Commit 2767543b authored by Felix Nawothnig's avatar Felix Nawothnig Committed by Alexandre Julliard

- Output a FIXME when a surface with dimensions not being a power of

two is requested. - Fail gracefully when IWineD3DImpl_CreateDevice fails to create the front- or backbuffer.
parent fe42f46c
...@@ -412,9 +412,8 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, UINT Wid ...@@ -412,9 +412,8 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateSurface(IWineD3DDevice *iface, UINT Wid
while (pow2Width < Width) pow2Width <<= 1; while (pow2Width < Width) pow2Width <<= 1;
while (pow2Height < Height) pow2Height <<= 1; while (pow2Height < Height) pow2Height <<= 1;
/* TODO: support for non-power 2 textures */
if(pow2Width > Width || pow2Height > Height){ if(pow2Width > Width || pow2Height > Height){
/** TODO: add support for non power two compressed textures (OpenGL provices support for * non-power-two textures gratis) **/ FIXME("non-power-two textures unsupported\n"); /* OpenGL provides support for these gratis */
return D3DERR_NOTAVAILABLE; return D3DERR_NOTAVAILABLE;
} }
......
...@@ -1496,6 +1496,7 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV ...@@ -1496,6 +1496,7 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV
IWineD3DImpl *This = (IWineD3DImpl *)iface; IWineD3DImpl *This = (IWineD3DImpl *)iface;
int num; int num;
XVisualInfo template; XVisualInfo template;
HRESULT res;
/* Validate the adapter number */ /* Validate the adapter number */
if (Adapter >= IWineD3D_GetAdapterCount(iface)) { if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
...@@ -1659,7 +1660,7 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV ...@@ -1659,7 +1660,7 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV
parms. Fix this by passing in a function to call which takes identical parms parms. Fix this by passing in a function to call which takes identical parms
and handles the differences at the d3dx layer, and returns the IWineD3DSurface and handles the differences at the d3dx layer, and returns the IWineD3DSurface
pointer rather than the created D3D8/9 one */ pointer rather than the created D3D8/9 one */
D3DCB_CreateRenderTarget((IUnknown *) parent, if ((res = D3DCB_CreateRenderTarget((IUnknown *) parent,
*(pPresentationParameters->BackBufferWidth), *(pPresentationParameters->BackBufferWidth),
*(pPresentationParameters->BackBufferHeight), *(pPresentationParameters->BackBufferHeight),
*(pPresentationParameters->BackBufferFormat), *(pPresentationParameters->BackBufferFormat),
...@@ -1667,9 +1668,8 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV ...@@ -1667,9 +1668,8 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV
*(pPresentationParameters->MultiSampleQuality), *(pPresentationParameters->MultiSampleQuality),
TRUE, TRUE,
(IWineD3DSurface **) &object->frontBuffer, (IWineD3DSurface **) &object->frontBuffer,
NULL); NULL) != D3D_OK) ||
(res = D3DCB_CreateRenderTarget((IUnknown *) parent,
D3DCB_CreateRenderTarget((IUnknown *) parent,
*(pPresentationParameters->BackBufferWidth), *(pPresentationParameters->BackBufferWidth),
*(pPresentationParameters->BackBufferHeight), *(pPresentationParameters->BackBufferHeight),
*(pPresentationParameters->BackBufferFormat), *(pPresentationParameters->BackBufferFormat),
...@@ -1677,7 +1677,11 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV ...@@ -1677,7 +1677,11 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV
*(pPresentationParameters->MultiSampleQuality), *(pPresentationParameters->MultiSampleQuality),
TRUE, TRUE,
(IWineD3DSurface **) &object->backBuffer, (IWineD3DSurface **) &object->backBuffer,
NULL); NULL) != D3D_OK))
{
ERR("D3DCB_CreateRenderTarget() failed\n");
return res;
}
/* TODO: /* TODO:
if (*(pPresentationParameters->EnableAutoDepthStencil)) { if (*(pPresentationParameters->EnableAutoDepthStencil)) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment