ReactOS 0.4.17-dev-966-gf06eace
texture.c File Reference
#include "d3d9_private.h"
Include dependency graph for texture.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3d9)
 
static ULONG d3d9_texture_incref (struct d3d9_texture *texture)
 
static ULONG d3d9_texture_decref (struct d3d9_texture *texture)
 
static void d3d9_texture_preload (struct d3d9_texture *texture)
 
static struct d3d9_texture * impl_from_IDirect3DTexture9 (IDirect3DTexture9 *iface)
 
static struct d3d9_texture * impl_from_IDirect3DCubeTexture9 (IDirect3DCubeTexture9 *iface)
 
static struct d3d9_texture * impl_from_IDirect3DVolumeTexture9 (IDirect3DVolumeTexture9 *iface)
 
void d3d9_texture_gen_auto_mipmap (struct d3d9_texture *texture)
 
void d3d9_texture_flag_auto_gen_mipmap (struct d3d9_texture *texture)
 
static HRESULT WINAPI d3d9_texture_2d_QueryInterface (IDirect3DTexture9 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3d9_texture_2d_AddRef (IDirect3DTexture9 *iface)
 
static ULONG WINAPI d3d9_texture_2d_Release (IDirect3DTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_2d_GetDevice (IDirect3DTexture9 *iface, IDirect3DDevice9 **device)
 
static HRESULT WINAPI d3d9_texture_2d_SetPrivateData (IDirect3DTexture9 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
 
static HRESULT WINAPI d3d9_texture_2d_GetPrivateData (IDirect3DTexture9 *iface, REFGUID guid, void *data, DWORD *data_size)
 
static HRESULT WINAPI d3d9_texture_2d_FreePrivateData (IDirect3DTexture9 *iface, REFGUID guid)
 
static DWORD WINAPI d3d9_texture_2d_SetPriority (IDirect3DTexture9 *iface, DWORD priority)
 
static DWORD WINAPI d3d9_texture_2d_GetPriority (IDirect3DTexture9 *iface)
 
static void WINAPI d3d9_texture_2d_PreLoad (IDirect3DTexture9 *iface)
 
static D3DRESOURCETYPE WINAPI d3d9_texture_2d_GetType (IDirect3DTexture9 *iface)
 
static DWORD WINAPI d3d9_texture_2d_SetLOD (IDirect3DTexture9 *iface, DWORD lod)
 
static DWORD WINAPI d3d9_texture_2d_GetLOD (IDirect3DTexture9 *iface)
 
static DWORD WINAPI d3d9_texture_2d_GetLevelCount (IDirect3DTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_2d_SetAutoGenFilterType (IDirect3DTexture9 *iface, D3DTEXTUREFILTERTYPE filter_type)
 
static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_2d_GetAutoGenFilterType (IDirect3DTexture9 *iface)
 
static void WINAPI d3d9_texture_2d_GenerateMipSubLevels (IDirect3DTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_2d_GetLevelDesc (IDirect3DTexture9 *iface, UINT level, D3DSURFACE_DESC *desc)
 
static HRESULT WINAPI d3d9_texture_2d_GetSurfaceLevel (IDirect3DTexture9 *iface, UINT level, IDirect3DSurface9 **surface)
 
static HRESULT WINAPI d3d9_texture_2d_LockRect (IDirect3DTexture9 *iface, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
 
static HRESULT WINAPI d3d9_texture_2d_UnlockRect (IDirect3DTexture9 *iface, UINT level)
 
static HRESULT WINAPI d3d9_texture_2d_AddDirtyRect (IDirect3DTexture9 *iface, const RECT *dirty_rect)
 
static HRESULT WINAPI d3d9_texture_cube_QueryInterface (IDirect3DCubeTexture9 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3d9_texture_cube_AddRef (IDirect3DCubeTexture9 *iface)
 
static ULONG WINAPI d3d9_texture_cube_Release (IDirect3DCubeTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_cube_GetDevice (IDirect3DCubeTexture9 *iface, IDirect3DDevice9 **device)
 
static HRESULT WINAPI d3d9_texture_cube_SetPrivateData (IDirect3DCubeTexture9 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
 
static HRESULT WINAPI d3d9_texture_cube_GetPrivateData (IDirect3DCubeTexture9 *iface, REFGUID guid, void *data, DWORD *data_size)
 
static HRESULT WINAPI d3d9_texture_cube_FreePrivateData (IDirect3DCubeTexture9 *iface, REFGUID guid)
 
static DWORD WINAPI d3d9_texture_cube_SetPriority (IDirect3DCubeTexture9 *iface, DWORD priority)
 
static DWORD WINAPI d3d9_texture_cube_GetPriority (IDirect3DCubeTexture9 *iface)
 
static void WINAPI d3d9_texture_cube_PreLoad (IDirect3DCubeTexture9 *iface)
 
static D3DRESOURCETYPE WINAPI d3d9_texture_cube_GetType (IDirect3DCubeTexture9 *iface)
 
static DWORD WINAPI d3d9_texture_cube_SetLOD (IDirect3DCubeTexture9 *iface, DWORD lod)
 
static DWORD WINAPI d3d9_texture_cube_GetLOD (IDirect3DCubeTexture9 *iface)
 
static DWORD WINAPI d3d9_texture_cube_GetLevelCount (IDirect3DCubeTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_cube_SetAutoGenFilterType (IDirect3DCubeTexture9 *iface, D3DTEXTUREFILTERTYPE filter_type)
 
static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_cube_GetAutoGenFilterType (IDirect3DCubeTexture9 *iface)
 
static void WINAPI d3d9_texture_cube_GenerateMipSubLevels (IDirect3DCubeTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_cube_GetLevelDesc (IDirect3DCubeTexture9 *iface, UINT level, D3DSURFACE_DESC *desc)
 
static HRESULT WINAPI d3d9_texture_cube_GetCubeMapSurface (IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, UINT level, IDirect3DSurface9 **surface)
 
static HRESULT WINAPI d3d9_texture_cube_LockRect (IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
 
static HRESULT WINAPI d3d9_texture_cube_UnlockRect (IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, UINT level)
 
static HRESULT WINAPI d3d9_texture_cube_AddDirtyRect (IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, const RECT *dirty_rect)
 
static HRESULT WINAPI d3d9_texture_3d_QueryInterface (IDirect3DVolumeTexture9 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3d9_texture_3d_AddRef (IDirect3DVolumeTexture9 *iface)
 
static ULONG WINAPI d3d9_texture_3d_Release (IDirect3DVolumeTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_3d_GetDevice (IDirect3DVolumeTexture9 *iface, IDirect3DDevice9 **device)
 
static HRESULT WINAPI d3d9_texture_3d_SetPrivateData (IDirect3DVolumeTexture9 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
 
static HRESULT WINAPI d3d9_texture_3d_GetPrivateData (IDirect3DVolumeTexture9 *iface, REFGUID guid, void *data, DWORD *data_size)
 
static HRESULT WINAPI d3d9_texture_3d_FreePrivateData (IDirect3DVolumeTexture9 *iface, REFGUID guid)
 
static DWORD WINAPI d3d9_texture_3d_SetPriority (IDirect3DVolumeTexture9 *iface, DWORD priority)
 
static DWORD WINAPI d3d9_texture_3d_GetPriority (IDirect3DVolumeTexture9 *iface)
 
static void WINAPI d3d9_texture_3d_PreLoad (IDirect3DVolumeTexture9 *iface)
 
static D3DRESOURCETYPE WINAPI d3d9_texture_3d_GetType (IDirect3DVolumeTexture9 *iface)
 
static DWORD WINAPI d3d9_texture_3d_SetLOD (IDirect3DVolumeTexture9 *iface, DWORD lod)
 
static DWORD WINAPI d3d9_texture_3d_GetLOD (IDirect3DVolumeTexture9 *iface)
 
static DWORD WINAPI d3d9_texture_3d_GetLevelCount (IDirect3DVolumeTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_3d_SetAutoGenFilterType (IDirect3DVolumeTexture9 *iface, D3DTEXTUREFILTERTYPE filter_type)
 
static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_3d_GetAutoGenFilterType (IDirect3DVolumeTexture9 *iface)
 
static void WINAPI d3d9_texture_3d_GenerateMipSubLevels (IDirect3DVolumeTexture9 *iface)
 
static HRESULT WINAPI d3d9_texture_3d_GetLevelDesc (IDirect3DVolumeTexture9 *iface, UINT level, D3DVOLUME_DESC *desc)
 
static HRESULT WINAPI d3d9_texture_3d_GetVolumeLevel (IDirect3DVolumeTexture9 *iface, UINT level, IDirect3DVolume9 **volume)
 
static HRESULT WINAPI d3d9_texture_3d_LockBox (IDirect3DVolumeTexture9 *iface, UINT level, D3DLOCKED_BOX *locked_box, const D3DBOX *box, DWORD flags)
 
static HRESULT WINAPI d3d9_texture_3d_UnlockBox (IDirect3DVolumeTexture9 *iface, UINT level)
 
static HRESULT WINAPI d3d9_texture_3d_AddDirtyBox (IDirect3DVolumeTexture9 *iface, const D3DBOX *dirty_box)
 
struct d3d9_texture * unsafe_impl_from_IDirect3DBaseTexture9 (IDirect3DBaseTexture9 *iface)
 
static void STDMETHODCALLTYPE d3d9_texture_wined3d_object_destroyed (void *parent)
 
static HRESULT d3d9_texture_init (struct d3d9_texture *texture, struct d3d9_device *device, const struct wined3d_resource_desc *desc, D3DPOOL pool, DWORD usage, unsigned int layer_count, unsigned int level_count)
 
HRESULT d3d9_texture_2d_init (struct d3d9_texture *texture, struct d3d9_device *device, unsigned int width, unsigned int height, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 
HRESULT d3d9_texture_cube_init (struct d3d9_texture *texture, struct d3d9_device *device, unsigned int edge_length, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 
HRESULT d3d9_texture_3d_init (struct d3d9_texture *texture, struct d3d9_device *device, unsigned int width, unsigned int height, unsigned int depth, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
 

Variables

static const IDirect3DTexture9Vtbl d3d9_texture_2d_vtbl
 
static const IDirect3DCubeTexture9Vtbl d3d9_texture_cube_vtbl
 
static const IDirect3DVolumeTexture9Vtbl d3d9_texture_3d_vtbl
 
static const struct wined3d_parent_ops d3d9_texture_wined3d_parent_ops
 

Function Documentation

◆ d3d9_texture_2d_AddDirtyRect()

static HRESULT WINAPI d3d9_texture_2d_AddDirtyRect ( IDirect3DTexture9 *  iface,
const RECT *  dirty_rect 
)
static

Definition at line 434 of file texture.c.

435{
437 HRESULT hr;
438
439 TRACE("iface %p, dirty_rect %s.\n",
440 iface, wine_dbgstr_rect(dirty_rect));
441
443 if (!dirty_rect)
444 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, 0, NULL);
445 else
446 {
447 struct wined3d_box dirty_region;
448
449 wined3d_box_set(&dirty_region, dirty_rect->left, dirty_rect->top, dirty_rect->right, dirty_rect->bottom, 0, 1);
450 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, 0, &dirty_region);
451 }
453
454 return hr;
455}
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
static struct d3d9_texture * impl_from_IDirect3DTexture9(IDirect3DTexture9 *iface)
Definition: texture.c:78
HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, UINT layer, const struct wined3d_box *dirty_region)
Definition: texture.c:2132
GLenum GLuint texture
Definition: glext.h:6295
#define TRACE(s)
Definition: solgame.cpp:4
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
static void wined3d_box_set(struct wined3d_box *box, unsigned int left, unsigned int top, unsigned int right, unsigned int bottom, unsigned int front, unsigned int back)
Definition: wined3d.h:3006
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539

◆ d3d9_texture_2d_AddRef()

static ULONG WINAPI d3d9_texture_2d_AddRef ( IDirect3DTexture9 *  iface)
static

Definition at line 132 of file texture.c.

133{
135
137}
static ULONG d3d9_texture_incref(struct d3d9_texture *texture)
Definition: texture.c:25

◆ d3d9_texture_2d_FreePrivateData()

static HRESULT WINAPI d3d9_texture_2d_FreePrivateData ( IDirect3DTexture9 *  iface,
REFGUID  guid 
)
static

Definition at line 180 of file texture.c.

181{
183 TRACE("iface %p, guid %s.\n", iface, debugstr_guid(guid));
184
185 return d3d9_resource_free_private_data(&texture->resource, guid);
186}
HRESULT d3d9_resource_free_private_data(struct d3d9_resource *resource, const GUID *guid)
Definition: d3d9_main.c:289
GUID guid
Definition: version.c:147
#define debugstr_guid
Definition: kernel32.h:35

◆ d3d9_texture_2d_GenerateMipSubLevels()

static void WINAPI d3d9_texture_2d_GenerateMipSubLevels ( IDirect3DTexture9 *  iface)
static

Definition at line 314 of file texture.c.

315{
317
318 TRACE("iface %p.\n", iface);
319
323}
void d3d9_texture_gen_auto_mipmap(struct d3d9_texture *texture)
Definition: texture.c:94

◆ d3d9_texture_2d_GetAutoGenFilterType()

static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_2d_GetAutoGenFilterType ( IDirect3DTexture9 *  iface)
static

Definition at line 302 of file texture.c.

303{
305
306 TRACE("iface %p.\n", iface);
307
308 if (!(texture->usage & D3DUSAGE_AUTOGENMIPMAP))
309 WARN("Called on a texture without the D3DUSAGE_AUTOGENMIPMAP flag.\n");
310
311 return texture->autogen_filter_type;
312}
#define WARN(fmt,...)
Definition: precomp.h:61
#define D3DUSAGE_AUTOGENMIPMAP
Definition: d3d9types.h:113

◆ d3d9_texture_2d_GetDevice()

static HRESULT WINAPI d3d9_texture_2d_GetDevice ( IDirect3DTexture9 *  iface,
IDirect3DDevice9 **  device 
)
static

Definition at line 146 of file texture.c.

147{
149
150 TRACE("iface %p, device %p.\n", iface, device);
151
152 *device = (IDirect3DDevice9 *)&texture->parent_device->IDirect3DDevice9Ex_iface;
154
155 TRACE("Returning device %p.\n", *device);
156
157 return D3D_OK;
158}
#define IDirect3DDevice9_AddRef(p)
Definition: d3d9.h:1335
#define D3D_OK
Definition: d3d.h:106
DWORD IDirect3DDevice9
Definition: dxva2api.idl:22
Definition: devices.h:37

◆ d3d9_texture_2d_GetLevelCount()

static DWORD WINAPI d3d9_texture_2d_GetLevelCount ( IDirect3DTexture9 *  iface)
static

Definition at line 265 of file texture.c.

266{
268 DWORD ret;
269
270 TRACE("iface %p.\n", iface);
271
272 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP)
273 return 1;
274
276 ret = wined3d_texture_get_level_count(texture->wined3d_texture);
278
279 return ret;
280}
UINT CDECL wined3d_texture_get_level_count(const struct wined3d_texture *texture)
Definition: texture.c:1746
return ret
Definition: mutex.c:147
unsigned long DWORD
Definition: ntddk_ex.h:95

◆ d3d9_texture_2d_GetLevelDesc()

static HRESULT WINAPI d3d9_texture_2d_GetLevelDesc ( IDirect3DTexture9 *  iface,
UINT  level,
D3DSURFACE_DESC *  desc 
)
static

Definition at line 325 of file texture.c.

326{
328 struct wined3d_sub_resource_desc wined3d_desc;
329 HRESULT hr;
330
331 TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
332
333 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
334 {
335 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
336 return D3DERR_INVALIDCALL;
337 }
338
340 if (SUCCEEDED(hr = wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, level, &wined3d_desc)))
341 {
342 desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format);
343 desc->Type = D3DRTYPE_SURFACE;
344 desc->Usage = texture->usage;
345 desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage);
346 desc->MultiSampleType = d3dmultisample_type_from_wined3d(wined3d_desc.multisample_type);
347 desc->MultiSampleQuality = wined3d_desc.multisample_quality;
348 desc->Width = wined3d_desc.width;
349 desc->Height = wined3d_desc.height;
350 }
352
353 return hr;
354}
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
D3DFORMAT d3dformat_from_wined3dformat(enum wined3d_format_id format)
Definition: device.c:33
static D3DMULTISAMPLE_TYPE d3dmultisample_type_from_wined3d(enum wined3d_multisample_type type)
Definition: d3d8_private.h:387
static D3DPOOL d3dpool_from_wined3daccess(unsigned int access, unsigned int usage)
Definition: d3d8_private.h:315
@ D3DRTYPE_SURFACE
Definition: d3d8types.h:810
HRESULT CDECL wined3d_texture_get_sub_resource_desc(const struct wined3d_texture *texture, unsigned int sub_resource_idx, struct wined3d_sub_resource_desc *desc)
Definition: texture.c:4055
GLint level
Definition: gl.h:1546
#define SUCCEEDED(hr)
Definition: intsafe.h:50
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683

◆ d3d9_texture_2d_GetLOD()

static DWORD WINAPI d3d9_texture_2d_GetLOD ( IDirect3DTexture9 *  iface)
static

Definition at line 251 of file texture.c.

252{
254 DWORD ret;
255
256 TRACE("iface %p.\n", iface);
257
261
262 return ret;
263}
unsigned int CDECL wined3d_texture_get_lod(const struct wined3d_texture *texture)
Definition: texture.c:1715
static struct wined3d_texture * d3d9_texture_get_draw_texture(struct d3d9_texture *texture)
Definition: d3d9_private.h:238

◆ d3d9_texture_2d_GetPriority()

static DWORD WINAPI d3d9_texture_2d_GetPriority ( IDirect3DTexture9 *  iface)
static

Definition at line 204 of file texture.c.

205{
207 const struct wined3d_resource *resource;
208 DWORD ret;
209
210 TRACE("iface %p.\n", iface);
211
216
217 return ret;
218}
unsigned int CDECL wined3d_resource_get_priority(const struct wined3d_resource *resource)
Definition: resource.c:263
struct wined3d_resource *CDECL wined3d_texture_get_resource(struct wined3d_texture *texture)
Definition: texture.c:1649
#define resource
Definition: kernel32.h:9

◆ d3d9_texture_2d_GetPrivateData()

static HRESULT WINAPI d3d9_texture_2d_GetPrivateData ( IDirect3DTexture9 *  iface,
REFGUID  guid,
void *  data,
DWORD *  data_size 
)
static

Definition at line 170 of file texture.c.

172{
174 TRACE("iface %p, guid %s, data %p, data_size %p.\n",
175 iface, debugstr_guid(guid), data, data_size);
176
177 return d3d9_resource_get_private_data(&texture->resource, guid, data, data_size);
178}
HRESULT d3d9_resource_get_private_data(struct d3d9_resource *resource, const GUID *guid, void *data, DWORD *data_size)
Definition: d3d9_main.c:307
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950

◆ d3d9_texture_2d_GetSurfaceLevel()

static HRESULT WINAPI d3d9_texture_2d_GetSurfaceLevel ( IDirect3DTexture9 *  iface,
UINT  level,
IDirect3DSurface9 **  surface 
)
static

Definition at line 356 of file texture.c.

358{
360 struct d3d9_surface *surface_impl;
361
362 TRACE("iface %p, level %u, surface %p.\n", iface, level, surface);
363
364 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
365 {
366 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
367 return D3DERR_INVALIDCALL;
368 }
369
371 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
372 {
374 return D3DERR_INVALIDCALL;
375 }
376
377 *surface = &surface_impl->IDirect3DSurface9_iface;
378 IDirect3DSurface9_AddRef(*surface);
380
381 return D3D_OK;
382}
#define IDirect3DSurface9_AddRef(p)
Definition: d3d9.h:449
void *CDECL wined3d_texture_get_sub_resource_parent(struct wined3d_texture *texture, unsigned int sub_resource_idx)
Definition: texture.c:4033
IDirect3DSurface9 IDirect3DSurface9_iface
Definition: d3d9_private.h:170

◆ d3d9_texture_2d_GetType()

static D3DRESOURCETYPE WINAPI d3d9_texture_2d_GetType ( IDirect3DTexture9 *  iface)
static

Definition at line 229 of file texture.c.

230{
231 TRACE("iface %p.\n", iface);
232
233 return D3DRTYPE_TEXTURE;
234}
@ D3DRTYPE_TEXTURE
Definition: d3d8types.h:812

◆ d3d9_texture_2d_init()

HRESULT d3d9_texture_2d_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
unsigned int  width,
unsigned int  height,
unsigned int  level_count,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 1356 of file texture.c.

1358{
1360
1361 desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
1363 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1364 desc.multisample_quality = 0;
1368 desc.width = width;
1369 desc.height = height;
1370 desc.depth = 1;
1371 desc.size = 0;
1372
1373 if (!device->d3d_parent->extended)
1375
1376 texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_2d_vtbl;
1377 return d3d9_texture_init(texture, device, &desc, pool, usage, 1, level_count);
1378}
static unsigned int wined3d_usage_from_d3d(D3DPOOL pool, DWORD usage)
Definition: d3d8_private.h:365
static unsigned int wined3daccess_from_d3dpool(D3DPOOL pool, unsigned int usage)
Definition: d3d8_private.h:341
enum wined3d_format_id wined3dformat_from_d3dformat(D3DFORMAT format)
Definition: device.c:84
static const IDirect3DTexture9Vtbl d3d9_texture_2d_vtbl
Definition: texture.c:457
static HRESULT d3d9_texture_init(struct d3d9_texture *texture, struct d3d9_device *device, const struct wined3d_resource_desc *desc, D3DPOOL pool, DWORD usage, unsigned int layer_count, unsigned int level_count)
Definition: texture.c:1236
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLint GLsizei width
Definition: gl.h:1546
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
static unsigned int wined3d_bind_flags_from_d3d9_usage(DWORD usage)
Definition: d3d9_private.h:395
@ WINED3D_MULTISAMPLE_NONE
Definition: wined3d.h:573
@ WINED3D_RTYPE_TEXTURE_2D
Definition: wined3d.h:720
#define WINED3D_BIND_SHADER_RESOURCE
Definition: wined3d.h:912
#define WINED3DUSAGE_VIDMEM_ACCOUNTING
Definition: wined3d.h:939

Referenced by d3d9_device_CreateTexture().

◆ d3d9_texture_2d_LockRect()

static HRESULT WINAPI d3d9_texture_2d_LockRect ( IDirect3DTexture9 *  iface,
UINT  level,
D3DLOCKED_RECT *  locked_rect,
const RECT *  rect,
DWORD  flags 
)
static

Definition at line 384 of file texture.c.

386{
388 struct d3d9_surface *surface_impl;
389 HRESULT hr;
390
391 TRACE("iface %p, level %u, locked_rect %p, rect %p, flags %#lx.\n",
392 iface, level, locked_rect, rect, flags);
393
394 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
395 {
396 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
397 return D3DERR_INVALIDCALL;
398 }
399
401 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
403 else
404 hr = IDirect3DSurface9_LockRect(&surface_impl->IDirect3DSurface9_iface, locked_rect, rect, flags);
406
407 return hr;
408}
RECT rect
Definition: combotst.c:67
#define IDirect3DSurface9_LockRect(p, a, b, c)
Definition: d3d9.h:463
GLbitfield flags
Definition: glext.h:7161

◆ d3d9_texture_2d_PreLoad()

static void WINAPI d3d9_texture_2d_PreLoad ( IDirect3DTexture9 *  iface)
static

Definition at line 220 of file texture.c.

221{
223
224 TRACE("iface %p.\n", iface);
225
227}
static void d3d9_texture_preload(struct d3d9_texture *texture)
Definition: texture.c:71

◆ d3d9_texture_2d_QueryInterface()

static HRESULT WINAPI d3d9_texture_2d_QueryInterface ( IDirect3DTexture9 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 112 of file texture.c.

113{
114 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
115
116 if (IsEqualGUID(riid, &IID_IDirect3DTexture9)
117 || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)
118 || IsEqualGUID(riid, &IID_IDirect3DResource9)
120 {
122 *out = iface;
123 return S_OK;
124 }
125
126 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
127
128 *out = NULL;
129 return E_NOINTERFACE;
130}
const GUID IID_IUnknown
#define IDirect3DTexture9_AddRef(p)
Definition: d3d9.h:841
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define E_NOINTERFACE
Definition: winerror.h:3479

◆ d3d9_texture_2d_Release()

static ULONG WINAPI d3d9_texture_2d_Release ( IDirect3DTexture9 *  iface)
static

Definition at line 139 of file texture.c.

140{
142
144}
static ULONG d3d9_texture_decref(struct d3d9_texture *texture)
Definition: texture.c:48

◆ d3d9_texture_2d_SetAutoGenFilterType()

static HRESULT WINAPI d3d9_texture_2d_SetAutoGenFilterType ( IDirect3DTexture9 *  iface,
D3DTEXTUREFILTERTYPE  filter_type 
)
static

Definition at line 282 of file texture.c.

283{
285
286 TRACE("iface %p, filter_type %#x.\n", iface, filter_type);
287
288 if (filter_type == D3DTEXF_NONE)
289 {
290 WARN("Invalid filter type D3DTEXF_NONE specified.\n");
291 return D3DERR_INVALIDCALL;
292 }
293 if (!(texture->usage & D3DUSAGE_AUTOGENMIPMAP))
294 WARN("Called on a texture without the D3DUSAGE_AUTOGENMIPMAP flag.\n");
295 else if (filter_type != D3DTEXF_LINEAR)
296 FIXME("Unsupported filter type %u.\n", filter_type);
297
298 texture->autogen_filter_type = filter_type;
299 return D3D_OK;
300}
#define FIXME(fmt,...)
Definition: precomp.h:53
@ D3DTEXF_NONE
Definition: d3d8types.h:870
@ D3DTEXF_LINEAR
Definition: d3d8types.h:872

◆ d3d9_texture_2d_SetLOD()

static DWORD WINAPI d3d9_texture_2d_SetLOD ( IDirect3DTexture9 *  iface,
DWORD  lod 
)
static

Definition at line 236 of file texture.c.

237{
239 DWORD ret;
240
241 TRACE("iface %p, lod %lu.\n", iface, lod);
242
244 ret = wined3d_stateblock_set_texture_lod(texture->parent_device->state,
247
248 return ret;
249}
GLint lod
Definition: glext.h:7795
unsigned int CDECL wined3d_stateblock_set_texture_lod(struct wined3d_stateblock *stateblock, struct wined3d_texture *texture, unsigned int lod)
Definition: stateblock.c:4004

◆ d3d9_texture_2d_SetPriority()

static DWORD WINAPI d3d9_texture_2d_SetPriority ( IDirect3DTexture9 *  iface,
DWORD  priority 
)
static

Definition at line 188 of file texture.c.

189{
192 DWORD ret;
193
194 TRACE("iface %p, priority %lu.\n", iface, priority);
195
200
201 return ret;
202}
unsigned int CDECL wined3d_resource_set_priority(struct wined3d_resource *resource, unsigned int priority)
Definition: resource.c:247
static int priority
Definition: timer.c:163

◆ d3d9_texture_2d_SetPrivateData()

static HRESULT WINAPI d3d9_texture_2d_SetPrivateData ( IDirect3DTexture9 *  iface,
REFGUID  guid,
const void *  data,
DWORD  data_size,
DWORD  flags 
)
static

Definition at line 160 of file texture.c.

162{
164 TRACE("iface %p, guid %s, data %p, data_size %lu, flags %#lx.\n",
165 iface, debugstr_guid(guid), data, data_size, flags);
166
167 return d3d9_resource_set_private_data(&texture->resource, guid, data, data_size, flags);
168}
HRESULT d3d9_resource_set_private_data(struct d3d9_resource *resource, const GUID *guid, const void *data, DWORD data_size, DWORD flags)
Definition: d3d9_main.c:351

◆ d3d9_texture_2d_UnlockRect()

static HRESULT WINAPI d3d9_texture_2d_UnlockRect ( IDirect3DTexture9 *  iface,
UINT  level 
)
static

Definition at line 410 of file texture.c.

411{
413 struct d3d9_surface *surface_impl;
414 HRESULT hr;
415
416 TRACE("iface %p, level %u.\n", iface, level);
417
418 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
419 {
420 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
421 return D3DERR_INVALIDCALL;
422 }
423
425 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
427 else
430
431 return hr;
432}
#define IDirect3DSurface9_UnlockRect(p)
Definition: d3d9.h:464

◆ d3d9_texture_3d_AddDirtyBox()

static HRESULT WINAPI d3d9_texture_3d_AddDirtyBox ( IDirect3DVolumeTexture9 *  iface,
const D3DBOX *  dirty_box 
)
static

Definition at line 1159 of file texture.c.

1160{
1162 HRESULT hr;
1163
1164 TRACE("iface %p, dirty_box %p.\n", iface, dirty_box);
1165
1167 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, 0, (const struct wined3d_box *)dirty_box);
1169
1170 return hr;
1171}
static struct d3d9_texture * impl_from_IDirect3DVolumeTexture9(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:88

◆ d3d9_texture_3d_AddRef()

static ULONG WINAPI d3d9_texture_3d_AddRef ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 908 of file texture.c.

909{
911
913}

◆ d3d9_texture_3d_FreePrivateData()

static HRESULT WINAPI d3d9_texture_3d_FreePrivateData ( IDirect3DVolumeTexture9 *  iface,
REFGUID  guid 
)
static

Definition at line 956 of file texture.c.

957{
959 TRACE("iface %p, guid %s.\n", iface, debugstr_guid(guid));
960
961 return d3d9_resource_free_private_data(&texture->resource, guid);
962}

◆ d3d9_texture_3d_GenerateMipSubLevels()

static void WINAPI d3d9_texture_3d_GenerateMipSubLevels ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 1070 of file texture.c.

1071{
1072 TRACE("iface %p.\n", iface);
1073}

◆ d3d9_texture_3d_GetAutoGenFilterType()

static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_3d_GetAutoGenFilterType ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 1063 of file texture.c.

1064{
1065 TRACE("iface %p.\n", iface);
1066
1067 return D3DTEXF_NONE;
1068}

◆ d3d9_texture_3d_GetDevice()

static HRESULT WINAPI d3d9_texture_3d_GetDevice ( IDirect3DVolumeTexture9 *  iface,
IDirect3DDevice9 **  device 
)
static

Definition at line 922 of file texture.c.

923{
925
926 TRACE("iface %p, device %p.\n", iface, device);
927
928 *device = (IDirect3DDevice9 *)&texture->parent_device->IDirect3DDevice9Ex_iface;
930
931 TRACE("Returning device %p.\n", *device);
932
933 return D3D_OK;
934}

◆ d3d9_texture_3d_GetLevelCount()

static DWORD WINAPI d3d9_texture_3d_GetLevelCount ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 1041 of file texture.c.

1042{
1044 DWORD ret;
1045
1046 TRACE("iface %p.\n", iface);
1047
1049 ret = wined3d_texture_get_level_count(texture->wined3d_texture);
1051
1052 return ret;
1053}

◆ d3d9_texture_3d_GetLevelDesc()

static HRESULT WINAPI d3d9_texture_3d_GetLevelDesc ( IDirect3DVolumeTexture9 *  iface,
UINT  level,
D3DVOLUME_DESC *  desc 
)
static

Definition at line 1075 of file texture.c.

1076{
1078 struct wined3d_sub_resource_desc wined3d_desc;
1079 HRESULT hr;
1080
1081 TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
1082
1084 if (SUCCEEDED(hr = wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, level, &wined3d_desc)))
1085 {
1086 desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format);
1087 desc->Type = D3DRTYPE_VOLUME;
1088 desc->Usage = texture->usage;
1089 desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage);
1090 desc->Width = wined3d_desc.width;
1091 desc->Height = wined3d_desc.height;
1092 desc->Depth = wined3d_desc.depth;
1093 }
1095
1096 return hr;
1097}
@ D3DRTYPE_VOLUME
Definition: d3d8types.h:811

◆ d3d9_texture_3d_GetLOD()

static DWORD WINAPI d3d9_texture_3d_GetLOD ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 1027 of file texture.c.

1028{
1030 DWORD ret;
1031
1032 TRACE("iface %p.\n", iface);
1033
1037
1038 return ret;
1039}

◆ d3d9_texture_3d_GetPriority()

static DWORD WINAPI d3d9_texture_3d_GetPriority ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 980 of file texture.c.

◆ d3d9_texture_3d_GetPrivateData()

static HRESULT WINAPI d3d9_texture_3d_GetPrivateData ( IDirect3DVolumeTexture9 *  iface,
REFGUID  guid,
void *  data,
DWORD *  data_size 
)
static

Definition at line 946 of file texture.c.

948{
950 TRACE("iface %p, guid %s, data %p, data_size %p.\n",
951 iface, debugstr_guid(guid), data, data_size);
952
953 return d3d9_resource_get_private_data(&texture->resource, guid, data, data_size);
954}

◆ d3d9_texture_3d_GetType()

static D3DRESOURCETYPE WINAPI d3d9_texture_3d_GetType ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 1005 of file texture.c.

1006{
1007 TRACE("iface %p.\n", iface);
1008
1010}
@ D3DRTYPE_VOLUMETEXTURE
Definition: d3d8types.h:813

◆ d3d9_texture_3d_GetVolumeLevel()

static HRESULT WINAPI d3d9_texture_3d_GetVolumeLevel ( IDirect3DVolumeTexture9 *  iface,
UINT  level,
IDirect3DVolume9 **  volume 
)
static

Definition at line 1099 of file texture.c.

1101{
1103 struct d3d9_volume *volume_impl;
1104
1105 TRACE("iface %p, level %u, volume %p.\n", iface, level, volume);
1106
1108 if (!(volume_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
1109 {
1111 return D3DERR_INVALIDCALL;
1112 }
1113
1114 *volume = &volume_impl->IDirect3DVolume9_iface;
1117
1118 return D3D_OK;
1119}
#define IDirect3DVolume9_AddRef(p)
Definition: d3d9.h:276
IDirect3DVolume9 IDirect3DVolume9_iface
Definition: d3d9_private.h:145

◆ d3d9_texture_3d_init()

HRESULT d3d9_texture_3d_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
unsigned int  width,
unsigned int  height,
unsigned int  depth,
unsigned int  level_count,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 1404 of file texture.c.

1406{
1408
1409 /* In d3d9, 3D textures can't be used as rendertarget or depth/stencil buffer. */
1411 return D3DERR_INVALIDCALL;
1412
1413 desc.resource_type = WINED3D_RTYPE_TEXTURE_3D;
1415 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1416 desc.multisample_quality = 0;
1420 desc.width = width;
1421 desc.height = height;
1422 desc.depth = depth;
1423 desc.size = 0;
1424
1425 if (!device->d3d_parent->extended)
1427
1428 texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_3d_vtbl;
1429 return d3d9_texture_init(texture, device, &desc, pool, usage, 1, level_count);
1430}
#define D3DUSAGE_RENDERTARGET
Definition: d3d8types.h:91
#define D3DUSAGE_DEPTHSTENCIL
Definition: d3d8types.h:92
static const IDirect3DVolumeTexture9Vtbl d3d9_texture_3d_vtbl
Definition: texture.c:1174
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
@ WINED3D_RTYPE_TEXTURE_3D
Definition: wined3d.h:721

Referenced by d3d9_device_CreateVolumeTexture().

◆ d3d9_texture_3d_LockBox()

static HRESULT WINAPI d3d9_texture_3d_LockBox ( IDirect3DVolumeTexture9 *  iface,
UINT  level,
D3DLOCKED_BOX *  locked_box,
const D3DBOX *  box,
DWORD  flags 
)
static

Definition at line 1121 of file texture.c.

1123{
1125 struct d3d9_volume *volume_impl;
1126 HRESULT hr;
1127
1128 TRACE("iface %p, level %u, locked_box %p, box %p, flags %#lx.\n",
1129 iface, level, locked_box, box, flags);
1130
1132 if (!(volume_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
1134 else
1135 hr = IDirect3DVolume9_LockBox(&volume_impl->IDirect3DVolume9_iface, locked_box, box, flags);
1137
1138 return hr;
1139}
#define IDirect3DVolume9_LockBox(p, a, b, c)
Definition: d3d9.h:285
Definition: palette.c:466

◆ d3d9_texture_3d_PreLoad()

static void WINAPI d3d9_texture_3d_PreLoad ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 996 of file texture.c.

997{
999
1000 TRACE("iface %p.\n", iface);
1001
1003}

◆ d3d9_texture_3d_QueryInterface()

static HRESULT WINAPI d3d9_texture_3d_QueryInterface ( IDirect3DVolumeTexture9 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 888 of file texture.c.

889{
890 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
891
892 if (IsEqualGUID(riid, &IID_IDirect3DVolumeTexture9)
893 || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)
894 || IsEqualGUID(riid, &IID_IDirect3DResource9)
896 {
898 *out = iface;
899 return S_OK;
900 }
901
902 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
903
904 *out = NULL;
905 return E_NOINTERFACE;
906}
#define IDirect3DVolumeTexture9_AddRef(p)
Definition: d3d9.h:936

◆ d3d9_texture_3d_Release()

static ULONG WINAPI d3d9_texture_3d_Release ( IDirect3DVolumeTexture9 *  iface)
static

Definition at line 915 of file texture.c.

916{
918
920}

◆ d3d9_texture_3d_SetAutoGenFilterType()

static HRESULT WINAPI d3d9_texture_3d_SetAutoGenFilterType ( IDirect3DVolumeTexture9 *  iface,
D3DTEXTUREFILTERTYPE  filter_type 
)
static

Definition at line 1055 of file texture.c.

1057{
1058 TRACE("iface %p, filter_type %#x.\n", iface, filter_type);
1059
1060 return D3DERR_INVALIDCALL;
1061}

◆ d3d9_texture_3d_SetLOD()

static DWORD WINAPI d3d9_texture_3d_SetLOD ( IDirect3DVolumeTexture9 *  iface,
DWORD  lod 
)
static

Definition at line 1012 of file texture.c.

1013{
1015 DWORD ret;
1016
1017 TRACE("iface %p, lod %lu.\n", iface, lod);
1018
1020 ret = wined3d_stateblock_set_texture_lod(texture->parent_device->state,
1023
1024 return ret;
1025}

◆ d3d9_texture_3d_SetPriority()

static DWORD WINAPI d3d9_texture_3d_SetPriority ( IDirect3DVolumeTexture9 *  iface,
DWORD  priority 
)
static

Definition at line 964 of file texture.c.

◆ d3d9_texture_3d_SetPrivateData()

static HRESULT WINAPI d3d9_texture_3d_SetPrivateData ( IDirect3DVolumeTexture9 *  iface,
REFGUID  guid,
const void *  data,
DWORD  data_size,
DWORD  flags 
)
static

Definition at line 936 of file texture.c.

938{
940 TRACE("iface %p, guid %s, data %p, data_size %lu, flags %#lx.\n",
941 iface, debugstr_guid(guid), data, data_size, flags);
942
943 return d3d9_resource_set_private_data(&texture->resource, guid, data, data_size, flags);
944}

◆ d3d9_texture_3d_UnlockBox()

static HRESULT WINAPI d3d9_texture_3d_UnlockBox ( IDirect3DVolumeTexture9 *  iface,
UINT  level 
)
static

Definition at line 1141 of file texture.c.

1142{
1144 struct d3d9_volume *volume_impl;
1145 HRESULT hr;
1146
1147 TRACE("iface %p, level %u.\n", iface, level);
1148
1150 if (!(volume_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
1152 else
1155
1156 return hr;
1157}
#define IDirect3DVolume9_UnlockBox(p)
Definition: d3d9.h:286

◆ d3d9_texture_cube_AddDirtyRect()

static HRESULT WINAPI d3d9_texture_cube_AddDirtyRect ( IDirect3DCubeTexture9 *  iface,
D3DCUBEMAP_FACES  face,
const RECT *  dirty_rect 
)
static

Definition at line 834 of file texture.c.

836{
838 HRESULT hr;
839
840 TRACE("iface %p, face %#x, dirty_rect %s.\n",
841 iface, face, wine_dbgstr_rect(dirty_rect));
842
844 if (!dirty_rect)
846 else
847 {
848 struct wined3d_box dirty_region;
849
850 wined3d_box_set(&dirty_region, dirty_rect->left, dirty_rect->top, dirty_rect->right, dirty_rect->bottom, 0, 1);
851 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, face, &dirty_region);
852 }
854
855 return hr;
856}
static struct d3d9_texture * impl_from_IDirect3DCubeTexture9(IDirect3DCubeTexture9 *iface)
Definition: texture.c:83
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

◆ d3d9_texture_cube_AddRef()

static ULONG WINAPI d3d9_texture_cube_AddRef ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 507 of file texture.c.

508{
510
512}

◆ d3d9_texture_cube_FreePrivateData()

static HRESULT WINAPI d3d9_texture_cube_FreePrivateData ( IDirect3DCubeTexture9 *  iface,
REFGUID  guid 
)
static

Definition at line 555 of file texture.c.

556{
558 TRACE("iface %p, guid %s.\n", iface, debugstr_guid(guid));
559
560 return d3d9_resource_free_private_data(&texture->resource, guid);
561}

◆ d3d9_texture_cube_GenerateMipSubLevels()

static void WINAPI d3d9_texture_cube_GenerateMipSubLevels ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 690 of file texture.c.

691{
693
694 TRACE("iface %p.\n", iface);
695
699}

◆ d3d9_texture_cube_GetAutoGenFilterType()

static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_cube_GetAutoGenFilterType ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 678 of file texture.c.

679{
681
682 TRACE("iface %p.\n", iface);
683
684 if (!(texture->usage & D3DUSAGE_AUTOGENMIPMAP))
685 WARN("Called on a texture without the D3DUSAGE_AUTOGENMIPMAP flag.\n");
686
687 return texture->autogen_filter_type;
688}

◆ d3d9_texture_cube_GetCubeMapSurface()

static HRESULT WINAPI d3d9_texture_cube_GetCubeMapSurface ( IDirect3DCubeTexture9 *  iface,
D3DCUBEMAP_FACES  face,
UINT  level,
IDirect3DSurface9 **  surface 
)
static

Definition at line 740 of file texture.c.

742{
744 struct d3d9_surface *surface_impl;
746 DWORD level_count;
747
748 TRACE("iface %p, face %#x, level %u, surface %p.\n", iface, face, level, surface);
749
750 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
751 {
752 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
753 return D3DERR_INVALIDCALL;
754 }
755
757 level_count = wined3d_texture_get_level_count(texture->wined3d_texture);
758 if (level >= level_count)
759 {
761 return D3DERR_INVALIDCALL;
762 }
763
764 sub_resource_idx = level_count * face + level;
765 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, sub_resource_idx)))
766 {
768 return D3DERR_INVALIDCALL;
769 }
770
771 *surface = &surface_impl->IDirect3DSurface9_iface;
772 IDirect3DSurface9_AddRef(*surface);
774
775 return D3D_OK;
776}
unsigned int UINT
Definition: sysinfo.c:13
unsigned int sub_resource_idx
Definition: d3d9_private.h:173

◆ d3d9_texture_cube_GetDevice()

static HRESULT WINAPI d3d9_texture_cube_GetDevice ( IDirect3DCubeTexture9 *  iface,
IDirect3DDevice9 **  device 
)
static

Definition at line 521 of file texture.c.

522{
524
525 TRACE("iface %p, device %p.\n", iface, device);
526
527 *device = (IDirect3DDevice9 *)&texture->parent_device->IDirect3DDevice9Ex_iface;
529
530 TRACE("Returning device %p.\n", *device);
531
532 return D3D_OK;
533}

◆ d3d9_texture_cube_GetLevelCount()

static DWORD WINAPI d3d9_texture_cube_GetLevelCount ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 640 of file texture.c.

641{
643 DWORD ret;
644
645 TRACE("iface %p.\n", iface);
646
647 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP)
648 return 1;
649
651 ret = wined3d_texture_get_level_count(texture->wined3d_texture);
653
654 return ret;
655}

◆ d3d9_texture_cube_GetLevelDesc()

static HRESULT WINAPI d3d9_texture_cube_GetLevelDesc ( IDirect3DCubeTexture9 *  iface,
UINT  level,
D3DSURFACE_DESC *  desc 
)
static

Definition at line 701 of file texture.c.

702{
704 struct wined3d_sub_resource_desc wined3d_desc;
705 DWORD level_count;
706 HRESULT hr;
707
708 TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
709
710 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
711 {
712 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
713 return D3DERR_INVALIDCALL;
714 }
715
717 level_count = wined3d_texture_get_level_count(texture->wined3d_texture);
718 if (level >= level_count)
719 {
721 return D3DERR_INVALIDCALL;
722 }
723
724 if (SUCCEEDED(hr = wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, level, &wined3d_desc)))
725 {
726 desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format);
727 desc->Type = D3DRTYPE_SURFACE;
728 desc->Usage = texture->usage;
729 desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage);
730 desc->MultiSampleType = d3dmultisample_type_from_wined3d(wined3d_desc.multisample_type);
731 desc->MultiSampleQuality = wined3d_desc.multisample_quality;
732 desc->Width = wined3d_desc.width;
733 desc->Height = wined3d_desc.height;
734 }
736
737 return hr;
738}

◆ d3d9_texture_cube_GetLOD()

static DWORD WINAPI d3d9_texture_cube_GetLOD ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 626 of file texture.c.

627{
629 DWORD ret;
630
631 TRACE("iface %p.\n", iface);
632
636
637 return ret;
638}

◆ d3d9_texture_cube_GetPriority()

static DWORD WINAPI d3d9_texture_cube_GetPriority ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 579 of file texture.c.

◆ d3d9_texture_cube_GetPrivateData()

static HRESULT WINAPI d3d9_texture_cube_GetPrivateData ( IDirect3DCubeTexture9 *  iface,
REFGUID  guid,
void *  data,
DWORD *  data_size 
)
static

Definition at line 545 of file texture.c.

547{
549 TRACE("iface %p, guid %s, data %p, data_size %p.\n",
550 iface, debugstr_guid(guid), data, data_size);
551
552 return d3d9_resource_get_private_data(&texture->resource, guid, data, data_size);
553}

◆ d3d9_texture_cube_GetType()

static D3DRESOURCETYPE WINAPI d3d9_texture_cube_GetType ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 604 of file texture.c.

605{
606 TRACE("iface %p.\n", iface);
607
609}
@ D3DRTYPE_CUBETEXTURE
Definition: d3d8types.h:814

◆ d3d9_texture_cube_init()

HRESULT d3d9_texture_cube_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
unsigned int  edge_length,
unsigned int  level_count,
DWORD  usage,
D3DFORMAT  format,
D3DPOOL  pool 
)

Definition at line 1380 of file texture.c.

1382{
1384
1385 desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
1387 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1388 desc.multisample_quality = 0;
1392 desc.width = edge_length;
1393 desc.height = edge_length;
1394 desc.depth = 1;
1395 desc.size = 0;
1396
1397 if (!device->d3d_parent->extended)
1399
1400 texture->IDirect3DBaseTexture9_iface.lpVtbl = (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_cube_vtbl;
1401 return d3d9_texture_init(texture, device, &desc, pool, usage, 6, level_count);
1402}
static const IDirect3DCubeTexture9Vtbl d3d9_texture_cube_vtbl
Definition: texture.c:858
#define WINED3DUSAGE_LEGACY_CUBEMAP
Definition: wined3d.h:934

Referenced by d3d9_device_CreateCubeTexture().

◆ d3d9_texture_cube_LockRect()

static HRESULT WINAPI d3d9_texture_cube_LockRect ( IDirect3DCubeTexture9 *  iface,
D3DCUBEMAP_FACES  face,
UINT  level,
D3DLOCKED_RECT *  locked_rect,
const RECT *  rect,
DWORD  flags 
)
static

Definition at line 778 of file texture.c.

781{
783 struct d3d9_surface *surface_impl;
785 HRESULT hr;
786
787 TRACE("iface %p, face %#x, level %u, locked_rect %p, rect %p, flags %#lx.\n",
788 iface, face, level, locked_rect, rect, flags);
789
790 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
791 {
792 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
793 return D3DERR_INVALIDCALL;
794 }
795
798 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, sub_resource_idx)))
800 else
801 hr = IDirect3DSurface9_LockRect(&surface_impl->IDirect3DSurface9_iface, locked_rect, rect, flags);
803
804 return hr;
805}

◆ d3d9_texture_cube_PreLoad()

static void WINAPI d3d9_texture_cube_PreLoad ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 595 of file texture.c.

596{
598
599 TRACE("iface %p.\n", iface);
600
602}

◆ d3d9_texture_cube_QueryInterface()

static HRESULT WINAPI d3d9_texture_cube_QueryInterface ( IDirect3DCubeTexture9 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 487 of file texture.c.

488{
489 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
490
491 if (IsEqualGUID(riid, &IID_IDirect3DCubeTexture9)
492 || IsEqualGUID(riid, &IID_IDirect3DBaseTexture9)
493 || IsEqualGUID(riid, &IID_IDirect3DResource9)
495 {
497 *out = iface;
498 return S_OK;
499 }
500
501 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
502
503 *out = NULL;
504 return E_NOINTERFACE;
505}
#define IDirect3DCubeTexture9_AddRef(p)
Definition: d3d9.h:746

◆ d3d9_texture_cube_Release()

static ULONG WINAPI d3d9_texture_cube_Release ( IDirect3DCubeTexture9 *  iface)
static

Definition at line 514 of file texture.c.

515{
517
519}

◆ d3d9_texture_cube_SetAutoGenFilterType()

static HRESULT WINAPI d3d9_texture_cube_SetAutoGenFilterType ( IDirect3DCubeTexture9 *  iface,
D3DTEXTUREFILTERTYPE  filter_type 
)
static

Definition at line 657 of file texture.c.

659{
661
662 TRACE("iface %p, filter_type %#x.\n", iface, filter_type);
663
664 if (filter_type == D3DTEXF_NONE)
665 {
666 WARN("Invalid filter type D3DTEXF_NONE specified.\n");
667 return D3DERR_INVALIDCALL;
668 }
669 if (!(texture->usage & D3DUSAGE_AUTOGENMIPMAP))
670 WARN("Called on a texture without the D3DUSAGE_AUTOGENMIPMAP flag.\n");
671 else if (filter_type != D3DTEXF_LINEAR)
672 FIXME("Unsupported filter type %u.\n", filter_type);
673
674 texture->autogen_filter_type = filter_type;
675 return D3D_OK;
676}

◆ d3d9_texture_cube_SetLOD()

static DWORD WINAPI d3d9_texture_cube_SetLOD ( IDirect3DCubeTexture9 *  iface,
DWORD  lod 
)
static

Definition at line 611 of file texture.c.

612{
614 DWORD ret;
615
616 TRACE("iface %p, lod %lu.\n", iface, lod);
617
619 ret = wined3d_stateblock_set_texture_lod(texture->parent_device->state,
622
623 return ret;
624}

◆ d3d9_texture_cube_SetPriority()

static DWORD WINAPI d3d9_texture_cube_SetPriority ( IDirect3DCubeTexture9 *  iface,
DWORD  priority 
)
static

Definition at line 563 of file texture.c.

◆ d3d9_texture_cube_SetPrivateData()

static HRESULT WINAPI d3d9_texture_cube_SetPrivateData ( IDirect3DCubeTexture9 *  iface,
REFGUID  guid,
const void *  data,
DWORD  data_size,
DWORD  flags 
)
static

Definition at line 535 of file texture.c.

537{
539 TRACE("iface %p, guid %s, data %p, data_size %lu, flags %#lx.\n",
540 iface, debugstr_guid(guid), data, data_size, flags);
541
542 return d3d9_resource_set_private_data(&texture->resource, guid, data, data_size, flags);
543}

◆ d3d9_texture_cube_UnlockRect()

static HRESULT WINAPI d3d9_texture_cube_UnlockRect ( IDirect3DCubeTexture9 *  iface,
D3DCUBEMAP_FACES  face,
UINT  level 
)
static

Definition at line 807 of file texture.c.

809{
811 struct d3d9_surface *surface_impl;
813 HRESULT hr;
814
815 TRACE("iface %p, face %#x, level %u.\n", iface, face, level);
816
817 if (texture->usage & D3DUSAGE_AUTOGENMIPMAP && level)
818 {
819 WARN("D3DUSAGE_AUTOGENMIPMAP textures have only one accessible level.\n");
820 return D3DERR_INVALIDCALL;
821 }
822
825 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, sub_resource_idx)))
827 else
830
831 return hr;
832}

◆ d3d9_texture_decref()

static ULONG d3d9_texture_decref ( struct d3d9_texture *  texture)
static

Definition at line 48 of file texture.c.

49{
50 ULONG ref = InterlockedDecrement(&texture->resource.refcount);
51
52 TRACE("%p decreasing refcount to %lu.\n", texture, ref);
53
54 if (!ref)
55 {
56 IDirect3DDevice9Ex *parent_device = &texture->parent_device->IDirect3DDevice9Ex_iface;
57 struct d3d9_surface *surface;
58
60 LIST_FOR_EACH_ENTRY(surface, &texture->rtv_list, struct d3d9_surface, rtv_entry)
64
65 /* Release the device last, as it may cause the device to be destroyed. */
67 }
68 return ref;
69}
#define InterlockedDecrement
Definition: armddk.h:52
#define IDirect3DDevice9Ex_Release(p)
Definition: d3d9.h:1930
ULONG CDECL wined3d_texture_decref(struct wined3d_texture *texture)
Definition: texture.c:1606
ULONG CDECL wined3d_rendertarget_view_decref(struct wined3d_rendertarget_view *view)
Definition: view.c:379
DWORD IDirect3DDevice9Ex
Definition: dxvahd.idl:22
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
IDirect3DDevice9Ex * parent_device
Definition: d3d9_private.h:176
struct list rtv_entry
Definition: d3d9_private.h:174
struct wined3d_rendertarget_view * wined3d_rtv
Definition: d3d9_private.h:175
Definition: send.c:48
uint32_t ULONG
Definition: typedefs.h:59

Referenced by d3d9_texture_2d_Release(), d3d9_texture_3d_Release(), and d3d9_texture_cube_Release().

◆ d3d9_texture_flag_auto_gen_mipmap()

◆ d3d9_texture_gen_auto_mipmap()

void d3d9_texture_gen_auto_mipmap ( struct d3d9_texture *  texture)

Definition at line 94 of file texture.c.

95{
96 if (!(texture->flags & D3D9_TEXTURE_MIPMAP_DIRTY))
97 return;
98 if (texture->draw_texture)
99 wined3d_device_update_texture(texture->parent_device->wined3d_device,
100 texture->wined3d_texture, texture->draw_texture);
101 wined3d_device_context_generate_mipmaps(texture->parent_device->immediate_context,
103 texture->flags &= ~D3D9_TEXTURE_MIPMAP_DIRTY;
104}
void CDECL wined3d_device_context_generate_mipmaps(struct wined3d_device_context *context, struct wined3d_shader_resource_view *view)
Definition: device.c:4684
HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture)
Definition: device.c:3808
struct wined3d_shader_resource_view *CDECL wined3d_texture_acquire_identity_srv(struct wined3d_texture *texture)
Definition: texture.c:4476

Referenced by d3d9_generate_auto_mipmaps(), d3d9_texture_2d_GenerateMipSubLevels(), and d3d9_texture_cube_GenerateMipSubLevels().

◆ d3d9_texture_incref()

static ULONG d3d9_texture_incref ( struct d3d9_texture *  texture)
static

Definition at line 25 of file texture.c.

26{
27 ULONG ref = InterlockedIncrement(&texture->resource.refcount);
28
29 TRACE("%p increasing refcount to %lu.\n", texture, ref);
30
31 if (ref == 1)
32 {
33 struct d3d9_surface *surface;
34
35 IDirect3DDevice9Ex_AddRef(&texture->parent_device->IDirect3DDevice9Ex_iface);
37 LIST_FOR_EACH_ENTRY(surface, &texture->rtv_list, struct d3d9_surface, rtv_entry)
38 {
40 }
43 }
44
45 return ref;
46}
#define InterlockedIncrement
Definition: armddk.h:53
#define IDirect3DDevice9Ex_AddRef(p)
Definition: d3d9.h:1929
ULONG CDECL wined3d_texture_incref(struct wined3d_texture *texture)
Definition: texture.c:1516
ULONG CDECL wined3d_rendertarget_view_incref(struct wined3d_rendertarget_view *view)
Definition: view.c:365

Referenced by d3d9_texture_2d_AddRef(), d3d9_texture_3d_AddRef(), and d3d9_texture_cube_AddRef().

◆ d3d9_texture_init()

static HRESULT d3d9_texture_init ( struct d3d9_texture *  texture,
struct d3d9_device *  device,
const struct wined3d_resource_desc *  desc,
D3DPOOL  pool,
DWORD  usage,
unsigned int  layer_count,
unsigned int  level_count 
)
static

Definition at line 1236 of file texture.c.

1239{
1241 unsigned int output_idx;
1242 unsigned int flags = 0;
1243 HRESULT hr;
1244
1245 if (pool == D3DPOOL_MANAGED && device->d3d_parent->extended)
1246 {
1247 WARN("Managed resources are not supported by d3d9ex devices.\n");
1248 return D3DERR_INVALIDCALL;
1249 }
1250
1251 d3d9_resource_init(&texture->resource);
1252 list_init(&texture->rtv_list);
1253 texture->usage = usage;
1254
1255 if (desc->resource_type == WINED3D_RTYPE_TEXTURE_2D && is_gdi_compat_wined3dformat(desc->format))
1259
1261 {
1262 WARN("Texture can't be created with the D3DUSAGE_WRITEONLY flags, returning D3DERR_INVALIDCALL.\n");
1263 return D3DERR_INVALIDCALL;
1264 }
1266 {
1267 if (desc->resource_type == WINED3D_RTYPE_TEXTURE_3D)
1268 {
1269 WARN("Texture can't be created with the D3DUSAGE_WRITEONLY flags, returning D3DERR_INVALIDCALL.\n");
1270 return D3DERR_INVALIDCALL;
1271 }
1272
1273 if (pool == D3DPOOL_SYSTEMMEM)
1274 {
1275 WARN("D3DUSAGE_AUTOGENMIPMAP texture can't be in D3DPOOL_SYSTEMMEM, returning D3DERR_INVALIDCALL.\n");
1276 return D3DERR_INVALIDCALL;
1277 }
1278
1279 if (level_count && level_count != 1)
1280 {
1281 WARN("D3DUSAGE_AUTOGENMIPMAP texture with %u level_count, returning D3DERR_INVALIDCALL.\n", level_count);
1282 return D3DERR_INVALIDCALL;
1283 }
1285 output_idx = device->adapter_ordinal;
1286 wined3d_adapter = wined3d_output_get_adapter(device->d3d_parent->wined3d_outputs[output_idx]);
1287 hr = wined3d_check_device_format(device->d3d_parent->wined3d, wined3d_adapter,
1291 if (hr == D3D_OK)
1292 {
1294 level_count = 0;
1295 }
1296 else
1297 {
1298 WARN("Mipmap autogeneration is not supported on wined3d format %#x, "
1299 "creating a texture with a single level.\n", desc->format);
1300 level_count = 1;
1301 }
1302 texture->autogen_filter_type = D3DTEXF_LINEAR;
1303 }
1304 else
1305 {
1306 texture->autogen_filter_type = D3DTEXF_NONE;
1307 }
1308 if (!level_count)
1309 level_count = wined3d_log2i(max(max(desc->width, desc->height), desc->depth)) + 1;
1310
1312 if (pool == D3DPOOL_MANAGED)
1313 {
1314 struct wined3d_resource_desc managed_desc = *desc;
1315
1317 managed_desc.bind_flags = 0;
1318 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &managed_desc, layer_count, level_count, flags,
1319 NULL, texture, &d3d9_null_wined3d_parent_ops, &texture->wined3d_texture)))
1320 {
1322 WARN("Failed to create sysmem texture, hr %#lx.\n", hr);
1323 return hr;
1324 }
1325
1326 managed_desc.access = WINED3D_RESOURCE_ACCESS_GPU;
1327 managed_desc.bind_flags = desc->bind_flags;
1329 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &managed_desc, layer_count, level_count, flags,
1331 {
1332 wined3d_texture_decref(texture->wined3d_texture);
1334 WARN("Failed to create draw texture, hr %#lx.\n", hr);
1335 return hr;
1336 }
1337 }
1338 else
1339 {
1340 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, desc, layer_count, level_count, flags,
1341 NULL, texture, &d3d9_texture_wined3d_parent_ops, &texture->wined3d_texture)))
1342 {
1344 WARN("Failed to create wined3d texture, hr %#lx.\n", hr);
1345 return hr;
1346 }
1347 }
1349
1350 texture->parent_device = device;
1351 IDirect3DDevice9Ex_AddRef(&texture->parent_device->IDirect3DDevice9Ex_iface);
1352
1353 return D3D_OK;
1354}
static void list_init(struct list_entry *head)
Definition: list.h:51
#define D3DUSAGE_WRITEONLY
Definition: d3d8types.h:93
@ D3DPOOL_SYSTEMMEM
Definition: d3d8types.h:711
@ D3DPOOL_MANAGED
Definition: d3d8types.h:710
void d3d9_resource_init(struct d3d9_resource *resource)
Definition: d3d9_main.c:345
static const struct wined3d_parent_ops d3d9_texture_wined3d_parent_ops
Definition: texture.c:1231
HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct wined3d_resource_desc *desc, UINT layer_count, UINT level_count, uint32_t flags, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture)
Definition: texture.c:4158
#define FAILED(hr)
Definition: intsafe.h:51
unsigned int bind_flags
Definition: wined3d.h:1796
unsigned int access
Definition: wined3d.h:1797
#define max(a, b)
Definition: svc.c:63
BOOL is_gdi_compat_wined3dformat(enum wined3d_format_id format)
Definition: device.c:1770
const struct wined3d_parent_ops d3d9_null_wined3d_parent_ops
Definition: device.c:29
struct wined3d_adapter *CDECL wined3d_output_get_adapter(const struct wined3d_output *output)
Definition: directx.c:1508
HRESULT CDECL wined3d_check_device_format(const struct wined3d *wined3d, const struct wined3d_adapter *adapter, enum wined3d_device_type device_type, enum wined3d_format_id adapter_format_id, uint32_t usage, unsigned int bind_flags, enum wined3d_resource_type resource_type, enum wined3d_format_id check_format_id)
Definition: directx.c:1972
static unsigned int wined3d_log2i(unsigned int x)
Definition: wined3d.h:2952
#define WINED3D_RESOURCE_ACCESS_GPU
Definition: wined3d.h:51
#define WINED3D_RESOURCE_ACCESS_CPU
Definition: wined3d.h:52
#define WINED3D_TEXTURE_CREATE_RECORD_DIRTY_REGIONS
Definition: wined3d.h:1567
@ WINED3DFMT_B8G8R8A8_UNORM
Definition: wined3d.h:244
#define WINED3D_RESOURCE_ACCESS_MAP_R
Definition: wined3d.h:53
#define WINED3DUSAGE_QUERY_GENMIPMAP
Definition: wined3d.h:941
#define WINED3D_TEXTURE_CREATE_GET_DC
Definition: wined3d.h:1565
@ WINED3D_DEVICE_TYPE_HAL
Definition: wined3d.h:91
#define WINED3D_TEXTURE_CREATE_GENERATE_MIPMAPS
Definition: wined3d.h:1566
#define WINED3D_RESOURCE_ACCESS_MAP_W
Definition: wined3d.h:54

Referenced by d3d9_texture_2d_init(), d3d9_texture_3d_init(), and d3d9_texture_cube_init().

◆ d3d9_texture_preload()

static void d3d9_texture_preload ( struct d3d9_texture *  texture)
static

Definition at line 71 of file texture.c.

72{
76}
void CDECL wined3d_resource_preload(struct wined3d_resource *resource)
Definition: resource.c:311

Referenced by d3d9_texture_2d_PreLoad(), d3d9_texture_3d_PreLoad(), and d3d9_texture_cube_PreLoad().

◆ d3d9_texture_wined3d_object_destroyed()

static void STDMETHODCALLTYPE d3d9_texture_wined3d_object_destroyed ( void *  parent)
static

Definition at line 1220 of file texture.c.

1221{
1222 struct d3d9_texture *texture = parent;
1223
1224 /* If the texture was managed, release the sysmem copy now. */
1225 if (texture->draw_texture)
1226 wined3d_texture_decref(texture->wined3d_texture);
1227 d3d9_resource_cleanup(&texture->resource);
1228 free(texture);
1229}
void d3d9_resource_cleanup(struct d3d9_resource *resource)
Definition: d3d9_main.c:284
#define free
Definition: debug_ros.c:5
r parent
Definition: btrfs.c:3010

◆ impl_from_IDirect3DCubeTexture9()

◆ impl_from_IDirect3DTexture9()

◆ impl_from_IDirect3DVolumeTexture9()

◆ unsafe_impl_from_IDirect3DBaseTexture9()

struct d3d9_texture * unsafe_impl_from_IDirect3DBaseTexture9 ( IDirect3DBaseTexture9 *  iface)

Definition at line 1204 of file texture.c.

1205{
1206 if (!iface)
1207 return NULL;
1208
1209 if (iface->lpVtbl != (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_2d_vtbl
1210 && iface->lpVtbl != (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_cube_vtbl
1211 && iface->lpVtbl != (const IDirect3DBaseTexture9Vtbl *)&d3d9_texture_3d_vtbl)
1212 {
1213 WARN("%p is not a valid IDirect3DBaseTexture9 interface.\n", iface);
1214 return NULL;
1215 }
1216
1217 return CONTAINING_RECORD(iface, struct d3d9_texture, IDirect3DBaseTexture9_iface);
1218}

Referenced by d3d9_device_SetTexture(), d3d9_device_UpdateTexture(), and d3d9_surface_create().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3d9  )

Variable Documentation

◆ d3d9_texture_2d_vtbl

const IDirect3DTexture9Vtbl d3d9_texture_2d_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI d3d9_texture_2d_GetPrivateData(IDirect3DTexture9 *iface, REFGUID guid, void *data, DWORD *data_size)
Definition: texture.c:170
static HRESULT WINAPI d3d9_texture_2d_UnlockRect(IDirect3DTexture9 *iface, UINT level)
Definition: texture.c:410
static HRESULT WINAPI d3d9_texture_2d_LockRect(IDirect3DTexture9 *iface, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
Definition: texture.c:384
static DWORD WINAPI d3d9_texture_2d_GetLOD(IDirect3DTexture9 *iface)
Definition: texture.c:251
static HRESULT WINAPI d3d9_texture_2d_GetSurfaceLevel(IDirect3DTexture9 *iface, UINT level, IDirect3DSurface9 **surface)
Definition: texture.c:356
static HRESULT WINAPI d3d9_texture_2d_SetPrivateData(IDirect3DTexture9 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
Definition: texture.c:160
static DWORD WINAPI d3d9_texture_2d_GetPriority(IDirect3DTexture9 *iface)
Definition: texture.c:204
static ULONG WINAPI d3d9_texture_2d_AddRef(IDirect3DTexture9 *iface)
Definition: texture.c:132
static void WINAPI d3d9_texture_2d_GenerateMipSubLevels(IDirect3DTexture9 *iface)
Definition: texture.c:314
static void WINAPI d3d9_texture_2d_PreLoad(IDirect3DTexture9 *iface)
Definition: texture.c:220
static D3DRESOURCETYPE WINAPI d3d9_texture_2d_GetType(IDirect3DTexture9 *iface)
Definition: texture.c:229
static HRESULT WINAPI d3d9_texture_2d_GetLevelDesc(IDirect3DTexture9 *iface, UINT level, D3DSURFACE_DESC *desc)
Definition: texture.c:325
static DWORD WINAPI d3d9_texture_2d_SetLOD(IDirect3DTexture9 *iface, DWORD lod)
Definition: texture.c:236
static HRESULT WINAPI d3d9_texture_2d_SetAutoGenFilterType(IDirect3DTexture9 *iface, D3DTEXTUREFILTERTYPE filter_type)
Definition: texture.c:282
static HRESULT WINAPI d3d9_texture_2d_AddDirtyRect(IDirect3DTexture9 *iface, const RECT *dirty_rect)
Definition: texture.c:434
static DWORD WINAPI d3d9_texture_2d_SetPriority(IDirect3DTexture9 *iface, DWORD priority)
Definition: texture.c:188
static ULONG WINAPI d3d9_texture_2d_Release(IDirect3DTexture9 *iface)
Definition: texture.c:139
static HRESULT WINAPI d3d9_texture_2d_GetDevice(IDirect3DTexture9 *iface, IDirect3DDevice9 **device)
Definition: texture.c:146
static DWORD WINAPI d3d9_texture_2d_GetLevelCount(IDirect3DTexture9 *iface)
Definition: texture.c:265
static HRESULT WINAPI d3d9_texture_2d_QueryInterface(IDirect3DTexture9 *iface, REFIID riid, void **out)
Definition: texture.c:112
static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_2d_GetAutoGenFilterType(IDirect3DTexture9 *iface)
Definition: texture.c:302
static HRESULT WINAPI d3d9_texture_2d_FreePrivateData(IDirect3DTexture9 *iface, REFGUID guid)
Definition: texture.c:180

Definition at line 457 of file texture.c.

Referenced by d3d9_texture_2d_init(), and unsafe_impl_from_IDirect3DBaseTexture9().

◆ d3d9_texture_3d_vtbl

const IDirect3DVolumeTexture9Vtbl d3d9_texture_3d_vtbl
static
Initial value:
=
{
}
static void WINAPI d3d9_texture_3d_GenerateMipSubLevels(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:1070
static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_3d_GetAutoGenFilterType(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:1063
static ULONG WINAPI d3d9_texture_3d_Release(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:915
static DWORD WINAPI d3d9_texture_3d_GetLevelCount(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:1041
static DWORD WINAPI d3d9_texture_3d_SetPriority(IDirect3DVolumeTexture9 *iface, DWORD priority)
Definition: texture.c:964
static ULONG WINAPI d3d9_texture_3d_AddRef(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:908
static HRESULT WINAPI d3d9_texture_3d_GetPrivateData(IDirect3DVolumeTexture9 *iface, REFGUID guid, void *data, DWORD *data_size)
Definition: texture.c:946
static DWORD WINAPI d3d9_texture_3d_GetLOD(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:1027
static DWORD WINAPI d3d9_texture_3d_SetLOD(IDirect3DVolumeTexture9 *iface, DWORD lod)
Definition: texture.c:1012
static HRESULT WINAPI d3d9_texture_3d_GetDevice(IDirect3DVolumeTexture9 *iface, IDirect3DDevice9 **device)
Definition: texture.c:922
static HRESULT WINAPI d3d9_texture_3d_AddDirtyBox(IDirect3DVolumeTexture9 *iface, const D3DBOX *dirty_box)
Definition: texture.c:1159
static HRESULT WINAPI d3d9_texture_3d_SetPrivateData(IDirect3DVolumeTexture9 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
Definition: texture.c:936
static HRESULT WINAPI d3d9_texture_3d_FreePrivateData(IDirect3DVolumeTexture9 *iface, REFGUID guid)
Definition: texture.c:956
static HRESULT WINAPI d3d9_texture_3d_GetLevelDesc(IDirect3DVolumeTexture9 *iface, UINT level, D3DVOLUME_DESC *desc)
Definition: texture.c:1075
static HRESULT WINAPI d3d9_texture_3d_SetAutoGenFilterType(IDirect3DVolumeTexture9 *iface, D3DTEXTUREFILTERTYPE filter_type)
Definition: texture.c:1055
static HRESULT WINAPI d3d9_texture_3d_UnlockBox(IDirect3DVolumeTexture9 *iface, UINT level)
Definition: texture.c:1141
static void WINAPI d3d9_texture_3d_PreLoad(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:996
static HRESULT WINAPI d3d9_texture_3d_GetVolumeLevel(IDirect3DVolumeTexture9 *iface, UINT level, IDirect3DVolume9 **volume)
Definition: texture.c:1099
static HRESULT WINAPI d3d9_texture_3d_LockBox(IDirect3DVolumeTexture9 *iface, UINT level, D3DLOCKED_BOX *locked_box, const D3DBOX *box, DWORD flags)
Definition: texture.c:1121
static DWORD WINAPI d3d9_texture_3d_GetPriority(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:980
static D3DRESOURCETYPE WINAPI d3d9_texture_3d_GetType(IDirect3DVolumeTexture9 *iface)
Definition: texture.c:1005
static HRESULT WINAPI d3d9_texture_3d_QueryInterface(IDirect3DVolumeTexture9 *iface, REFIID riid, void **out)
Definition: texture.c:888

Definition at line 1174 of file texture.c.

Referenced by d3d9_texture_3d_init(), and unsafe_impl_from_IDirect3DBaseTexture9().

◆ d3d9_texture_cube_vtbl

const IDirect3DCubeTexture9Vtbl d3d9_texture_cube_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI d3d9_texture_cube_AddDirtyRect(IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, const RECT *dirty_rect)
Definition: texture.c:834
static DWORD WINAPI d3d9_texture_cube_SetLOD(IDirect3DCubeTexture9 *iface, DWORD lod)
Definition: texture.c:611
static HRESULT WINAPI d3d9_texture_cube_GetLevelDesc(IDirect3DCubeTexture9 *iface, UINT level, D3DSURFACE_DESC *desc)
Definition: texture.c:701
static HRESULT WINAPI d3d9_texture_cube_GetDevice(IDirect3DCubeTexture9 *iface, IDirect3DDevice9 **device)
Definition: texture.c:521
static HRESULT WINAPI d3d9_texture_cube_SetPrivateData(IDirect3DCubeTexture9 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
Definition: texture.c:535
static DWORD WINAPI d3d9_texture_cube_GetLevelCount(IDirect3DCubeTexture9 *iface)
Definition: texture.c:640
static HRESULT WINAPI d3d9_texture_cube_QueryInterface(IDirect3DCubeTexture9 *iface, REFIID riid, void **out)
Definition: texture.c:487
static void WINAPI d3d9_texture_cube_PreLoad(IDirect3DCubeTexture9 *iface)
Definition: texture.c:595
static ULONG WINAPI d3d9_texture_cube_Release(IDirect3DCubeTexture9 *iface)
Definition: texture.c:514
static D3DTEXTUREFILTERTYPE WINAPI d3d9_texture_cube_GetAutoGenFilterType(IDirect3DCubeTexture9 *iface)
Definition: texture.c:678
static HRESULT WINAPI d3d9_texture_cube_UnlockRect(IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, UINT level)
Definition: texture.c:807
static HRESULT WINAPI d3d9_texture_cube_SetAutoGenFilterType(IDirect3DCubeTexture9 *iface, D3DTEXTUREFILTERTYPE filter_type)
Definition: texture.c:657
static DWORD WINAPI d3d9_texture_cube_SetPriority(IDirect3DCubeTexture9 *iface, DWORD priority)
Definition: texture.c:563
static DWORD WINAPI d3d9_texture_cube_GetPriority(IDirect3DCubeTexture9 *iface)
Definition: texture.c:579
static HRESULT WINAPI d3d9_texture_cube_GetCubeMapSurface(IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, UINT level, IDirect3DSurface9 **surface)
Definition: texture.c:740
static DWORD WINAPI d3d9_texture_cube_GetLOD(IDirect3DCubeTexture9 *iface)
Definition: texture.c:626
static ULONG WINAPI d3d9_texture_cube_AddRef(IDirect3DCubeTexture9 *iface)
Definition: texture.c:507
static HRESULT WINAPI d3d9_texture_cube_GetPrivateData(IDirect3DCubeTexture9 *iface, REFGUID guid, void *data, DWORD *data_size)
Definition: texture.c:545
static HRESULT WINAPI d3d9_texture_cube_FreePrivateData(IDirect3DCubeTexture9 *iface, REFGUID guid)
Definition: texture.c:555
static D3DRESOURCETYPE WINAPI d3d9_texture_cube_GetType(IDirect3DCubeTexture9 *iface)
Definition: texture.c:604
static void WINAPI d3d9_texture_cube_GenerateMipSubLevels(IDirect3DCubeTexture9 *iface)
Definition: texture.c:690
static HRESULT WINAPI d3d9_texture_cube_LockRect(IDirect3DCubeTexture9 *iface, D3DCUBEMAP_FACES face, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
Definition: texture.c:778

Definition at line 858 of file texture.c.

Referenced by d3d9_texture_cube_init(), and unsafe_impl_from_IDirect3DBaseTexture9().

◆ d3d9_texture_wined3d_parent_ops

const struct wined3d_parent_ops d3d9_texture_wined3d_parent_ops
static
Initial value:
=
{
}
static void STDMETHODCALLTYPE d3d9_texture_wined3d_object_destroyed(void *parent)
Definition: texture.c:1220

Definition at line 1231 of file texture.c.

Referenced by d3d9_texture_init().