HRESULT cubetexture_init(struct d3d9_texture *texture, struct d3d9_device *device, UINT edge_length, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool #ifdef VBOX_WITH_WDDM , HANDLE *shared_handle , void **pavClientMem #endif ) { struct wined3d_resource_desc desc; DWORD surface_flags = 0; HRESULT hr; texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_cube_vtbl; texture->refcount = 1; desc.resource_type = WINED3D_RTYPE_CUBE_TEXTURE; desc.format = wined3dformat_from_d3dformat(format); desc.multisample_type = WINED3D_MULTISAMPLE_NONE; desc.multisample_quality = 0; desc.usage = usage & WINED3DUSAGE_MASK; desc.pool = pool; desc.width = edge_length; desc.height = edge_length; desc.depth = 1; desc.size = 0; if (pool != D3DPOOL_DEFAULT || (usage & D3DUSAGE_DYNAMIC)) surface_flags |= WINED3D_SURFACE_MAPPABLE; wined3d_mutex_lock(); hr = wined3d_texture_create_cube(device->wined3d_device, &desc, levels, surface_flags, texture, &d3d9_texture_wined3d_parent_ops, &texture->wined3d_texture #ifdef VBOX_WITH_WDDM , shared_handle , pavClientMem #endif ); wined3d_mutex_unlock(); if (FAILED(hr)) { WARN("Failed to create wined3d cube texture, hr %#x.\n", hr); return hr; } texture->parent_device = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(texture->parent_device); return D3D_OK; }
HRESULT cubetexture_init(IDirect3DCubeTexture9Impl *texture, IDirect3DDevice9Impl *device, UINT edge_length, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool) { HRESULT hr; texture->IDirect3DCubeTexture9_iface.lpVtbl = &Direct3DCubeTexture9_Vtbl; texture->ref = 1; wined3d_mutex_lock(); hr = wined3d_texture_create_cube(device->wined3d_device, edge_length, levels, usage, wined3dformat_from_d3dformat(format), pool, texture, &d3d9_cubetexture_wined3d_parent_ops, &texture->wined3d_texture); wined3d_mutex_unlock(); if (FAILED(hr)) { WARN("Failed to create wined3d cube texture, hr %#x.\n", hr); return hr; } texture->parentDevice = &device->IDirect3DDevice9Ex_iface; IDirect3DDevice9Ex_AddRef(texture->parentDevice); return D3D_OK; }
HRESULT cubetexture_init(struct d3d8_texture *texture, IDirect3DDevice8Impl *device, UINT edge_length, UINT levels, DWORD usage, D3DFORMAT format, D3DPOOL pool) { HRESULT hr; texture->IDirect3DBaseTexture8_iface.lpVtbl = (const IDirect3DBaseTexture8Vtbl *)&Direct3DCubeTexture8_Vtbl; texture->refcount = 1; wined3d_mutex_lock(); hr = wined3d_texture_create_cube(device->wined3d_device, edge_length, levels, usage & WINED3DUSAGE_MASK, wined3dformat_from_d3dformat(format), pool, texture, &d3d8_texture_wined3d_parent_ops, &texture->wined3d_texture); wined3d_mutex_unlock(); if (FAILED(hr)) { WARN("Failed to create wined3d cube texture, hr %#x.\n", hr); return hr; } texture->parent_device = &device->IDirect3DDevice8_iface; IDirect3DDevice8_AddRef(texture->parent_device); return D3D_OK; }