ReactOS 0.4.17-dev-966-gf06eace
texture.c
Go to the documentation of this file.
1/*
2 * Copyright 2005 Oliver Stieber
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17 */
18
19#include "d3d8_private.h"
20
22
24{
25 ULONG ref = InterlockedIncrement(&texture->resource.refcount);
26
27 TRACE("%p increasing refcount to %lu.\n", texture, ref);
28
29 if (ref == 1)
30 {
31 struct d3d8_surface *surface;
32
33 IDirect3DDevice8_AddRef(&texture->parent_device->IDirect3DDevice8_iface);
35 LIST_FOR_EACH_ENTRY(surface, &texture->rtv_list, struct d3d8_surface, rtv_entry)
36 {
38 }
41 }
42
43 return ref;
44}
45
47{
48 ULONG ref = InterlockedDecrement(&texture->resource.refcount);
49
50 TRACE("%p decreasing refcount to %lu.\n", texture, ref);
51
52 if (!ref)
53 {
54 IDirect3DDevice8 *parent_device = &texture->parent_device->IDirect3DDevice8_iface;
55 struct d3d8_surface *surface;
56
58 LIST_FOR_EACH_ENTRY(surface, &texture->rtv_list, struct d3d8_surface, rtv_entry)
59 {
61 }
64
65 /* Release the device last, as it may cause the device to be destroyed. */
67 }
68 return ref;
69}
70
72{
74 if (texture->draw_texture)
75 wined3d_device_update_texture(texture->parent_device->wined3d_device,
76 texture->wined3d_texture, texture->draw_texture);
77 else
80}
81
82static inline struct d3d8_texture *impl_from_IDirect3DTexture8(IDirect3DTexture8 *iface)
83{
85}
86
87static inline struct d3d8_texture *impl_from_IDirect3DCubeTexture8(IDirect3DCubeTexture8 *iface)
88{
90}
91
92static inline struct d3d8_texture *impl_from_IDirect3DVolumeTexture8(IDirect3DVolumeTexture8 *iface)
93{
95}
96
97static HRESULT WINAPI d3d8_texture_2d_QueryInterface(IDirect3DTexture8 *iface, REFIID riid, void **out)
98{
99 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
100
101 if (IsEqualGUID(riid, &IID_IDirect3DTexture8)
102 || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)
103 || IsEqualGUID(riid, &IID_IDirect3DResource8)
105 {
107 *out = iface;
108 return S_OK;
109 }
110
111 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
112
113 *out = NULL;
114 return E_NOINTERFACE;
115}
116
117static ULONG WINAPI d3d8_texture_2d_AddRef(IDirect3DTexture8 *iface)
118{
120
122}
123
124static ULONG WINAPI d3d8_texture_2d_Release(IDirect3DTexture8 *iface)
125{
127
129}
130
131static HRESULT WINAPI d3d8_texture_2d_GetDevice(IDirect3DTexture8 *iface, IDirect3DDevice8 **device)
132{
134
135 TRACE("iface %p, device %p.\n", iface, device);
136
137 *device = &texture->parent_device->IDirect3DDevice8_iface;
139
140 TRACE("Returning device %p.\n", *device);
141
142 return D3D_OK;
143}
144
145static HRESULT WINAPI d3d8_texture_2d_SetPrivateData(IDirect3DTexture8 *iface,
146 REFGUID guid, const void *data, DWORD data_size, DWORD flags)
147{
149 TRACE("iface %p, guid %s, data %p, data_size %lu, flags %#lx.\n",
150 iface, debugstr_guid(guid), data, data_size, flags);
151
152 return d3d8_resource_set_private_data(&texture->resource, guid, data, data_size, flags);
153}
154
155static HRESULT WINAPI d3d8_texture_2d_GetPrivateData(IDirect3DTexture8 *iface,
156 REFGUID guid, void *data, DWORD *data_size)
157{
159 TRACE("iface %p, guid %s, data %p, data_size %p.\n",
160 iface, debugstr_guid(guid), data, data_size);
161
162 return d3d8_resource_get_private_data(&texture->resource, guid, data, data_size);
163}
164
166{
168 TRACE("iface %p, guid %s.\n", iface, debugstr_guid(guid));
169
170 return d3d8_resource_free_private_data(&texture->resource, guid);
171}
172
173static DWORD WINAPI d3d8_texture_2d_SetPriority(IDirect3DTexture8 *iface, DWORD priority)
174{
177 DWORD ret;
178
179 TRACE("iface %p, priority %lu.\n", iface, priority);
180
185
186 return ret;
187}
188
189static DWORD WINAPI d3d8_texture_2d_GetPriority(IDirect3DTexture8 *iface)
190{
192 const struct wined3d_resource *resource;
193 DWORD ret;
194
195 TRACE("iface %p.\n", iface);
196
201
202 return ret;
203}
204
205static void WINAPI d3d8_texture_2d_PreLoad(IDirect3DTexture8 *iface)
206{
208
209 TRACE("iface %p.\n", iface);
210
212}
213
214static D3DRESOURCETYPE WINAPI d3d8_texture_2d_GetType(IDirect3DTexture8 *iface)
215{
216 TRACE("iface %p.\n", iface);
217
218 return D3DRTYPE_TEXTURE;
219}
220
221static DWORD WINAPI d3d8_texture_2d_SetLOD(IDirect3DTexture8 *iface, DWORD lod)
222{
224 DWORD ret;
225
226 TRACE("iface %p, lod %lu.\n", iface, lod);
227
229 ret = wined3d_stateblock_set_texture_lod(texture->parent_device->state,
232
233 return ret;
234}
235
236static DWORD WINAPI d3d8_texture_2d_GetLOD(IDirect3DTexture8 *iface)
237{
239 DWORD ret;
240
241 TRACE("iface %p.\n", iface);
242
246
247 return ret;
248}
249
250static DWORD WINAPI d3d8_texture_2d_GetLevelCount(IDirect3DTexture8 *iface)
251{
253 DWORD ret;
254
255 TRACE("iface %p.\n", iface);
256
258 ret = wined3d_texture_get_level_count(texture->wined3d_texture);
260
261 return ret;
262}
263
265{
267 struct wined3d_sub_resource_desc wined3d_desc;
268 HRESULT hr;
269
270 TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
271
273 if (SUCCEEDED(hr = wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, level, &wined3d_desc)))
274 {
275 desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format);
276 desc->Type = D3DRTYPE_SURFACE;
277 desc->Usage = d3dusage_from_wined3dusage(wined3d_desc.usage, wined3d_desc.bind_flags);
278 desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage);
279 desc->Size = wined3d_desc.size;
280 desc->MultiSampleType = d3dmultisample_type_from_wined3d(wined3d_desc.multisample_type);
281 desc->Width = wined3d_desc.width;
282 desc->Height = wined3d_desc.height;
283 }
285
286 return hr;
287}
288
289static HRESULT WINAPI d3d8_texture_2d_GetSurfaceLevel(IDirect3DTexture8 *iface,
290 UINT level, IDirect3DSurface8 **surface)
291{
293 struct d3d8_surface *surface_impl;
294
295 TRACE("iface %p, level %u, surface %p.\n", iface, level, surface);
296
298 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
299 {
301 return D3DERR_INVALIDCALL;
302 }
303
304 *surface = &surface_impl->IDirect3DSurface8_iface;
305 IDirect3DSurface8_AddRef(*surface);
307
308 return D3D_OK;
309}
310
311static HRESULT WINAPI d3d8_texture_2d_LockRect(IDirect3DTexture8 *iface, UINT level,
312 D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
313{
315 struct d3d8_surface *surface_impl;
316 HRESULT hr;
317
318 TRACE("iface %p, level %u, locked_rect %p, rect %p, flags %#lx.\n",
319 iface, level, locked_rect, rect, flags);
320
322 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
324 else
325 hr = IDirect3DSurface8_LockRect(&surface_impl->IDirect3DSurface8_iface, locked_rect, rect, flags);
327
328 return hr;
329}
330
331static HRESULT WINAPI d3d8_texture_2d_UnlockRect(IDirect3DTexture8 *iface, UINT level)
332{
334 struct d3d8_surface *surface_impl;
335 HRESULT hr;
336
337 TRACE("iface %p, level %u.\n", iface, level);
338
340 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
342 else
345
346 return hr;
347}
348
349static HRESULT WINAPI d3d8_texture_2d_AddDirtyRect(IDirect3DTexture8 *iface, const RECT *dirty_rect)
350{
352 HRESULT hr;
353
354 TRACE("iface %p, dirty_rect %s.\n",
355 iface, wine_dbgstr_rect(dirty_rect));
356
358 if (!dirty_rect)
359 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, 0, NULL);
360 else
361 {
362 struct wined3d_box dirty_region;
363
364 wined3d_box_set(&dirty_region, dirty_rect->left, dirty_rect->top, dirty_rect->right, dirty_rect->bottom, 0, 1);
365 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, 0, &dirty_region);
366 }
368
369 return hr;
370}
371
372static const IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl =
373{
374 /* IUnknown */
378 /* IDirect3DResource8 */
387 /* IDirect3dBaseTexture8 */
391 /* IDirect3DTexture8 */
397};
398
399static HRESULT WINAPI d3d8_texture_cube_QueryInterface(IDirect3DCubeTexture8 *iface, REFIID riid, void **out)
400{
401 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
402
403 if (IsEqualGUID(riid, &IID_IDirect3DCubeTexture8)
404 || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)
405 || IsEqualGUID(riid, &IID_IDirect3DResource8)
407 {
409 *out = iface;
410 return S_OK;
411 }
412
413 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
414
415 *out = NULL;
416 return E_NOINTERFACE;
417}
418
419static ULONG WINAPI d3d8_texture_cube_AddRef(IDirect3DCubeTexture8 *iface)
420{
422
424}
425
426static ULONG WINAPI d3d8_texture_cube_Release(IDirect3DCubeTexture8 *iface)
427{
429
431}
432
433static HRESULT WINAPI d3d8_texture_cube_GetDevice(IDirect3DCubeTexture8 *iface, IDirect3DDevice8 **device)
434{
436
437 TRACE("iface %p, device %p.\n", iface, device);
438
439 *device = &texture->parent_device->IDirect3DDevice8_iface;
441
442 TRACE("Returning device %p.\n", *device);
443
444 return D3D_OK;
445}
446
447static HRESULT WINAPI d3d8_texture_cube_SetPrivateData(IDirect3DCubeTexture8 *iface,
448 REFGUID guid, const void *data, DWORD data_size, DWORD flags)
449{
451 TRACE("iface %p, guid %s, data %p, data_size %lu, flags %#lx.\n",
452 iface, debugstr_guid(guid), data, data_size, flags);
453
454 return d3d8_resource_set_private_data(&texture->resource, guid, data, data_size, flags);
455}
456
457static HRESULT WINAPI d3d8_texture_cube_GetPrivateData(IDirect3DCubeTexture8 *iface,
458 REFGUID guid, void *data, DWORD *data_size)
459{
461 TRACE("iface %p, guid %s, data %p, data_size %p.\n",
462 iface, debugstr_guid(guid), data, data_size);
463
464 return d3d8_resource_get_private_data(&texture->resource, guid, data, data_size);
465}
466
467static HRESULT WINAPI d3d8_texture_cube_FreePrivateData(IDirect3DCubeTexture8 *iface, REFGUID guid)
468{
470 TRACE("iface %p, guid %s.\n", iface, debugstr_guid(guid));
471
472 return d3d8_resource_free_private_data(&texture->resource, guid);
473}
474
475static DWORD WINAPI d3d8_texture_cube_SetPriority(IDirect3DCubeTexture8 *iface, DWORD priority)
476{
479 DWORD ret;
480
481 TRACE("iface %p, priority %lu.\n", iface, priority);
482
487
488 return ret;
489}
490
491static DWORD WINAPI d3d8_texture_cube_GetPriority(IDirect3DCubeTexture8 *iface)
492{
494 const struct wined3d_resource *resource;
495 DWORD ret;
496
497 TRACE("iface %p.\n", iface);
498
503
504 return ret;
505}
506
507static void WINAPI d3d8_texture_cube_PreLoad(IDirect3DCubeTexture8 *iface)
508{
510
511 TRACE("iface %p.\n", iface);
512
514}
515
516static D3DRESOURCETYPE WINAPI d3d8_texture_cube_GetType(IDirect3DCubeTexture8 *iface)
517{
518 TRACE("iface %p.\n", iface);
519
521}
522
523static DWORD WINAPI d3d8_texture_cube_SetLOD(IDirect3DCubeTexture8 *iface, DWORD lod)
524{
526 DWORD ret;
527
528 TRACE("iface %p, lod %lu.\n", iface, lod);
529
531 ret = wined3d_stateblock_set_texture_lod(texture->parent_device->state,
534
535 return ret;
536}
537
538static DWORD WINAPI d3d8_texture_cube_GetLOD(IDirect3DCubeTexture8 *iface)
539{
541 DWORD ret;
542
543 TRACE("iface %p.\n", iface);
544
548
549 return ret;
550}
551
552static DWORD WINAPI d3d8_texture_cube_GetLevelCount(IDirect3DCubeTexture8 *iface)
553{
555 DWORD ret;
556
557 TRACE("iface %p.\n", iface);
558
560 ret = wined3d_texture_get_level_count(texture->wined3d_texture);
562
563 return ret;
564}
565
567{
569 struct wined3d_sub_resource_desc wined3d_desc;
570 HRESULT hr;
571
572 TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
573
575 if (level >= wined3d_texture_get_level_count(texture->wined3d_texture))
576 {
578 return D3DERR_INVALIDCALL;
579 }
580
581 if (SUCCEEDED(hr = wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, level, &wined3d_desc)))
582 {
583 desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format);
584 desc->Type = D3DRTYPE_SURFACE;
585 desc->Usage = d3dusage_from_wined3dusage(wined3d_desc.usage, wined3d_desc.bind_flags);
586 desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage);
587 desc->Size = wined3d_desc.size;
588 desc->MultiSampleType = d3dmultisample_type_from_wined3d(wined3d_desc.multisample_type);
589 desc->Width = wined3d_desc.width;
590 desc->Height = wined3d_desc.height;
591 }
593
594 return hr;
595}
596
597static HRESULT WINAPI d3d8_texture_cube_GetCubeMapSurface(IDirect3DCubeTexture8 *iface,
598 D3DCUBEMAP_FACES face, UINT level, IDirect3DSurface8 **surface)
599{
601 struct d3d8_surface *surface_impl;
603 DWORD level_count;
604
605 TRACE("iface %p, face %#x, level %u, surface %p.\n", iface, face, level, surface);
606
608 level_count = wined3d_texture_get_level_count(texture->wined3d_texture);
609 if (level >= level_count)
610 {
612 return D3DERR_INVALIDCALL;
613 }
614
615 sub_resource_idx = level_count * face + level;
616 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, sub_resource_idx)))
617 {
619 return D3DERR_INVALIDCALL;
620 }
621
622 *surface = &surface_impl->IDirect3DSurface8_iface;
623 IDirect3DSurface8_AddRef(*surface);
625
626 return D3D_OK;
627}
628
629static HRESULT WINAPI d3d8_texture_cube_LockRect(IDirect3DCubeTexture8 *iface,
630 D3DCUBEMAP_FACES face, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect,
631 DWORD flags)
632{
634 struct d3d8_surface *surface_impl;
636 HRESULT hr;
637
638 TRACE("iface %p, face %#x, level %u, locked_rect %p, rect %p, flags %#lx.\n",
639 iface, face, level, locked_rect, rect, flags);
640
643 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, sub_resource_idx)))
645 else
646 hr = IDirect3DSurface8_LockRect(&surface_impl->IDirect3DSurface8_iface, locked_rect, rect, flags);
648
649 return hr;
650}
651
652static HRESULT WINAPI d3d8_texture_cube_UnlockRect(IDirect3DCubeTexture8 *iface,
654{
656 struct d3d8_surface *surface_impl;
658 HRESULT hr;
659
660 TRACE("iface %p, face %#x, level %u.\n", iface, face, level);
661
664 if (!(surface_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, sub_resource_idx)))
666 else
669
670 return hr;
671}
672
673static HRESULT WINAPI d3d8_texture_cube_AddDirtyRect(IDirect3DCubeTexture8 *iface,
674 D3DCUBEMAP_FACES face, const RECT *dirty_rect)
675{
677 HRESULT hr;
678
679 TRACE("iface %p, face %#x, dirty_rect %s.\n",
680 iface, face, wine_dbgstr_rect(dirty_rect));
681
683 if (!dirty_rect)
685 else
686 {
687 struct wined3d_box dirty_region;
688
689 wined3d_box_set(&dirty_region, dirty_rect->left, dirty_rect->top, dirty_rect->right, dirty_rect->bottom, 0, 1);
690 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, face, &dirty_region);
691 }
693
694 return hr;
695}
696
697static const IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl =
698{
699 /* IUnknown */
703 /* IDirect3DResource8 */
712 /* IDirect3DBaseTexture8 */
716 /* IDirect3DCubeTexture8 */
722};
723
724static HRESULT WINAPI d3d8_texture_3d_QueryInterface(IDirect3DVolumeTexture8 *iface, REFIID riid, void **out)
725{
726 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
727
728 if (IsEqualGUID(riid, &IID_IDirect3DVolumeTexture8)
729 || IsEqualGUID(riid, &IID_IDirect3DBaseTexture8)
730 || IsEqualGUID(riid, &IID_IDirect3DResource8)
732 {
734 *out = iface;
735 return S_OK;
736 }
737
738 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
739
740 *out = NULL;
741 return E_NOINTERFACE;
742}
743
744static ULONG WINAPI d3d8_texture_3d_AddRef(IDirect3DVolumeTexture8 *iface)
745{
747
749}
750
751static ULONG WINAPI d3d8_texture_3d_Release(IDirect3DVolumeTexture8 *iface)
752{
754
756}
757
758static HRESULT WINAPI d3d8_texture_3d_GetDevice(IDirect3DVolumeTexture8 *iface, IDirect3DDevice8 **device)
759{
761
762 TRACE("iface %p, device %p.\n", iface, device);
763
764 *device = &texture->parent_device->IDirect3DDevice8_iface;
766
767 TRACE("Returning device %p.\n", *device);
768
769 return D3D_OK;
770}
771
772static HRESULT WINAPI d3d8_texture_3d_SetPrivateData(IDirect3DVolumeTexture8 *iface,
773 REFGUID guid, const void *data, DWORD data_size, DWORD flags)
774{
776 TRACE("iface %p, guid %s, data %p, data_size %lu, flags %#lx.\n",
777 iface, debugstr_guid(guid), data, data_size, flags);
778
779 return d3d8_resource_set_private_data(&texture->resource, guid, data, data_size, flags);
780}
781
782static HRESULT WINAPI d3d8_texture_3d_GetPrivateData(IDirect3DVolumeTexture8 *iface,
783 REFGUID guid, void *data, DWORD *data_size)
784{
786 TRACE("iface %p, guid %s, data %p, data_size %p.\n",
787 iface, debugstr_guid(guid), data, data_size);
788
789 return d3d8_resource_get_private_data(&texture->resource, guid, data, data_size);
790}
791
792static HRESULT WINAPI d3d8_texture_3d_FreePrivateData(IDirect3DVolumeTexture8 *iface, REFGUID guid)
793{
795 TRACE("iface %p, guid %s.\n", iface, debugstr_guid(guid));
796
797 return d3d8_resource_free_private_data(&texture->resource, guid);
798}
799
800static DWORD WINAPI d3d8_texture_3d_SetPriority(IDirect3DVolumeTexture8 *iface, DWORD priority)
801{
804 DWORD ret;
805
806 TRACE("iface %p, priority %lu.\n", iface, priority);
807
812
813 return ret;
814}
815
816static DWORD WINAPI d3d8_texture_3d_GetPriority(IDirect3DVolumeTexture8 *iface)
817{
819 const struct wined3d_resource *resource;
820 DWORD ret;
821
822 TRACE("iface %p.\n", iface);
823
828
829 return ret;
830}
831
832static void WINAPI d3d8_texture_3d_PreLoad(IDirect3DVolumeTexture8 *iface)
833{
835
836 TRACE("iface %p.\n", iface);
837
839}
840
841static D3DRESOURCETYPE WINAPI d3d8_texture_3d_GetType(IDirect3DVolumeTexture8 *iface)
842{
843 TRACE("iface %p.\n", iface);
844
846}
847
848static DWORD WINAPI d3d8_texture_3d_SetLOD(IDirect3DVolumeTexture8 *iface, DWORD lod)
849{
851 DWORD ret;
852
853 TRACE("iface %p, lod %lu.\n", iface, lod);
854
856 ret = wined3d_stateblock_set_texture_lod(texture->parent_device->state,
859
860 return ret;
861}
862
863static DWORD WINAPI d3d8_texture_3d_GetLOD(IDirect3DVolumeTexture8 *iface)
864{
866 DWORD ret;
867
868 TRACE("iface %p.\n", iface);
869
873
874 return ret;
875}
876
877static DWORD WINAPI d3d8_texture_3d_GetLevelCount(IDirect3DVolumeTexture8 *iface)
878{
880 DWORD ret;
881
882 TRACE("iface %p.\n", iface);
883
885 ret = wined3d_texture_get_level_count(texture->wined3d_texture);
887
888 return ret;
889}
890
891static HRESULT WINAPI d3d8_texture_3d_GetLevelDesc(IDirect3DVolumeTexture8 *iface, UINT level, D3DVOLUME_DESC *desc)
892{
894 struct wined3d_sub_resource_desc wined3d_desc;
895 HRESULT hr;
896
897 TRACE("iface %p, level %u, desc %p.\n", iface, level, desc);
898
900 if (SUCCEEDED(hr = wined3d_texture_get_sub_resource_desc(texture->wined3d_texture, level, &wined3d_desc)))
901 {
902 desc->Format = d3dformat_from_wined3dformat(wined3d_desc.format);
903 desc->Type = D3DRTYPE_VOLUME;
904 desc->Usage = d3dusage_from_wined3dusage(wined3d_desc.usage, wined3d_desc.bind_flags);
905 desc->Pool = d3dpool_from_wined3daccess(wined3d_desc.access, wined3d_desc.usage);
906 desc->Size = wined3d_desc.size;
907 desc->Width = wined3d_desc.width;
908 desc->Height = wined3d_desc.height;
909 desc->Depth = wined3d_desc.depth;
910 }
912
913 return hr;
914}
915
916static HRESULT WINAPI d3d8_texture_3d_GetVolumeLevel(IDirect3DVolumeTexture8 *iface,
917 UINT level, IDirect3DVolume8 **volume)
918{
920 struct d3d8_volume *volume_impl;
921
922 TRACE("iface %p, level %u, volume %p.\n", iface, level, volume);
923
925 if (!(volume_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
926 {
928 return D3DERR_INVALIDCALL;
929 }
930
931 *volume = &volume_impl->IDirect3DVolume8_iface;
934
935 return D3D_OK;
936}
937
938static HRESULT WINAPI d3d8_texture_3d_LockBox(IDirect3DVolumeTexture8 *iface,
939 UINT level, D3DLOCKED_BOX *locked_box, const D3DBOX *box, DWORD flags)
940{
942 struct d3d8_volume *volume_impl;
943 HRESULT hr;
944
945 TRACE("iface %p, level %u, locked_box %p, box %p, flags %#lx.\n",
946 iface, level, locked_box, box, flags);
947
949 if (!(volume_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
951 else
952 hr = IDirect3DVolume8_LockBox(&volume_impl->IDirect3DVolume8_iface, locked_box, box, flags);
954
955 return hr;
956}
957
958static HRESULT WINAPI d3d8_texture_3d_UnlockBox(IDirect3DVolumeTexture8 *iface, UINT level)
959{
961 struct d3d8_volume *volume_impl;
962 HRESULT hr;
963
964 TRACE("iface %p, level %u.\n", iface, level);
965
967 if (!(volume_impl = wined3d_texture_get_sub_resource_parent(texture->wined3d_texture, level)))
969 else
972
973 return hr;
974}
975
976static HRESULT WINAPI d3d8_texture_3d_AddDirtyBox(IDirect3DVolumeTexture8 *iface, const D3DBOX *dirty_box)
977{
979 HRESULT hr;
980
981 TRACE("iface %p, dirty_box %p.\n", iface, dirty_box);
982
984 hr = wined3d_texture_add_dirty_region(texture->wined3d_texture, 0, (const struct wined3d_box *)dirty_box);
986
987 return hr;
988}
989
990static const IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl =
991{
992 /* IUnknown */
996 /* IDirect3DResource8 */
1005 /* IDirect3DBaseTexture8 */
1009 /* IDirect3DVolumeTexture8 */
1015};
1016
1017struct d3d8_texture *unsafe_impl_from_IDirect3DBaseTexture8(IDirect3DBaseTexture8 *iface)
1018{
1019 if (!iface)
1020 return NULL;
1021
1022 /* SetTexture() in particular doesn't do a lot of validation on the pointer
1023 * that gets passed in, and passing an invalid pointer works as long as the
1024 * application doesn't try to actually render anything with it, so we print
1025 * a WARN and return NULL instead of having the usual assert() here.
1026 * One application affected by this is Fishdom 2. */
1027 if (iface->lpVtbl != (const IDirect3DBaseTexture8Vtbl *)&Direct3DTexture8_Vtbl
1028 && iface->lpVtbl != (const IDirect3DBaseTexture8Vtbl *)&Direct3DCubeTexture8_Vtbl
1029 && iface->lpVtbl != (const IDirect3DBaseTexture8Vtbl *)&Direct3DVolumeTexture8_Vtbl)
1030 {
1031 WARN("%p is not a valid IDirect3DBaseTexture8 interface.\n", iface);
1032 return NULL;
1033 }
1034
1036}
1037
1039{
1040 struct d3d8_texture *texture = parent;
1041
1042 /* If the texture was managed, release the sysmem copy now. */
1043 if (texture->draw_texture)
1044 wined3d_texture_decref(texture->wined3d_texture);
1045 d3d8_resource_cleanup(&texture->resource);
1046 free(texture);
1047}
1048
1050{
1052};
1053
1055 const struct wined3d_resource_desc *desc, D3DPOOL pool, unsigned int layer_count, unsigned int level_count)
1056{
1057 unsigned int flags = 0;
1058 HRESULT hr;
1059
1060 d3d8_resource_init(&texture->resource);
1061 list_init(&texture->rtv_list);
1062
1063 if (!level_count)
1064 level_count = wined3d_log2i(max(max(desc->width, desc->height), desc->depth)) + 1;
1065
1068
1070
1071 if (pool == D3DPOOL_MANAGED)
1072 {
1073 struct wined3d_resource_desc managed_desc = *desc;
1074
1076 managed_desc.bind_flags = 0;
1077 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &managed_desc, layer_count, level_count, flags,
1078 NULL, texture, &d3d8_null_wined3d_parent_ops, &texture->wined3d_texture)))
1079 {
1081 WARN("Failed to create sysmem texture, hr %#lx.\n", hr);
1082 return hr;
1083 }
1084
1085 managed_desc.access = WINED3D_RESOURCE_ACCESS_GPU;
1086 managed_desc.bind_flags = desc->bind_flags;
1087 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &managed_desc, layer_count, level_count, 0,
1089 {
1090 wined3d_texture_decref(texture->wined3d_texture);
1092 WARN("Failed to create draw texture, hr %#lx.\n", hr);
1093 return hr;
1094 }
1095 }
1096 else
1097 {
1098 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, desc, layer_count, level_count, flags,
1099 NULL, texture, &d3d8_texture_wined3d_parent_ops, &texture->wined3d_texture)))
1100 {
1102 WARN("Failed to create wined3d texture, hr %#lx.\n", hr);
1103 return hr;
1104 }
1105 }
1107
1108 texture->parent_device = device;
1109 IDirect3DDevice8_AddRef(&texture->parent_device->IDirect3DDevice8_iface);
1110
1111 return D3D_OK;
1112}
1113
1115 unsigned int height, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
1116{
1118
1119 desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
1121 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1122 desc.multisample_quality = 0;
1126 desc.width = width;
1127 desc.height = height;
1128 desc.depth = 1;
1129 desc.size = 0;
1130
1132 {
1133 WARN("Texture can't be created with the D3DUSAGE_WRITEONLY flag, returning D3DERR_INVALIDCALL.\n");
1134 return D3DERR_INVALIDCALL;
1135 }
1136
1137 texture->IDirect3DBaseTexture8_iface.lpVtbl = (const IDirect3DBaseTexture8Vtbl *)&Direct3DTexture8_Vtbl;
1138 return d3d8_texture_init(texture, device, &desc, pool, 1, level_count);
1139}
1140
1142 unsigned int edge_length, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
1143{
1145
1146 desc.resource_type = WINED3D_RTYPE_TEXTURE_2D;
1148 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1149 desc.multisample_quality = 0;
1153 desc.width = edge_length;
1154 desc.height = edge_length;
1155 desc.depth = 1;
1156 desc.size = 0;
1157
1159 {
1160 WARN("Texture can't be created with the D3DUSAGE_WRITEONLY flag, returning D3DERR_INVALIDCALL.\n");
1161 return D3DERR_INVALIDCALL;
1162 }
1163
1164 texture->IDirect3DBaseTexture8_iface.lpVtbl = (const IDirect3DBaseTexture8Vtbl *)&Direct3DCubeTexture8_Vtbl;
1165 return d3d8_texture_init(texture, device, &desc, pool, 6, level_count);
1166}
1167
1169 unsigned int height, unsigned int depth, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
1170{
1172
1173 /* In d3d8, 3D textures can't be used as rendertarget or depth/stencil buffer. */
1175 return D3DERR_INVALIDCALL;
1176
1177 desc.resource_type = WINED3D_RTYPE_TEXTURE_3D;
1179 desc.multisample_type = WINED3D_MULTISAMPLE_NONE;
1180 desc.multisample_quality = 0;
1184 desc.width = width;
1185 desc.height = height;
1186 desc.depth = depth;
1187 desc.size = 0;
1188
1190 {
1191 WARN("Texture can't be created with the D3DUSAGE_WRITEONLY flags, returning D3DERR_INVALIDCALL.\n");
1192 return D3DERR_INVALIDCALL;
1193 }
1194
1195 texture->IDirect3DBaseTexture8_iface.lpVtbl = (const IDirect3DBaseTexture8Vtbl *)&Direct3DVolumeTexture8_Vtbl;
1196 return d3d8_texture_init(texture, device, &desc, pool, 1, level_count);
1197}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
static const char * wine_dbgstr_rect(const RECT *prc)
Definition: atltest.h:160
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
static void list_init(struct list_entry *head)
Definition: list.h:51
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
RECT rect
Definition: combotst.c:67
#define D3DERR_INVALIDCALL
Definition: d3d10_private.h:42
HRESULT d3d8_resource_get_private_data(struct d3d8_resource *resource, const GUID *guid, void *data, DWORD *data_size)
Definition: d3d8_main.c:172
void d3d8_resource_cleanup(struct d3d8_resource *resource)
Definition: d3d8_main.c:149
void d3d8_resource_init(struct d3d8_resource *resource)
Definition: d3d8_main.c:210
HRESULT d3d8_resource_set_private_data(struct d3d8_resource *resource, const GUID *guid, const void *data, DWORD data_size, DWORD flags)
Definition: d3d8_main.c:216
HRESULT d3d8_resource_free_private_data(struct d3d8_resource *resource, const GUID *guid)
Definition: d3d8_main.c:154
static DWORD d3dusage_from_wined3dusage(unsigned int wined3d_usage, unsigned int bind_flags)
Definition: d3d8_private.h:305
static unsigned int wined3d_bind_flags_from_d3d8_usage(DWORD usage)
Definition: d3d8_private.h:375
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 unsigned int wined3d_usage_from_d3d(D3DPOOL pool, DWORD usage)
Definition: d3d8_private.h:365
static struct wined3d_texture * d3d8_texture_get_draw_texture(struct d3d8_texture *texture)
Definition: d3d8_private.h:257
const struct wined3d_parent_ops d3d8_null_wined3d_parent_ops
Definition: device.c:28
static unsigned int wined3daccess_from_d3dpool(D3DPOOL pool, unsigned int usage)
Definition: d3d8_private.h:341
static D3DPOOL d3dpool_from_wined3daccess(unsigned int access, unsigned int usage)
Definition: d3d8_private.h:315
enum wined3d_format_id wined3dformat_from_d3dformat(D3DFORMAT format)
Definition: device.c:84
enum _D3DRESOURCETYPE D3DRESOURCETYPE
#define D3DUSAGE_WRITEONLY
Definition: d3d8types.h:93
@ D3DRTYPE_TEXTURE
Definition: d3d8types.h:812
@ D3DRTYPE_VOLUMETEXTURE
Definition: d3d8types.h:813
@ D3DRTYPE_CUBETEXTURE
Definition: d3d8types.h:814
@ D3DRTYPE_VOLUME
Definition: d3d8types.h:811
@ D3DRTYPE_SURFACE
Definition: d3d8types.h:810
enum _D3DPOOL D3DPOOL
#define D3DUSAGE_RENDERTARGET
Definition: d3d8types.h:91
@ D3DPOOL_SYSTEMMEM
Definition: d3d8types.h:711
@ D3DPOOL_MANAGED
Definition: d3d8types.h:710
enum _D3DFORMAT D3DFORMAT
enum _D3DCUBEMAP_FACES D3DCUBEMAP_FACES
#define D3DUSAGE_DEPTHSTENCIL
Definition: d3d8types.h:92
#define D3D_OK
Definition: d3d.h:106
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
static void d3d8_texture_preload(struct d3d8_texture *texture)
Definition: texture.c:71
static HRESULT WINAPI d3d8_texture_2d_GetPrivateData(IDirect3DTexture8 *iface, REFGUID guid, void *data, DWORD *data_size)
Definition: texture.c:155
static HRESULT WINAPI d3d8_texture_2d_QueryInterface(IDirect3DTexture8 *iface, REFIID riid, void **out)
Definition: texture.c:97
static HRESULT WINAPI d3d8_texture_2d_SetPrivateData(IDirect3DTexture8 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
Definition: texture.c:145
static HRESULT WINAPI d3d8_texture_cube_GetCubeMapSurface(IDirect3DCubeTexture8 *iface, D3DCUBEMAP_FACES face, UINT level, IDirect3DSurface8 **surface)
Definition: texture.c:597
struct d3d8_texture * unsafe_impl_from_IDirect3DBaseTexture8(IDirect3DBaseTexture8 *iface)
Definition: texture.c:1017
static HRESULT WINAPI d3d8_texture_2d_GetSurfaceLevel(IDirect3DTexture8 *iface, UINT level, IDirect3DSurface8 **surface)
Definition: texture.c:289
static DWORD WINAPI d3d8_texture_cube_GetLOD(IDirect3DCubeTexture8 *iface)
Definition: texture.c:538
static HRESULT WINAPI d3d8_texture_cube_UnlockRect(IDirect3DCubeTexture8 *iface, D3DCUBEMAP_FACES face, UINT level)
Definition: texture.c:652
static ULONG WINAPI d3d8_texture_3d_Release(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:751
static DWORD WINAPI d3d8_texture_3d_SetPriority(IDirect3DVolumeTexture8 *iface, DWORD priority)
Definition: texture.c:800
static void WINAPI d3d8_texture_3d_PreLoad(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:832
static HRESULT WINAPI d3d8_texture_cube_AddDirtyRect(IDirect3DCubeTexture8 *iface, D3DCUBEMAP_FACES face, const RECT *dirty_rect)
Definition: texture.c:673
static HRESULT d3d8_texture_init(struct d3d8_texture *texture, struct d3d8_device *device, const struct wined3d_resource_desc *desc, D3DPOOL pool, unsigned int layer_count, unsigned int level_count)
Definition: texture.c:1054
static HRESULT WINAPI d3d8_texture_3d_GetDevice(IDirect3DVolumeTexture8 *iface, IDirect3DDevice8 **device)
Definition: texture.c:758
static HRESULT WINAPI d3d8_texture_cube_LockRect(IDirect3DCubeTexture8 *iface, D3DCUBEMAP_FACES face, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
Definition: texture.c:629
static HRESULT WINAPI d3d8_texture_3d_UnlockBox(IDirect3DVolumeTexture8 *iface, UINT level)
Definition: texture.c:958
static HRESULT WINAPI d3d8_texture_3d_GetVolumeLevel(IDirect3DVolumeTexture8 *iface, UINT level, IDirect3DVolume8 **volume)
Definition: texture.c:916
static HRESULT WINAPI d3d8_texture_2d_GetDevice(IDirect3DTexture8 *iface, IDirect3DDevice8 **device)
Definition: texture.c:131
static struct d3d8_texture * impl_from_IDirect3DVolumeTexture8(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:92
static HRESULT WINAPI d3d8_texture_2d_AddDirtyRect(IDirect3DTexture8 *iface, const RECT *dirty_rect)
Definition: texture.c:349
static HRESULT WINAPI d3d8_texture_3d_GetLevelDesc(IDirect3DVolumeTexture8 *iface, UINT level, D3DVOLUME_DESC *desc)
Definition: texture.c:891
static DWORD WINAPI d3d8_texture_2d_GetPriority(IDirect3DTexture8 *iface)
Definition: texture.c:189
static void WINAPI d3d8_texture_cube_PreLoad(IDirect3DCubeTexture8 *iface)
Definition: texture.c:507
static DWORD WINAPI d3d8_texture_3d_GetLevelCount(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:877
static DWORD WINAPI d3d8_texture_3d_SetLOD(IDirect3DVolumeTexture8 *iface, DWORD lod)
Definition: texture.c:848
static D3DRESOURCETYPE WINAPI d3d8_texture_3d_GetType(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:841
static ULONG WINAPI d3d8_texture_2d_Release(IDirect3DTexture8 *iface)
Definition: texture.c:124
static DWORD WINAPI d3d8_texture_2d_SetPriority(IDirect3DTexture8 *iface, DWORD priority)
Definition: texture.c:173
static HRESULT WINAPI d3d8_texture_3d_QueryInterface(IDirect3DVolumeTexture8 *iface, REFIID riid, void **out)
Definition: texture.c:724
static HRESULT WINAPI d3d8_texture_cube_GetPrivateData(IDirect3DCubeTexture8 *iface, REFGUID guid, void *data, DWORD *data_size)
Definition: texture.c:457
static ULONG WINAPI d3d8_texture_2d_AddRef(IDirect3DTexture8 *iface)
Definition: texture.c:117
HRESULT d3d8_texture_cube_init(struct d3d8_texture *texture, struct d3d8_device *device, unsigned int edge_length, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
Definition: texture.c:1141
static const IDirect3DCubeTexture8Vtbl Direct3DCubeTexture8_Vtbl
Definition: texture.c:697
static void WINAPI d3d8_texture_2d_PreLoad(IDirect3DTexture8 *iface)
Definition: texture.c:205
static const IDirect3DVolumeTexture8Vtbl Direct3DVolumeTexture8_Vtbl
Definition: texture.c:990
static HRESULT WINAPI d3d8_texture_3d_FreePrivateData(IDirect3DVolumeTexture8 *iface, REFGUID guid)
Definition: texture.c:792
static ULONG WINAPI d3d8_texture_cube_Release(IDirect3DCubeTexture8 *iface)
Definition: texture.c:426
static struct d3d8_texture * impl_from_IDirect3DCubeTexture8(IDirect3DCubeTexture8 *iface)
Definition: texture.c:87
static ULONG WINAPI d3d8_texture_cube_AddRef(IDirect3DCubeTexture8 *iface)
Definition: texture.c:419
static DWORD WINAPI d3d8_texture_2d_SetLOD(IDirect3DTexture8 *iface, DWORD lod)
Definition: texture.c:221
static DWORD WINAPI d3d8_texture_cube_GetLevelCount(IDirect3DCubeTexture8 *iface)
Definition: texture.c:552
static HRESULT WINAPI d3d8_texture_cube_FreePrivateData(IDirect3DCubeTexture8 *iface, REFGUID guid)
Definition: texture.c:467
static HRESULT WINAPI d3d8_texture_2d_UnlockRect(IDirect3DTexture8 *iface, UINT level)
Definition: texture.c:331
static DWORD WINAPI d3d8_texture_2d_GetLOD(IDirect3DTexture8 *iface)
Definition: texture.c:236
static struct d3d8_texture * impl_from_IDirect3DTexture8(IDirect3DTexture8 *iface)
Definition: texture.c:82
static DWORD WINAPI d3d8_texture_3d_GetPriority(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:816
HRESULT d3d8_texture_2d_init(struct d3d8_texture *texture, struct d3d8_device *device, unsigned int width, unsigned int height, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
Definition: texture.c:1114
static const struct wined3d_parent_ops d3d8_texture_wined3d_parent_ops
Definition: texture.c:1049
static DWORD WINAPI d3d8_texture_cube_SetPriority(IDirect3DCubeTexture8 *iface, DWORD priority)
Definition: texture.c:475
static HRESULT WINAPI d3d8_texture_cube_GetDevice(IDirect3DCubeTexture8 *iface, IDirect3DDevice8 **device)
Definition: texture.c:433
static HRESULT WINAPI d3d8_texture_3d_GetPrivateData(IDirect3DVolumeTexture8 *iface, REFGUID guid, void *data, DWORD *data_size)
Definition: texture.c:782
static DWORD WINAPI d3d8_texture_cube_GetPriority(IDirect3DCubeTexture8 *iface)
Definition: texture.c:491
static HRESULT WINAPI d3d8_texture_cube_GetLevelDesc(IDirect3DCubeTexture8 *iface, UINT level, D3DSURFACE_DESC *desc)
Definition: texture.c:566
static HRESULT WINAPI d3d8_texture_2d_FreePrivateData(IDirect3DTexture8 *iface, REFGUID guid)
Definition: texture.c:165
static D3DRESOURCETYPE WINAPI d3d8_texture_2d_GetType(IDirect3DTexture8 *iface)
Definition: texture.c:214
static DWORD WINAPI d3d8_texture_2d_GetLevelCount(IDirect3DTexture8 *iface)
Definition: texture.c:250
static DWORD WINAPI d3d8_texture_3d_GetLOD(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:863
static HRESULT WINAPI d3d8_texture_2d_GetLevelDesc(IDirect3DTexture8 *iface, UINT level, D3DSURFACE_DESC *desc)
Definition: texture.c:264
static HRESULT WINAPI d3d8_texture_3d_SetPrivateData(IDirect3DVolumeTexture8 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
Definition: texture.c:772
static ULONG d3d8_texture_decref(struct d3d8_texture *texture)
Definition: texture.c:46
static const IDirect3DTexture8Vtbl Direct3DTexture8_Vtbl
Definition: texture.c:372
static ULONG d3d8_texture_incref(struct d3d8_texture *texture)
Definition: texture.c:23
static HRESULT WINAPI d3d8_texture_cube_SetPrivateData(IDirect3DCubeTexture8 *iface, REFGUID guid, const void *data, DWORD data_size, DWORD flags)
Definition: texture.c:447
static HRESULT WINAPI d3d8_texture_3d_LockBox(IDirect3DVolumeTexture8 *iface, UINT level, D3DLOCKED_BOX *locked_box, const D3DBOX *box, DWORD flags)
Definition: texture.c:938
static ULONG WINAPI d3d8_texture_3d_AddRef(IDirect3DVolumeTexture8 *iface)
Definition: texture.c:744
static HRESULT WINAPI d3d8_texture_3d_AddDirtyBox(IDirect3DVolumeTexture8 *iface, const D3DBOX *dirty_box)
Definition: texture.c:976
static void STDMETHODCALLTYPE d3d8_texture_wined3d_object_destroyed(void *parent)
Definition: texture.c:1038
HRESULT d3d8_texture_3d_init(struct d3d8_texture *texture, struct d3d8_device *device, unsigned int width, unsigned int height, unsigned int depth, unsigned int level_count, DWORD usage, D3DFORMAT format, D3DPOOL pool)
Definition: texture.c:1168
static HRESULT WINAPI d3d8_texture_cube_QueryInterface(IDirect3DCubeTexture8 *iface, REFIID riid, void **out)
Definition: texture.c:399
static D3DRESOURCETYPE WINAPI d3d8_texture_cube_GetType(IDirect3DCubeTexture8 *iface)
Definition: texture.c:516
static HRESULT WINAPI d3d8_texture_2d_LockRect(IDirect3DTexture8 *iface, UINT level, D3DLOCKED_RECT *locked_rect, const RECT *rect, DWORD flags)
Definition: texture.c:311
static DWORD WINAPI d3d8_texture_cube_SetLOD(IDirect3DCubeTexture8 *iface, DWORD lod)
Definition: texture.c:523
HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device, struct wined3d_texture *src_texture, struct wined3d_texture *dst_texture)
Definition: device.c:3808
unsigned int CDECL wined3d_resource_set_priority(struct wined3d_resource *resource, unsigned int priority)
Definition: resource.c:247
unsigned int CDECL wined3d_resource_get_priority(const struct wined3d_resource *resource)
Definition: resource.c:263
void CDECL wined3d_resource_preload(struct wined3d_resource *resource)
Definition: resource.c:311
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
unsigned int CDECL wined3d_texture_get_lod(const struct wined3d_texture *texture)
Definition: texture.c:1715
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
HRESULT CDECL wined3d_texture_add_dirty_region(struct wined3d_texture *texture, UINT layer, const struct wined3d_box *dirty_region)
Definition: texture.c:2132
void *CDECL wined3d_texture_get_sub_resource_parent(struct wined3d_texture *texture, unsigned int sub_resource_idx)
Definition: texture.c:4033
struct wined3d_resource *CDECL wined3d_texture_get_resource(struct wined3d_texture *texture)
Definition: texture.c:1649
ULONG CDECL wined3d_texture_decref(struct wined3d_texture *texture)
Definition: texture.c:1606
ULONG CDECL wined3d_texture_incref(struct wined3d_texture *texture)
Definition: texture.c:1516
UINT CDECL wined3d_texture_get_level_count(const struct wined3d_texture *texture)
Definition: texture.c:1746
ULONG CDECL wined3d_rendertarget_view_incref(struct wined3d_rendertarget_view *view)
Definition: view.c:365
ULONG CDECL wined3d_rendertarget_view_decref(struct wined3d_rendertarget_view *view)
Definition: view.c:379
GUID guid
Definition: version.c:147
return ret
Definition: mutex.c:147
r parent
Definition: btrfs.c:3010
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLint level
Definition: gl.h:1546
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLint GLint GLsizei width
Definition: gl.h:1546
GLenum GLuint texture
Definition: glext.h:6295
GLint lod
Definition: glext.h:7795
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
GLbitfield flags
Definition: glext.h:7161
GLsizeiptr const GLvoid GLenum usage
Definition: glext.h:5919
unsigned int UINT
Definition: sysinfo.c:13
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define resource
Definition: kernel32.h:9
#define debugstr_guid
Definition: kernel32.h:35
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
static int priority
Definition: timer.c:163
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define IDirect3DCubeTexture8_AddRef(p)
Definition: d3d8.h:612
#define IDirect3DSurface8_UnlockRect(p)
Definition: d3d8.h:315
#define IDirect3DVolumeTexture8_AddRef(p)
Definition: d3d8.h:776
#define IDirect3DVolume8_UnlockBox(p)
Definition: d3d8.h:228
#define IDirect3DSurface8_AddRef(p)
Definition: d3d8.h:305
#define IDirect3DTexture8_AddRef(p)
Definition: d3d8.h:694
#define IDirect3DSurface8_LockRect(p, a, b, c)
Definition: d3d8.h:314
#define IDirect3DVolume8_AddRef(p)
Definition: d3d8.h:218
#define IDirect3DDevice8_AddRef(p)
Definition: d3d8.h:943
#define IDirect3DDevice8_Release(p)
Definition: d3d8.h:944
#define IDirect3DVolume8_LockBox(p, a, b, c)
Definition: d3d8.h:227
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
#define TRACE(s)
Definition: solgame.cpp:4
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
Definition: scsiwmi.h:51
Definition: palette.c:466
IDirect3DDevice8 * parent_device
Definition: d3d8_private.h:196
unsigned int sub_resource_idx
Definition: d3d8_private.h:193
struct list rtv_entry
Definition: d3d8_private.h:194
struct wined3d_rendertarget_view * wined3d_rtv
Definition: d3d8_private.h:195
IDirect3DSurface8 IDirect3DSurface8_iface
Definition: d3d8_private.h:190
IDirect3DBaseTexture8 IDirect3DBaseTexture8_iface
Definition: d3d8_private.h:243
IDirect3DVolume8 IDirect3DVolume8_iface
Definition: d3d8_private.h:165
Definition: devices.h:37
Definition: send.c:48
unsigned int bind_flags
Definition: wined3d.h:1796
unsigned int access
Definition: wined3d.h:1797
enum wined3d_format_id format
Definition: wined3d.h:1806
unsigned int bind_flags
Definition: wined3d.h:1810
enum wined3d_multisample_type multisample_type
Definition: wined3d.h:1807
#define max(a, b)
Definition: svc.c:63
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define WINAPI
Definition: msvc.h:6
unsigned int CDECL wined3d_stateblock_set_texture_lod(struct wined3d_stateblock *stateblock, struct wined3d_texture *texture, unsigned int lod)
Definition: stateblock.c:4004
static unsigned int wined3d_log2i(unsigned int x)
Definition: wined3d.h:2952
@ WINED3D_MULTISAMPLE_NONE
Definition: wined3d.h:573
#define WINED3DUSAGE_LEGACY_CUBEMAP
Definition: wined3d.h:934
#define WINED3D_RESOURCE_ACCESS_GPU
Definition: wined3d.h:51
#define WINED3D_RESOURCE_ACCESS_CPU
Definition: wined3d.h:52
@ WINED3D_RTYPE_TEXTURE_2D
Definition: wined3d.h:720
@ WINED3D_RTYPE_TEXTURE_3D
Definition: wined3d.h:721
#define WINED3D_TEXTURE_CREATE_RECORD_DIRTY_REGIONS
Definition: wined3d.h:1567
#define WINED3D_BIND_SHADER_RESOURCE
Definition: wined3d.h:912
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
#define WINED3D_RESOURCE_ACCESS_MAP_R
Definition: wined3d.h:53
#define WINED3D_RESOURCE_ACCESS_MAP_W
Definition: wined3d.h:54
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539
#define E_NOINTERFACE
Definition: winerror.h:3479