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
while (pow2Width < Width) pow2Width <<= 1;
while (pow2Height < Height) pow2Height <<= 1;
/* TODO: support for non-power 2 textures */
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;
}
......
......@@ -1496,6 +1496,7 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV
IWineD3DImpl *This = (IWineD3DImpl *)iface;
int num;
XVisualInfo template;
HRESULT res;
/* Validate the adapter number */
if (Adapter >= IWineD3D_GetAdapterCount(iface)) {
......@@ -1659,25 +1660,28 @@ HRESULT WINAPI IWineD3DImpl_CreateDevice(IWineD3D *iface, UINT Adapter, D3DDEV
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
pointer rather than the created D3D8/9 one */
D3DCB_CreateRenderTarget((IUnknown *) parent,
*(pPresentationParameters->BackBufferWidth),
*(pPresentationParameters->BackBufferHeight),
*(pPresentationParameters->BackBufferFormat),
*(pPresentationParameters->MultiSampleType),
*(pPresentationParameters->MultiSampleQuality),
TRUE,
(IWineD3DSurface **) &object->frontBuffer,
NULL);
D3DCB_CreateRenderTarget((IUnknown *) parent,
*(pPresentationParameters->BackBufferWidth),
*(pPresentationParameters->BackBufferHeight),
*(pPresentationParameters->BackBufferFormat),
*(pPresentationParameters->MultiSampleType),
*(pPresentationParameters->MultiSampleQuality),
TRUE,
(IWineD3DSurface **) &object->backBuffer,
NULL);
if ((res = D3DCB_CreateRenderTarget((IUnknown *) parent,
*(pPresentationParameters->BackBufferWidth),
*(pPresentationParameters->BackBufferHeight),
*(pPresentationParameters->BackBufferFormat),
*(pPresentationParameters->MultiSampleType),
*(pPresentationParameters->MultiSampleQuality),
TRUE,
(IWineD3DSurface **) &object->frontBuffer,
NULL) != D3D_OK) ||
(res = D3DCB_CreateRenderTarget((IUnknown *) parent,
*(pPresentationParameters->BackBufferWidth),
*(pPresentationParameters->BackBufferHeight),
*(pPresentationParameters->BackBufferFormat),
*(pPresentationParameters->MultiSampleType),
*(pPresentationParameters->MultiSampleQuality),
TRUE,
(IWineD3DSurface **) &object->backBuffer,
NULL) != D3D_OK))
{
ERR("D3DCB_CreateRenderTarget() failed\n");
return res;
}
/* TODO:
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