static HRESULT WINAPI d3d8_CheckDeviceFormat(IDirect3D8 *iface, UINT adapter, D3DDEVTYPE device_type, D3DFORMAT adapter_format, DWORD usage, D3DRESOURCETYPE resource_type, D3DFORMAT format) { struct d3d8 *d3d8 = impl_from_IDirect3D8(iface); enum wined3d_resource_type wined3d_rtype; HRESULT hr; TRACE("iface %p, adapter %u, device_type %#x, adapter_format %#x, usage %#x, resource_type %#x, format %#x.\n", iface, adapter, device_type, adapter_format, usage, resource_type, format); switch (resource_type) { case D3DRTYPE_VERTEXBUFFER: case D3DRTYPE_INDEXBUFFER: wined3d_rtype = WINED3D_RTYPE_BUFFER; break; default: wined3d_rtype = resource_type; break; } wined3d_mutex_lock(); hr = wined3d_check_device_format(d3d8->wined3d, adapter, device_type, wined3dformat_from_d3dformat(adapter_format), usage, wined3d_rtype, wined3dformat_from_d3dformat(format)); wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI IDirect3D9Impl_CheckDeviceFormat(IDirect3D9Ex *iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) { IDirect3D9Impl *This = impl_from_IDirect3D9Ex(iface); HRESULT hr; WINED3DRESOURCETYPE WineD3DRType; TRACE("iface %p, adapter %u, device_type %#x, adapter_format %#x, usage %#x, resource_type %#x, format %#x.\n", iface, Adapter, DeviceType, AdapterFormat, Usage, RType, CheckFormat); switch(RType) { case D3DRTYPE_VERTEXBUFFER: case D3DRTYPE_INDEXBUFFER: WineD3DRType = WINED3DRTYPE_BUFFER; break; default: WineD3DRType = RType; break; } wined3d_mutex_lock(); hr = wined3d_check_device_format(This->WineD3D, Adapter, DeviceType, wined3dformat_from_d3dformat(AdapterFormat), Usage, WineD3DRType, wined3dformat_from_d3dformat(CheckFormat), SURFACE_OPENGL); wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI d3d8_CheckDeviceFormat(IDirect3D8 *iface, UINT adapter, D3DDEVTYPE device_type, D3DFORMAT adapter_format, DWORD usage, D3DRESOURCETYPE resource_type, D3DFORMAT format) { struct d3d8 *d3d8 = impl_from_IDirect3D8(iface); enum wined3d_resource_type wined3d_rtype; unsigned int bind_flags; HRESULT hr; TRACE("iface %p, adapter %u, device_type %#x, adapter_format %#x, usage %#x, resource_type %#x, format %#x.\n", iface, adapter, device_type, adapter_format, usage, resource_type, format); if (!adapter_format) { WARN("Invalid adapter format.\n"); return D3DERR_INVALIDCALL; } bind_flags = wined3d_bind_flags_from_d3d8_usage(usage); usage = usage & (WINED3DUSAGE_MASK | WINED3DUSAGE_QUERY_MASK); switch (resource_type) { case D3DRTYPE_CUBETEXTURE: usage |= WINED3DUSAGE_LEGACY_CUBEMAP; case D3DRTYPE_TEXTURE: bind_flags |= WINED3D_BIND_SHADER_RESOURCE; case D3DRTYPE_SURFACE: wined3d_rtype = WINED3D_RTYPE_TEXTURE_2D; break; case D3DRTYPE_VOLUMETEXTURE: case D3DRTYPE_VOLUME: bind_flags |= WINED3D_BIND_SHADER_RESOURCE; wined3d_rtype = WINED3D_RTYPE_TEXTURE_3D; break; case D3DRTYPE_VERTEXBUFFER: case D3DRTYPE_INDEXBUFFER: wined3d_rtype = WINED3D_RTYPE_BUFFER; break; default: FIXME("Unhandled resource type %#x.\n", resource_type); return WINED3DERR_INVALIDCALL; } wined3d_mutex_lock(); hr = wined3d_check_device_format(d3d8->wined3d, adapter, device_type, wined3dformat_from_d3dformat(adapter_format), usage, bind_flags, wined3d_rtype, wined3dformat_from_d3dformat(format)); wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI d3d9_CheckDeviceFormat(IDirect3D9Ex *iface, UINT adapter, D3DDEVTYPE device_type, D3DFORMAT adapter_format, DWORD usage, D3DRESOURCETYPE resource_type, D3DFORMAT format) { struct d3d9 *d3d9 = impl_from_IDirect3D9Ex(iface); enum wined3d_resource_type wined3d_rtype; HRESULT hr; TRACE("iface %p, adapter %u, device_type %#x, adapter_format %#x, usage %#x, resource_type %#x, format %#x.\n", iface, adapter, device_type, adapter_format, usage, resource_type, format); usage = usage & (WINED3DUSAGE_MASK | WINED3DUSAGE_QUERY_MASK); switch (resource_type) { case D3DRTYPE_SURFACE: wined3d_rtype = WINED3D_RTYPE_SURFACE; break; case D3DRTYPE_VOLUME: wined3d_rtype = WINED3D_RTYPE_VOLUME; break; case D3DRTYPE_TEXTURE: wined3d_rtype = WINED3D_RTYPE_TEXTURE_2D; break; case D3DRTYPE_VOLUMETEXTURE: wined3d_rtype = WINED3D_RTYPE_TEXTURE_3D; break; case D3DRTYPE_CUBETEXTURE: wined3d_rtype = WINED3D_RTYPE_TEXTURE_2D; usage |= WINED3DUSAGE_LEGACY_CUBEMAP; break; case D3DRTYPE_VERTEXBUFFER: case D3DRTYPE_INDEXBUFFER: wined3d_rtype = WINED3D_RTYPE_BUFFER; break; default: FIXME("Unhandled resource type %#x.\n", resource_type); return WINED3DERR_INVALIDCALL; } wined3d_mutex_lock(); hr = wined3d_check_device_format(d3d9->wined3d, adapter, device_type, wined3dformat_from_d3dformat(adapter_format), usage, wined3d_rtype, wined3dformat_from_d3dformat(format)); wined3d_mutex_unlock(); return hr; }
static HRESULT WINAPI IDirect3D8Impl_CheckDeviceFormat(LPDIRECT3D8 iface, UINT Adapter, D3DDEVTYPE DeviceType, D3DFORMAT AdapterFormat, DWORD Usage, D3DRESOURCETYPE RType, D3DFORMAT CheckFormat) { IDirect3D8Impl *This = impl_from_IDirect3D8(iface); HRESULT hr; WINED3DRESOURCETYPE WineD3DRType; TRACE("iface %p, adapter %u, device_type %#x, adapter_format %#x, usage %#x, resource_type %#x, format %#x.\n", iface, Adapter, DeviceType, AdapterFormat, Usage, RType, CheckFormat); if(CheckFormat == D3DFMT_R8G8B8) { /* See comment in dlls/d3d9/directx.c, IDirect3D9Impl_CheckDeviceFormat for details */ WARN("D3DFMT_R8G8B8 is not available on windows, returning D3DERR_NOTAVAILABLE\n"); return D3DERR_NOTAVAILABLE; } switch(RType) { case D3DRTYPE_VERTEXBUFFER: case D3DRTYPE_INDEXBUFFER: WineD3DRType = WINED3DRTYPE_BUFFER; break; default: WineD3DRType = RType; break; } wined3d_mutex_lock(); hr = wined3d_check_device_format(This->WineD3D, Adapter, DeviceType, wined3dformat_from_d3dformat(AdapterFormat), Usage, WineD3DRType, wined3dformat_from_d3dformat(CheckFormat), SURFACE_OPENGL); wined3d_mutex_unlock(); return hr; }