ReactOS 0.4.17-dev-934-g091855f
texture.c
Go to the documentation of this file.
1/*
2 * Copyright 2009 Henri Verbeet for CodeWeavers
3 * Copyright 2015 Józef Kucia for CodeWeavers
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2.1 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
18 *
19 */
20
21#include "d3d11_private.h"
22
24
25/* ID3D11Texture1D methods */
26
27static inline struct d3d_texture1d *impl_from_ID3D11Texture1D(ID3D11Texture1D *iface)
28{
30}
31
32static HRESULT STDMETHODCALLTYPE d3d11_texture1d_QueryInterface(ID3D11Texture1D *iface, REFIID iid, void **out)
33{
35 HRESULT hr;
36
37 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
38
39 if (IsEqualGUID(iid, &IID_ID3D11Texture1D)
40 || IsEqualGUID(iid, &IID_ID3D11Resource)
41 || IsEqualGUID(iid, &IID_ID3D11DeviceChild)
42 || IsEqualGUID(iid, &IID_IUnknown))
43 {
44 *out = iface;
45 IUnknown_AddRef(iface);
46 return S_OK;
47 }
48
49 if (IsEqualGUID(iid, &IID_ID3D10Texture1D)
50 || IsEqualGUID(iid, &IID_ID3D10Resource)
51 || IsEqualGUID(iid, &IID_ID3D10DeviceChild))
52 {
53 *out = &texture->ID3D10Texture1D_iface;
54 IUnknown_AddRef((IUnknown *)*out);
55 return S_OK;
56 }
57
58 TRACE("Forwarding to dxgi resource.\n");
59
60 if (FAILED(hr = IUnknown_QueryInterface(texture->dxgi_resource, iid, out)))
61 {
62 WARN("%s not implemented, returning %#lx.\n", debugstr_guid(iid), hr);
63 *out = NULL;
64 }
65
66 return hr;
67}
68
69static ULONG STDMETHODCALLTYPE d3d11_texture1d_AddRef(ID3D11Texture1D *iface)
70{
73
74 TRACE("%p increasing refcount to %lu.\n", texture, refcount);
75
76 if (refcount == 1)
77 {
78 ID3D11Device2_AddRef(texture->device);
79 wined3d_texture_incref(texture->wined3d_texture);
80 }
81
82 return refcount;
83}
84
85static ULONG STDMETHODCALLTYPE d3d11_texture1d_Release(ID3D11Texture1D *iface)
86{
89
90 TRACE("%p decreasing refcount to %lu.\n", texture, refcount);
91
92 if (!refcount)
93 {
94 ID3D11Device2 *device = texture->device;
95 wined3d_texture_decref(texture->wined3d_texture);
96 /* Release the device last, it may cause the wined3d device to be
97 * destroyed. */
98 ID3D11Device2_Release(device);
99 }
100
101 return refcount;
102}
103
104static void STDMETHODCALLTYPE d3d11_texture1d_GetDevice(ID3D11Texture1D *iface, ID3D11Device **device)
105{
107
108 TRACE("iface %p, device %p.\n", iface, device);
109
110 *device = (ID3D11Device *)texture->device;
111 ID3D11Device_AddRef(*device);
112}
113
115 REFGUID guid, UINT *data_size, void *data)
116{
119 HRESULT hr;
120
121 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
122
123 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
124 {
125 hr = IDXGIResource_GetPrivateData(dxgi_resource, guid, data_size, data);
126 IDXGIResource_Release(dxgi_resource);
127 }
128
129 return hr;
130}
131
133 REFGUID guid, UINT data_size, const void *data)
134{
137 HRESULT hr;
138
139 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
140
141 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
142 {
143 hr = IDXGIResource_SetPrivateData(dxgi_resource, guid, data_size, data);
144 IDXGIResource_Release(dxgi_resource);
145 }
146
147 return hr;
148}
149
151 REFGUID guid, const IUnknown *data)
152{
155 HRESULT hr;
156
157 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
158
159 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
160 {
161 hr = IDXGIResource_SetPrivateDataInterface(dxgi_resource, guid, data);
162 IDXGIResource_Release(dxgi_resource);
163 }
164
165 return hr;
166}
167
168static void STDMETHODCALLTYPE d3d11_texture1d_GetType(ID3D11Texture1D *iface,
169 D3D11_RESOURCE_DIMENSION *resource_dimension)
170{
171 TRACE("iface %p, resource_dimension %p.\n", iface, resource_dimension);
172
173 *resource_dimension = D3D11_RESOURCE_DIMENSION_TEXTURE1D;
174}
175
176static void STDMETHODCALLTYPE d3d11_texture1d_SetEvictionPriority(ID3D11Texture1D *iface, UINT eviction_priority)
177{
178 FIXME("iface %p, eviction_priority %#x stub!\n", iface, eviction_priority);
179}
180
182{
183 FIXME("iface %p stub!\n", iface);
184
185 return 0;
186}
187
188static void STDMETHODCALLTYPE d3d11_texture1d_GetDesc(ID3D11Texture1D *iface, D3D11_TEXTURE1D_DESC *desc)
189{
191
192 TRACE("iface %p, desc %p.\n", iface, desc);
193
194 *desc = texture->desc;
195}
196
197static const struct ID3D11Texture1DVtbl d3d11_texture1d_vtbl =
198{
199 /* IUnknown methods */
203 /* ID3D11DeviceChild methods */
208 /* ID3D11Resource methods */
212 /* ID3D11Texture1D methods */
214};
215
216struct d3d_texture1d *unsafe_impl_from_ID3D11Texture1D(ID3D11Texture1D *iface)
217{
218 if (!iface)
219 return NULL;
220 assert(iface->lpVtbl == &d3d11_texture1d_vtbl);
222}
223
225{
227}
228
229/* IUnknown methods */
230
232{
234
235 TRACE("iface %p, iid %s, out %p.\n", iface, debugstr_guid(iid), out);
236
237 return d3d11_texture1d_QueryInterface(&texture->ID3D11Texture1D_iface, iid, out);
238}
239
241{
243
244 TRACE("iface %p.\n", iface);
245
246 return d3d11_texture1d_AddRef(&texture->ID3D11Texture1D_iface);
247}
248
250{
251 struct d3d_texture1d *texture = parent;
252
253 if (texture->dxgi_resource)
254 IUnknown_Release(texture->dxgi_resource);
255 free(texture);
256}
257
259{
261
262 TRACE("iface %p.\n", iface);
263
264 return d3d11_texture1d_Release(&texture->ID3D11Texture1D_iface);
265}
266
267/* ID3D10DeviceChild methods */
268
270{
272
273 TRACE("iface %p, device %p.\n", iface, device);
274
275 ID3D11Device2_QueryInterface(texture->device, &IID_ID3D10Device, (void **)device);
276}
277
279 REFGUID guid, UINT *data_size, void *data)
280{
282
283 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
284
285 return d3d11_texture1d_GetPrivateData(&texture->ID3D11Texture1D_iface, guid, data_size, data);
286}
287
289 REFGUID guid, UINT data_size, const void *data)
290{
292
293 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
294
295 return d3d11_texture1d_SetPrivateData(&texture->ID3D11Texture1D_iface, guid, data_size, data);
296}
297
299 REFGUID guid, const IUnknown *data)
300{
302
303 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
304
305 return d3d11_texture1d_SetPrivateDataInterface(&texture->ID3D11Texture1D_iface, guid, data);
306}
307
308/* ID3D10Resource methods */
309
311 D3D10_RESOURCE_DIMENSION *resource_dimension)
312{
313 TRACE("iface %p, resource_dimension %p\n", iface, resource_dimension);
314
315 *resource_dimension = D3D10_RESOURCE_DIMENSION_TEXTURE1D;
316}
317
319{
320 FIXME("iface %p, eviction_priority %u stub!\n", iface, eviction_priority);
321}
322
324{
325 FIXME("iface %p stub!\n", iface);
326
327 return 0;
328}
329
330/* ID3D10Texture1D methods */
331
333 D3D10_MAP map_type, UINT map_flags, void **data)
334{
337 HRESULT hr;
338
339 TRACE("iface %p, sub_resource_idx %u, map_type %u, map_flags %#x, data %p.\n",
340 iface, sub_resource_idx, map_type, map_flags, data);
341
342 if (map_flags)
343 FIXME("Ignoring map_flags %#x.\n", map_flags);
344
345 if (SUCCEEDED(hr = wined3d_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
347 {
349 }
350
351 return hr;
352}
353
354static void STDMETHODCALLTYPE d3d10_texture1d_Unmap(ID3D10Texture1D *iface, UINT sub_resource_idx)
355{
357
358 TRACE("iface %p, sub_resource_idx %u.\n", iface, sub_resource_idx);
359
360 wined3d_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
361}
362
364{
366 D3D11_TEXTURE1D_DESC d3d11_desc;
367
368 TRACE("iface %p, desc %p.\n", iface, desc);
369
370 d3d11_texture1d_GetDesc(&texture->ID3D11Texture1D_iface, &d3d11_desc);
371
372 desc->Width = d3d11_desc.Width;
373 desc->MipLevels = d3d11_desc.MipLevels;
374 desc->ArraySize = d3d11_desc.ArraySize;
375 desc->Format = d3d11_desc.Format;
376 desc->Usage = d3d10_usage_from_d3d11_usage(d3d11_desc.Usage);
377 desc->BindFlags = d3d10_bind_flags_from_d3d11_bind_flags(d3d11_desc.BindFlags);
378 desc->CPUAccessFlags = d3d10_cpu_access_flags_from_d3d11_cpu_access_flags(d3d11_desc.CPUAccessFlags);
379 desc->MiscFlags = d3d10_resource_misc_flags_from_d3d11_resource_misc_flags(d3d11_desc.MiscFlags);
380}
381
382static const struct ID3D10Texture1DVtbl d3d10_texture1d_vtbl =
383{
384 /* IUnknown methods */
388 /* ID3D10DeviceChild methods */
393 /* ID3D10Resource methods */
397 /* ID3D10Texture1D methods */
401};
402
404{
405 if (!iface)
406 return NULL;
407 assert(iface->lpVtbl == &d3d10_texture1d_vtbl);
409}
410
412{
414};
415
417 IUnknown *outer, BOOL needs_surface, IUnknown **dxgi_resource)
418{
419 IWineDXGIDevice *wine_device;
420 HRESULT hr;
421
422 if (FAILED(hr = IUnknown_QueryInterface(device, &IID_IWineDXGIDevice, (void **)&wine_device)))
423 {
424 ERR("Device should implement IWineDXGIDevice.\n");
425 return E_FAIL;
426 }
427
428 hr = IWineDXGIDevice_create_resource(wine_device, wined3d_resource, 0, NULL, outer,
429 needs_surface, (void **)dxgi_resource);
430 IWineDXGIDevice_Release(wine_device);
431 if (FAILED(hr))
432 {
433 ERR("Failed to create DXGI resource, returning %#.lx\n", hr);
435 }
436
437 return hr;
438}
439
440HRESULT d3d_texture1d_create(struct d3d_device *device, const D3D11_TEXTURE1D_DESC *desc,
441 const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture1d **out)
442{
443 struct wined3d_resource_desc wined3d_desc;
444 struct d3d_texture1d *texture;
445 unsigned int levels;
446 BOOL needs_surface;
447 DWORD flags = 0;
448 HRESULT hr;
449
450 if (!(texture = calloc(1, sizeof(*texture))))
451 return E_OUTOFMEMORY;
452
453 texture->ID3D11Texture1D_iface.lpVtbl = &d3d11_texture1d_vtbl;
454 texture->ID3D10Texture1D_iface.lpVtbl = &d3d10_texture1d_vtbl;
455 texture->refcount = 1;
456 texture->desc = *desc;
457 levels = desc->MipLevels ? desc->MipLevels : wined3d_log2i(desc->Width) + 1;
458 texture->desc.MipLevels = levels;
459
461 wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
463 wined3d_desc.multisample_quality = 0;
464 wined3d_desc.usage = wined3d_usage_from_d3d11(desc->Usage);
465 wined3d_desc.bind_flags = wined3d_bind_flags_from_d3d11(desc->BindFlags, desc->MiscFlags);
466 wined3d_desc.access = wined3d_access_from_d3d11(desc->Usage,
467 desc->Usage == D3D11_USAGE_DEFAULT ? 0 : desc->CPUAccessFlags);
468 wined3d_desc.width = desc->Width;
469 wined3d_desc.height = 1;
470 wined3d_desc.depth = 1;
471 wined3d_desc.size = 0;
472
477
479 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &wined3d_desc,
480 desc->ArraySize, levels, flags, (struct wined3d_sub_resource_data *)data,
481 texture, &d3d_texture1d_wined3d_parent_ops, &texture->wined3d_texture)))
482 {
483 WARN("Failed to create wined3d texture, hr %#lx.\n", hr);
484 free(texture);
488 return hr;
489 }
490
491 needs_surface = desc->MipLevels == 1 && desc->ArraySize == 1;
492 hr = d3d_device_create_dxgi_resource((IUnknown *)&device->ID3D10Device1_iface,
493 wined3d_texture_get_resource(texture->wined3d_texture), (IUnknown *)&texture->ID3D10Texture1D_iface,
494 needs_surface, &texture->dxgi_resource);
495 if (FAILED(hr))
496 {
497 ERR("Failed to create DXGI resource, returning %#.lx\n", hr);
498 wined3d_texture_decref(texture->wined3d_texture);
500 return hr;
501 }
503
504 ID3D11Device2_AddRef(texture->device = &device->ID3D11Device2_iface);
505
506 TRACE("Created texture %p.\n", texture);
507 *out = texture;
508
509 return S_OK;
510}
511
512/* ID3D11Texture2D methods */
513
514static HRESULT STDMETHODCALLTYPE d3d11_texture2d_QueryInterface(ID3D11Texture2D *iface, REFIID riid, void **object)
515{
517 HRESULT hr;
518
519 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
520
521 if (IsEqualGUID(riid, &IID_ID3D11Texture2D)
522 || IsEqualGUID(riid, &IID_ID3D11Resource)
523 || IsEqualGUID(riid, &IID_ID3D11DeviceChild)
525 {
526 *object = &texture->ID3D11Texture2D_iface;
527 IUnknown_AddRef((IUnknown *)*object);
528 return S_OK;
529 }
530 else if (IsEqualGUID(riid, &IID_ID3D10Texture2D)
531 || IsEqualGUID(riid, &IID_ID3D10Resource)
532 || IsEqualGUID(riid, &IID_ID3D10DeviceChild))
533 {
534 *object = &texture->ID3D10Texture2D_iface;
535 IUnknown_AddRef((IUnknown *)*object);
536 return S_OK;
537 }
538
539 TRACE("Forwarding to dxgi resource.\n");
540
541 if (FAILED(hr = IUnknown_QueryInterface(texture->dxgi_resource, riid, object)))
542 {
543 WARN("%s not implemented, returning %#lx.\n", debugstr_guid(riid), hr);
544 *object = NULL;
545 }
546
547 return hr;
548}
549
550static ULONG STDMETHODCALLTYPE d3d11_texture2d_AddRef(ID3D11Texture2D *iface)
551{
554
555 TRACE("%p increasing refcount to %lu.\n", texture, refcount);
556
557 if (refcount == 1)
558 {
559 ID3D11Device2_AddRef(texture->device);
560 wined3d_texture_incref(texture->wined3d_texture);
561 if (texture->swapchain)
563 }
564
565 return refcount;
566}
567
568static ULONG STDMETHODCALLTYPE d3d11_texture2d_Release(ID3D11Texture2D *iface)
569{
572
573 TRACE("%p decreasing refcount to %lu.\n", texture, refcount);
574
575 if (!refcount)
576 {
577 ID3D11Device2 *device = texture->device;
578 if (texture->swapchain)
580 /* Releasing the texture may free the d3d11 object, so do not access it
581 * after releasing the texture. */
582 wined3d_texture_decref(texture->wined3d_texture);
583 /* Release the device last, it may cause the wined3d device to be
584 * destroyed. */
585 ID3D11Device2_Release(device);
586 }
587
588 return refcount;
589}
590
591static void STDMETHODCALLTYPE d3d11_texture2d_GetDevice(ID3D11Texture2D *iface, ID3D11Device **device)
592{
594
595 TRACE("iface %p, device %p.\n", iface, device);
596
597 *device = (ID3D11Device *)texture->device;
598 ID3D11Device_AddRef(*device);
599}
600
602 REFGUID guid, UINT *data_size, void *data)
603{
606 HRESULT hr;
607
608 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
609
610 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
611 {
612 hr = IDXGIResource_GetPrivateData(dxgi_resource, guid, data_size, data);
613 IDXGIResource_Release(dxgi_resource);
614 }
615
616 return hr;
617}
618
620 REFGUID guid, UINT data_size, const void *data)
621{
624 HRESULT hr;
625
626 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
627
628 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
629 {
630 hr = IDXGIResource_SetPrivateData(dxgi_resource, guid, data_size, data);
631 IDXGIResource_Release(dxgi_resource);
632 }
633
634 return hr;
635}
636
638 REFGUID guid, const IUnknown *data)
639{
642 HRESULT hr;
643
644 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
645
646 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
647 {
648 hr = IDXGIResource_SetPrivateDataInterface(dxgi_resource, guid, data);
649 IDXGIResource_Release(dxgi_resource);
650 }
651
652 return hr;
653}
654
655static void STDMETHODCALLTYPE d3d11_texture2d_GetType(ID3D11Texture2D *iface,
656 D3D11_RESOURCE_DIMENSION *resource_dimension)
657{
658 TRACE("iface %p, resource_dimension %p.\n", iface, resource_dimension);
659
660 *resource_dimension = D3D11_RESOURCE_DIMENSION_TEXTURE2D;
661}
662
663static void STDMETHODCALLTYPE d3d11_texture2d_SetEvictionPriority(ID3D11Texture2D *iface, UINT eviction_priority)
664{
665 FIXME("iface %p, eviction_priority %#x stub!\n", iface, eviction_priority);
666}
667
669{
670 FIXME("iface %p stub!\n", iface);
671
672 return 0;
673}
674
675static void STDMETHODCALLTYPE d3d11_texture2d_GetDesc(ID3D11Texture2D *iface, D3D11_TEXTURE2D_DESC *desc)
676{
678 struct wined3d_resource_desc wined3d_desc;
679
680 TRACE("iface %p, desc %p.\n", iface, desc);
681
682 *desc = texture->desc;
683
685 wined3d_resource_get_desc(wined3d_texture_get_resource(texture->wined3d_texture), &wined3d_desc);
687
688 /* FIXME: Resizing swapchain buffers can cause these to change. We'd like
689 * to get everything from wined3d, but e.g. bind flags don't exist as such
690 * there (yet). */
691 desc->Width = wined3d_desc.width;
692 desc->Height = wined3d_desc.height;
693 desc->Format = dxgi_format_from_wined3dformat(wined3d_desc.format);
694 desc->SampleDesc.Count = wined3d_desc.multisample_type == WINED3D_MULTISAMPLE_NONE
695 ? 1 : wined3d_desc.multisample_type;
696 desc->SampleDesc.Quality = wined3d_desc.multisample_quality;
697}
698
699static const struct ID3D11Texture2DVtbl d3d11_texture2d_vtbl =
700{
701 /* IUnknown methods */
705 /* ID3D11DeviceChild methods */
710 /* ID3D11Resource methods */
714 /* ID3D11Texture2D methods */
716};
717
718struct d3d_texture2d *unsafe_impl_from_ID3D11Texture2D(ID3D11Texture2D *iface)
719{
720 if (!iface)
721 return NULL;
722 assert(iface->lpVtbl == &d3d11_texture2d_vtbl);
724}
725
726/* IUnknown methods */
727
729{
731}
732
734{
736
737 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
738
739 return d3d11_texture2d_QueryInterface(&texture->ID3D11Texture2D_iface, riid, object);
740}
741
743{
745
746 TRACE("iface %p.\n", iface);
747
748 return d3d11_texture2d_AddRef(&texture->ID3D11Texture2D_iface);
749}
750
752{
753 struct d3d_texture2d *texture = parent;
754
755 if (texture->dxgi_resource) IUnknown_Release(texture->dxgi_resource);
756 free(texture);
757}
758
760{
762
763 TRACE("iface %p.\n", iface);
764
765 return d3d11_texture2d_Release(&texture->ID3D11Texture2D_iface);
766}
767
768/* ID3D10DeviceChild methods */
769
771{
773
774 TRACE("iface %p, device %p.\n", iface, device);
775
776 ID3D11Device2_QueryInterface(texture->device, &IID_ID3D10Device, (void **)device);
777}
778
780 REFGUID guid, UINT *data_size, void *data)
781{
783
784 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
785
786 return d3d11_texture2d_GetPrivateData(&texture->ID3D11Texture2D_iface, guid, data_size, data);
787}
788
790 REFGUID guid, UINT data_size, const void *data)
791{
793
794 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
795
796 return d3d11_texture2d_SetPrivateData(&texture->ID3D11Texture2D_iface, guid, data_size, data);
797}
798
800 REFGUID guid, const IUnknown *data)
801{
803
804 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
805
806 return d3d11_texture2d_SetPrivateDataInterface(&texture->ID3D11Texture2D_iface, guid, data);
807}
808
809/* ID3D10Resource methods */
810
812 D3D10_RESOURCE_DIMENSION *resource_dimension)
813{
814 TRACE("iface %p, resource_dimension %p\n", iface, resource_dimension);
815
816 *resource_dimension = D3D10_RESOURCE_DIMENSION_TEXTURE2D;
817}
818
820{
821 FIXME("iface %p, eviction_priority %u stub!\n", iface, eviction_priority);
822}
823
825{
826 FIXME("iface %p stub!\n", iface);
827
828 return 0;
829}
830
831/* ID3D10Texture2D methods */
832
834 D3D10_MAP map_type, UINT map_flags, D3D10_MAPPED_TEXTURE2D *mapped_texture)
835{
838 HRESULT hr;
839
840 TRACE("iface %p, sub_resource_idx %u, map_type %u, map_flags %#x, mapped_texture %p.\n",
841 iface, sub_resource_idx, map_type, map_flags, mapped_texture);
842
843 if (map_flags)
844 FIXME("Ignoring map_flags %#x.\n", map_flags);
845
846 if (SUCCEEDED(hr = wined3d_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
848 {
849 mapped_texture->pData = wined3d_map_desc.data;
850 mapped_texture->RowPitch = wined3d_map_desc.row_pitch;
851 }
852
853 return hr;
854}
855
856static void STDMETHODCALLTYPE d3d10_texture2d_Unmap(ID3D10Texture2D *iface, UINT sub_resource_idx)
857{
859
860 TRACE("iface %p, sub_resource_idx %u.\n", iface, sub_resource_idx);
861
862 wined3d_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
863}
864
866{
868 D3D11_TEXTURE2D_DESC d3d11_desc;
869
870 TRACE("iface %p, desc %p\n", iface, desc);
871
872 d3d11_texture2d_GetDesc(&texture->ID3D11Texture2D_iface, &d3d11_desc);
873
874 desc->Width = d3d11_desc.Width;
875 desc->Height = d3d11_desc.Height;
876 desc->MipLevels = d3d11_desc.MipLevels;
877 desc->ArraySize = d3d11_desc.ArraySize;
878 desc->Format = d3d11_desc.Format;
879 desc->SampleDesc = d3d11_desc.SampleDesc;
880 desc->Usage = d3d10_usage_from_d3d11_usage(d3d11_desc.Usage);
881 desc->BindFlags = d3d10_bind_flags_from_d3d11_bind_flags(d3d11_desc.BindFlags);
882 desc->CPUAccessFlags = d3d10_cpu_access_flags_from_d3d11_cpu_access_flags(d3d11_desc.CPUAccessFlags);
883 desc->MiscFlags = d3d10_resource_misc_flags_from_d3d11_resource_misc_flags(d3d11_desc.MiscFlags);
884}
885
886static const struct ID3D10Texture2DVtbl d3d10_texture2d_vtbl =
887{
888 /* IUnknown methods */
892 /* ID3D10DeviceChild methods */
897 /* ID3D10Resource methods */
901 /* ID3D10Texture2D methods */
905};
906
908{
909 if (!iface)
910 return NULL;
911 assert(iface->lpVtbl == &d3d10_texture2d_vtbl);
913}
914
916{
918};
919
920static BOOL is_gdi_compatible_texture(const D3D11_TEXTURE2D_DESC *desc)
921{
922 if (!(desc->Format == DXGI_FORMAT_B8G8R8A8_UNORM
925 return FALSE;
926
927 if (desc->Usage != D3D11_USAGE_DEFAULT)
928 return FALSE;
929
930 return TRUE;
931}
932
933static BOOL validate_texture2d_desc(const D3D11_TEXTURE2D_DESC *desc, D3D_FEATURE_LEVEL feature_level)
934{
935 if (!validate_d3d11_resource_access_flags(D3D11_RESOURCE_DIMENSION_TEXTURE2D,
936 desc->Usage, desc->BindFlags, desc->CPUAccessFlags, feature_level))
937 return FALSE;
938
940 && desc->ArraySize < 6)
941 {
942 WARN("Invalid array size %u for cube texture.\n", desc->ArraySize);
943 return FALSE;
944 }
945
948 {
949 WARN("Incompatible description used to create GDI compatible texture.\n");
950 return FALSE;
951 }
952
954 && (~desc->BindFlags & (D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE)))
955 {
956 WARN("D3D11_RESOURCE_MISC_GENERATE_MIPS used without D3D11_BIND_RENDER_TARGET and "
957 "D3D11_BIND_SHADER_RESOURCE.\n");
958 return FALSE;
959 }
960
961 return TRUE;
962}
963
964HRESULT d3d_texture2d_create(struct d3d_device *device, const D3D11_TEXTURE2D_DESC *desc,
965 struct wined3d_texture *wined3d_texture, const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture2d **out)
966{
967 struct d3d_texture2d *texture;
968 BOOL needs_surface;
969 DWORD flags = 0;
970 HRESULT hr;
971
972 if (!validate_texture2d_desc(desc, device->state->feature_level))
973 {
974 WARN("Failed to validate texture desc.\n");
975 return E_INVALIDARG;
976 }
977
978 if (!(texture = calloc(1, sizeof(*texture))))
979 return E_OUTOFMEMORY;
980
981 texture->ID3D11Texture2D_iface.lpVtbl = &d3d11_texture2d_vtbl;
982 texture->ID3D10Texture2D_iface.lpVtbl = &d3d10_texture2d_vtbl;
983 texture->refcount = 1;
985 texture->desc = *desc;
986
987 if (wined3d_texture)
988 {
992 texture->wined3d_texture = wined3d_texture;
993
996 }
997 else
998 {
999 struct wined3d_resource_desc wined3d_desc;
1000 unsigned int levels;
1001
1003 wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
1004 wined3d_desc.multisample_type = desc->SampleDesc.Count > 1 ? desc->SampleDesc.Count : WINED3D_MULTISAMPLE_NONE;
1005 wined3d_desc.multisample_quality = desc->SampleDesc.Quality;
1006 wined3d_desc.usage = wined3d_usage_from_d3d11(desc->Usage);
1007 wined3d_desc.bind_flags = wined3d_bind_flags_from_d3d11(desc->BindFlags, desc->MiscFlags);
1008 wined3d_desc.access = wined3d_access_from_d3d11(desc->Usage,
1009 desc->Usage == D3D11_USAGE_DEFAULT ? 0 : desc->CPUAccessFlags);
1010 wined3d_desc.width = desc->Width;
1011 wined3d_desc.height = desc->Height;
1012 wined3d_desc.depth = 1;
1013 wined3d_desc.size = 0;
1014
1015 levels = desc->MipLevels ? desc->MipLevels : wined3d_log2i(max(desc->Width, desc->Height)) + 1;
1016
1019 if (desc->MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS)
1021
1022 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &wined3d_desc,
1023 desc->ArraySize, levels, flags, (struct wined3d_sub_resource_data *)data,
1024 texture, &d3d_texture2d_wined3d_parent_ops, &texture->wined3d_texture)))
1025 {
1026 WARN("Failed to create wined3d texture, hr %#lx.\n", hr);
1027 free(texture);
1030 hr = E_INVALIDARG;
1031 return hr;
1032 }
1033 texture->desc.MipLevels = levels;
1034 }
1035
1036 needs_surface = desc->MipLevels == 1 && desc->ArraySize == 1;
1037 hr = d3d_device_create_dxgi_resource((IUnknown *)&device->ID3D10Device1_iface,
1038 wined3d_texture_get_resource(texture->wined3d_texture), (IUnknown *)&texture->ID3D10Texture2D_iface,
1039 needs_surface, &texture->dxgi_resource);
1040 if (FAILED(hr))
1041 {
1042 ERR("Failed to create DXGI resource, returning %#.lx\n", hr);
1043 wined3d_texture_decref(texture->wined3d_texture);
1045 return hr;
1046 }
1048
1049 ID3D11Device2_AddRef(texture->device = &device->ID3D11Device2_iface);
1050
1051 TRACE("Created texture %p.\n", texture);
1052 *out = texture;
1053
1054 return S_OK;
1055}
1056
1057/* ID3D11Texture3D methods */
1058
1059static inline struct d3d_texture3d *impl_from_ID3D11Texture3D(ID3D11Texture3D *iface)
1060{
1062}
1063
1064static HRESULT STDMETHODCALLTYPE d3d11_texture3d_QueryInterface(ID3D11Texture3D *iface, REFIID riid, void **object)
1065{
1067 HRESULT hr;
1068
1069 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
1070
1071 if (IsEqualGUID(riid, &IID_ID3D11Texture3D)
1072 || IsEqualGUID(riid, &IID_ID3D11Resource)
1073 || IsEqualGUID(riid, &IID_ID3D11DeviceChild)
1075 {
1076 IUnknown_AddRef(iface);
1077 *object = iface;
1078 return S_OK;
1079 }
1080 else if (IsEqualGUID(riid, &IID_ID3D10Texture3D)
1081 || IsEqualGUID(riid, &IID_ID3D10Resource)
1082 || IsEqualGUID(riid, &IID_ID3D10DeviceChild))
1083 {
1084 IUnknown_AddRef(iface);
1085 *object = &texture->ID3D10Texture3D_iface;
1086 return S_OK;
1087 }
1088
1089 TRACE("Forwarding to dxgi resource.\n");
1090
1091 if (FAILED(hr = IUnknown_QueryInterface(texture->dxgi_resource, riid, object)))
1092 {
1093 WARN("%s not implemented, returning %#lx.\n", debugstr_guid(riid), hr);
1094 *object = NULL;
1095 }
1096
1097 return hr;
1098}
1099
1100static ULONG STDMETHODCALLTYPE d3d11_texture3d_AddRef(ID3D11Texture3D *iface)
1101{
1104
1105 TRACE("%p increasing refcount to %lu.\n", texture, refcount);
1106
1107 if (refcount == 1)
1108 {
1109 ID3D11Device2_AddRef(texture->device);
1110 wined3d_texture_incref(texture->wined3d_texture);
1111 }
1112
1113 return refcount;
1114}
1115
1117{
1118 struct d3d_texture3d *texture = parent;
1119
1120 if (texture->dxgi_resource)
1121 IUnknown_Release(texture->dxgi_resource);
1122 free(parent);
1123}
1124
1126{
1129
1130 TRACE("%p decreasing refcount to %lu.\n", texture, refcount);
1131
1132 if (!refcount)
1133 {
1134 ID3D11Device2 *device = texture->device;
1135
1136 wined3d_texture_decref(texture->wined3d_texture);
1137 /* Release the device last, it may cause the wined3d device to be
1138 * destroyed. */
1139 ID3D11Device2_Release(device);
1140 }
1141
1142 return refcount;
1143}
1144
1145static void STDMETHODCALLTYPE d3d11_texture3d_GetDevice(ID3D11Texture3D *iface, ID3D11Device **device)
1146{
1148
1149 TRACE("iface %p, device %p.\n", iface, device);
1150
1151 *device = (ID3D11Device *)texture->device;
1152 ID3D11Device_AddRef(*device);
1153}
1154
1156 REFGUID guid, UINT *data_size, void *data)
1157{
1160 HRESULT hr;
1161
1162 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
1163
1164 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
1165 {
1166 hr = IDXGIResource_GetPrivateData(dxgi_resource, guid, data_size, data);
1167 IDXGIResource_Release(dxgi_resource);
1168 }
1169
1170 return hr;
1171}
1172
1174 REFGUID guid, UINT data_size, const void *data)
1175{
1178 HRESULT hr;
1179
1180 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
1181
1182 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
1183 {
1184 hr = IDXGIResource_SetPrivateData(dxgi_resource, guid, data_size, data);
1185 IDXGIResource_Release(dxgi_resource);
1186 }
1187
1188 return hr;
1189}
1190
1192 REFGUID guid, const IUnknown *data)
1193{
1196 HRESULT hr;
1197
1198 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
1199
1200 if (SUCCEEDED(hr = IUnknown_QueryInterface(texture->dxgi_resource, &IID_IDXGIResource, (void **)&dxgi_resource)))
1201 {
1202 hr = IDXGIResource_SetPrivateDataInterface(dxgi_resource, guid, data);
1203 IDXGIResource_Release(dxgi_resource);
1204 }
1205
1206 return hr;
1207}
1208
1209static void STDMETHODCALLTYPE d3d11_texture3d_GetType(ID3D11Texture3D *iface,
1210 D3D11_RESOURCE_DIMENSION *resource_dimension)
1211{
1212 TRACE("iface %p, resource_dimension %p.\n", iface, resource_dimension);
1213
1214 *resource_dimension = D3D11_RESOURCE_DIMENSION_TEXTURE3D;
1215}
1216
1217static void STDMETHODCALLTYPE d3d11_texture3d_SetEvictionPriority(ID3D11Texture3D *iface, UINT eviction_priority)
1218{
1219 FIXME("iface %p, eviction_priority %#x stub!\n", iface, eviction_priority);
1220}
1221
1223{
1224 FIXME("iface %p stub!\n", iface);
1225
1226 return 0;
1227}
1228
1229static void STDMETHODCALLTYPE d3d11_texture3d_GetDesc(ID3D11Texture3D *iface, D3D11_TEXTURE3D_DESC *desc)
1230{
1232
1233 TRACE("iface %p, desc %p.\n", iface, desc);
1234
1235 *desc = texture->desc;
1236}
1237
1238static const struct ID3D11Texture3DVtbl d3d11_texture3d_vtbl =
1239{
1240 /* IUnknown methods */
1244 /* ID3D11DeviceChild methods */
1249 /* ID3D11Resource methods */
1253 /* ID3D11Texture3D methods */
1255};
1256
1257/* ID3D10Texture3D methods */
1258
1260{
1262}
1263
1265{
1267
1268 TRACE("iface %p, riid %s, object %p.\n", iface, debugstr_guid(riid), object);
1269
1270 return d3d11_texture3d_QueryInterface(&texture->ID3D11Texture3D_iface, riid, object);
1271}
1272
1274{
1276
1277 TRACE("iface %p.\n", iface);
1278
1279 return d3d11_texture3d_AddRef(&texture->ID3D11Texture3D_iface);
1280}
1281
1283{
1285
1286 TRACE("iface %p.\n", iface);
1287
1288 return d3d11_texture3d_Release(&texture->ID3D11Texture3D_iface);
1289}
1290
1292{
1294
1295 TRACE("iface %p, device %p.\n", iface, device);
1296
1297 ID3D11Device2_QueryInterface(texture->device, &IID_ID3D10Device, (void **)device);
1298}
1299
1301 REFGUID guid, UINT *data_size, void *data)
1302{
1304
1305 TRACE("iface %p, guid %s, data_size %p, data %p.\n", iface, debugstr_guid(guid), data_size, data);
1306
1307 return d3d11_texture3d_GetPrivateData(&texture->ID3D11Texture3D_iface, guid, data_size, data);
1308}
1309
1311 REFGUID guid, UINT data_size, const void *data)
1312{
1314
1315 TRACE("iface %p, guid %s, data_size %u, data %p.\n", iface, debugstr_guid(guid), data_size, data);
1316
1317 return d3d11_texture3d_SetPrivateData(&texture->ID3D11Texture3D_iface, guid, data_size, data);
1318}
1319
1321 REFGUID guid, const IUnknown *data)
1322{
1324
1325 TRACE("iface %p, guid %s, data %p.\n", iface, debugstr_guid(guid), data);
1326
1327 return d3d11_texture3d_SetPrivateDataInterface(&texture->ID3D11Texture3D_iface, guid, data);
1328}
1329
1331 D3D10_RESOURCE_DIMENSION *resource_dimension)
1332{
1333 TRACE("iface %p, resource_dimension %p.\n", iface, resource_dimension);
1334
1335 *resource_dimension = D3D10_RESOURCE_DIMENSION_TEXTURE3D;
1336}
1337
1339{
1340 FIXME("iface %p, eviction_priority %u stub!\n", iface, eviction_priority);
1341}
1342
1344{
1345 FIXME("iface %p stub!\n", iface);
1346
1347 return 0;
1348}
1349
1351 D3D10_MAP map_type, UINT map_flags, D3D10_MAPPED_TEXTURE3D *mapped_texture)
1352{
1355 HRESULT hr;
1356
1357 TRACE("iface %p, sub_resource_idx %u, map_type %u, map_flags %#x, mapped_texture %p.\n",
1358 iface, sub_resource_idx, map_type, map_flags, mapped_texture);
1359
1360 if (map_flags)
1361 FIXME("Ignoring map_flags %#x.\n", map_flags);
1362
1363 if (SUCCEEDED(hr = wined3d_resource_map(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx,
1365 {
1366 mapped_texture->pData = wined3d_map_desc.data;
1367 mapped_texture->RowPitch = wined3d_map_desc.row_pitch;
1368 mapped_texture->DepthPitch = wined3d_map_desc.slice_pitch;
1369 }
1370
1371 return hr;
1372}
1373
1375{
1377
1378 TRACE("iface %p, sub_resource_idx %u.\n", iface, sub_resource_idx);
1379
1380 wined3d_resource_unmap(wined3d_texture_get_resource(texture->wined3d_texture), sub_resource_idx);
1381}
1382
1384{
1386 D3D11_TEXTURE3D_DESC d3d11_desc;
1387
1388 TRACE("iface %p, desc %p.\n", iface, desc);
1389
1390 d3d11_texture3d_GetDesc(&texture->ID3D11Texture3D_iface, &d3d11_desc);
1391
1392 desc->Width = d3d11_desc.Width;
1393 desc->Height = d3d11_desc.Height;
1394 desc->Depth = d3d11_desc.Depth;
1395 desc->MipLevels = d3d11_desc.MipLevels;
1396 desc->Format = d3d11_desc.Format;
1397 desc->Usage = d3d10_usage_from_d3d11_usage(d3d11_desc.Usage);
1398 desc->BindFlags = d3d10_bind_flags_from_d3d11_bind_flags(d3d11_desc.BindFlags);
1399 desc->CPUAccessFlags = d3d10_cpu_access_flags_from_d3d11_cpu_access_flags(d3d11_desc.CPUAccessFlags);
1400 desc->MiscFlags = d3d10_resource_misc_flags_from_d3d11_resource_misc_flags(d3d11_desc.MiscFlags);
1401}
1402
1403static const struct ID3D10Texture3DVtbl d3d10_texture3d_vtbl =
1404{
1405 /* IUnknown methods */
1409 /* ID3D10DeviceChild methods */
1414 /* ID3D10Resource methods */
1418 /* ID3D10Texture3D methods */
1422};
1423
1425{
1426 if (!iface)
1427 return NULL;
1428 assert(iface->lpVtbl == &d3d10_texture3d_vtbl);
1430}
1431
1433{
1434 if (!iface)
1435 return NULL;
1436 assert(iface->lpVtbl == &d3d11_texture3d_vtbl);
1437 return impl_from_ID3D11Texture3D(iface);
1438}
1439
1441{
1443};
1444
1446 const D3D11_TEXTURE3D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data)
1447{
1448 struct wined3d_resource_desc wined3d_desc;
1449 unsigned int levels;
1450 DWORD flags = 0;
1451 HRESULT hr;
1452
1454 && (~desc->BindFlags & (D3D11_BIND_RENDER_TARGET | D3D11_BIND_SHADER_RESOURCE)))
1455 {
1456 WARN("D3D11_RESOURCE_MISC_GENERATE_MIPS used without D3D11_BIND_RENDER_TARGET "
1457 "and D3D11_BIND_SHADER_RESOURCE.\n");
1458 return E_INVALIDARG;
1459 }
1460
1461 texture->ID3D11Texture3D_iface.lpVtbl = &d3d11_texture3d_vtbl;
1462 texture->ID3D10Texture3D_iface.lpVtbl = &d3d10_texture3d_vtbl;
1463 texture->refcount = 1;
1465 texture->desc = *desc;
1466
1468 wined3d_desc.format = wined3dformat_from_dxgi_format(desc->Format);
1470 wined3d_desc.multisample_quality = 0;
1471 wined3d_desc.usage = wined3d_usage_from_d3d11(desc->Usage);
1472 wined3d_desc.bind_flags = wined3d_bind_flags_from_d3d11(desc->BindFlags, desc->MiscFlags);
1473 wined3d_desc.access = wined3d_access_from_d3d11(desc->Usage,
1474 desc->Usage == D3D11_USAGE_DEFAULT ? 0 : desc->CPUAccessFlags);
1475 wined3d_desc.width = desc->Width;
1476 wined3d_desc.height = desc->Height;
1477 wined3d_desc.depth = desc->Depth;
1478 wined3d_desc.size = 0;
1479
1480 levels = desc->MipLevels ? desc->MipLevels : wined3d_log2i(max(max(desc->Width, desc->Height), desc->Depth)) + 1;
1481
1482 if (desc->MiscFlags & D3D11_RESOURCE_MISC_GENERATE_MIPS)
1484
1485 if (FAILED(hr = wined3d_texture_create(device->wined3d_device, &wined3d_desc,
1487 &d3d_texture3d_wined3d_parent_ops, &texture->wined3d_texture)))
1488 {
1489 WARN("Failed to create wined3d texture, hr %#lx.\n", hr);
1492 hr = E_INVALIDARG;
1493 return hr;
1494 }
1495
1496 hr = d3d_device_create_dxgi_resource((IUnknown *)&device->ID3D10Device1_iface,
1497 wined3d_texture_get_resource(texture->wined3d_texture), (IUnknown *)&texture->ID3D10Texture3D_iface,
1498 FALSE, &texture->dxgi_resource);
1499 if (FAILED(hr))
1500 {
1501 ERR("Failed to create DXGI resource, returning %#.lx\n", hr);
1502 wined3d_texture_decref(texture->wined3d_texture);
1504 return hr;
1505 }
1507 texture->desc.MipLevels = levels;
1508
1509 ID3D11Device2_AddRef(texture->device = &device->ID3D11Device2_iface);
1510
1511 return S_OK;
1512}
1513
1514HRESULT d3d_texture3d_create(struct d3d_device *device, const D3D11_TEXTURE3D_DESC *desc,
1515 const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture3d **texture)
1516{
1517 struct d3d_texture3d *object;
1518 HRESULT hr;
1519
1520 if (!(object = calloc(1, sizeof(*object))))
1521 return E_OUTOFMEMORY;
1522
1523 if (FAILED(hr = d3d_texture3d_init(object, device, desc, data)))
1524 {
1525 WARN("Failed to initialise texture, hr %#lx.\n", hr);
1526 free(object);
1527 return hr;
1528 }
1529
1530 TRACE("Created texture %p.\n", object);
1531 *texture = object;
1532
1533 return S_OK;
1534}
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
Definition: precomp.h:23
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
const GUID IID_IUnknown
#define STDMETHODCALLTYPE
Definition: bdasup.h:9
D3D10_MAP
Definition: d3d10.idl:503
D3D10_RESOURCE_DIMENSION
Definition: d3d10.idl:452
@ D3D10_RESOURCE_DIMENSION_TEXTURE1D
Definition: d3d10.idl:455
@ D3D10_RESOURCE_DIMENSION_TEXTURE3D
Definition: d3d10.idl:457
@ D3D10_RESOURCE_DIMENSION_TEXTURE2D
Definition: d3d10.idl:456
@ D3D11_RESOURCE_MISC_GENERATE_MIPS
Definition: d3d11.idl:1034
@ D3D11_RESOURCE_MISC_TEXTURECUBE
Definition: d3d11.idl:1036
@ D3D11_RESOURCE_MISC_GDI_COMPATIBLE
Definition: d3d11.idl:1042
enum wined3d_format_id wined3dformat_from_dxgi_format(DXGI_FORMAT format)
Definition: utils.c:323
UINT d3d10_bind_flags_from_d3d11_bind_flags(UINT bind_flags)
Definition: utils.c:502
static unsigned int wined3d_bind_flags_from_d3d11(UINT bind_flags, UINT misc_flags)
Definition: d3d11_private.h:85
BOOL validate_d3d11_resource_access_flags(D3D11_RESOURCE_DIMENSION resource_dimension, D3D11_USAGE usage, UINT bind_flags, UINT cpu_access_flags, D3D_FEATURE_LEVEL feature_level)
Definition: utils.c:601
enum D3D10_USAGE d3d10_usage_from_d3d11_usage(enum D3D11_USAGE usage)
Definition: utils.c:471
UINT d3d10_cpu_access_flags_from_d3d11_cpu_access_flags(UINT cpu_access_flags)
Definition: utils.c:534
DWORD wined3d_usage_from_d3d11(enum D3D11_USAGE usage)
Definition: utils.c:447
UINT d3d10_resource_misc_flags_from_d3d11_resource_misc_flags(UINT resource_misc_flags)
Definition: utils.c:567
static struct d3d_texture2d * impl_from_ID3D11Texture2D(ID3D11Texture2D *iface)
unsigned int wined3d_access_from_d3d11(D3D11_USAGE usage, UINT cpu_access)
Definition: utils.c:788
DXGI_FORMAT dxgi_format_from_wined3dformat(enum wined3d_format_id format)
Definition: utils.c:210
DWORD wined3d_map_flags_from_d3d10_map_type(D3D10_MAP map_type)
Definition: utils.c:765
D3D_FEATURE_LEVEL
Definition: d3dcommon.idl:102
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_FAIL
Definition: ddrawi.h:102
#define free
Definition: debug_ros.c:5
HRESULT hr
Definition: delayimp.cpp:582
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static void STDMETHODCALLTYPE d3d11_texture2d_GetDesc(ID3D11Texture2D *iface, D3D11_TEXTURE2D_DESC *desc)
Definition: texture.c:675
static UINT STDMETHODCALLTYPE d3d10_texture3d_GetEvictionPriority(ID3D10Texture3D *iface)
Definition: texture.c:1343
static const struct wined3d_parent_ops d3d_texture2d_wined3d_parent_ops
Definition: texture.c:915
static void STDMETHODCALLTYPE d3d10_texture2d_GetType(ID3D10Texture2D *iface, D3D10_RESOURCE_DIMENSION *resource_dimension)
Definition: texture.c:811
static const struct ID3D11Texture3DVtbl d3d11_texture3d_vtbl
Definition: texture.c:1238
static void STDMETHODCALLTYPE d3d10_texture2d_SetEvictionPriority(ID3D10Texture2D *iface, UINT eviction_priority)
Definition: texture.c:819
static HRESULT STDMETHODCALLTYPE d3d11_texture1d_SetPrivateDataInterface(ID3D11Texture1D *iface, REFGUID guid, const IUnknown *data)
Definition: texture.c:150
struct d3d_texture2d * unsafe_impl_from_ID3D10Texture2D(ID3D10Texture2D *iface)
Definition: texture.c:907
static HRESULT STDMETHODCALLTYPE d3d11_texture3d_QueryInterface(ID3D11Texture3D *iface, REFIID riid, void **object)
Definition: texture.c:1064
static BOOL validate_texture2d_desc(const D3D11_TEXTURE2D_DESC *desc, D3D_FEATURE_LEVEL feature_level)
Definition: texture.c:933
static struct d3d_texture1d * impl_from_ID3D11Texture1D(ID3D11Texture1D *iface)
Definition: texture.c:27
static void STDMETHODCALLTYPE d3d11_texture2d_SetEvictionPriority(ID3D11Texture2D *iface, UINT eviction_priority)
Definition: texture.c:663
static void STDMETHODCALLTYPE d3d10_texture3d_GetDesc(ID3D10Texture3D *iface, D3D10_TEXTURE3D_DESC *desc)
Definition: texture.c:1383
static ULONG STDMETHODCALLTYPE d3d10_texture2d_AddRef(ID3D10Texture2D *iface)
Definition: texture.c:742
static void STDMETHODCALLTYPE d3d11_texture1d_SetEvictionPriority(ID3D11Texture1D *iface, UINT eviction_priority)
Definition: texture.c:176
static struct d3d_texture3d * impl_from_ID3D11Texture3D(ID3D11Texture3D *iface)
Definition: texture.c:1059
static HRESULT STDMETHODCALLTYPE d3d10_texture3d_SetPrivateData(ID3D10Texture3D *iface, REFGUID guid, UINT data_size, const void *data)
Definition: texture.c:1310
static BOOL is_gdi_compatible_texture(const D3D11_TEXTURE2D_DESC *desc)
Definition: texture.c:920
static HRESULT STDMETHODCALLTYPE d3d10_texture3d_Map(ID3D10Texture3D *iface, UINT sub_resource_idx, D3D10_MAP map_type, UINT map_flags, D3D10_MAPPED_TEXTURE3D *mapped_texture)
Definition: texture.c:1350
static void STDMETHODCALLTYPE d3d11_texture2d_GetDevice(ID3D11Texture2D *iface, ID3D11Device **device)
Definition: texture.c:591
static HRESULT STDMETHODCALLTYPE d3d11_texture1d_QueryInterface(ID3D11Texture1D *iface, REFIID iid, void **out)
Definition: texture.c:32
static HRESULT STDMETHODCALLTYPE d3d10_texture2d_QueryInterface(ID3D10Texture2D *iface, REFIID riid, void **object)
Definition: texture.c:733
static struct d3d_texture2d * impl_from_ID3D10Texture2D(ID3D10Texture2D *iface)
Definition: texture.c:728
static ULONG STDMETHODCALLTYPE d3d11_texture1d_AddRef(ID3D11Texture1D *iface)
Definition: texture.c:69
struct d3d_texture2d * unsafe_impl_from_ID3D11Texture2D(ID3D11Texture2D *iface)
Definition: texture.c:718
static UINT STDMETHODCALLTYPE d3d11_texture2d_GetEvictionPriority(ID3D11Texture2D *iface)
Definition: texture.c:668
static void STDMETHODCALLTYPE d3d_texture2d_wined3d_object_released(void *parent)
Definition: texture.c:751
static void STDMETHODCALLTYPE d3d11_texture3d_GetType(ID3D11Texture3D *iface, D3D11_RESOURCE_DIMENSION *resource_dimension)
Definition: texture.c:1209
static ULONG STDMETHODCALLTYPE d3d11_texture3d_AddRef(ID3D11Texture3D *iface)
Definition: texture.c:1100
static HRESULT STDMETHODCALLTYPE d3d10_texture2d_SetPrivateDataInterface(ID3D10Texture2D *iface, REFGUID guid, const IUnknown *data)
Definition: texture.c:799
static HRESULT STDMETHODCALLTYPE d3d10_texture3d_QueryInterface(ID3D10Texture3D *iface, REFIID riid, void **object)
Definition: texture.c:1264
struct d3d_texture3d * unsafe_impl_from_ID3D11Texture3D(ID3D11Texture3D *iface)
Definition: texture.c:1432
static void STDMETHODCALLTYPE d3d11_texture3d_SetEvictionPriority(ID3D11Texture3D *iface, UINT eviction_priority)
Definition: texture.c:1217
HRESULT d3d_texture2d_create(struct d3d_device *device, const D3D11_TEXTURE2D_DESC *desc, struct wined3d_texture *wined3d_texture, const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture2d **out)
Definition: texture.c:964
static void STDMETHODCALLTYPE d3d11_texture3d_GetDevice(ID3D11Texture3D *iface, ID3D11Device **device)
Definition: texture.c:1145
static ULONG STDMETHODCALLTYPE d3d10_texture1d_Release(ID3D10Texture1D *iface)
Definition: texture.c:258
static HRESULT STDMETHODCALLTYPE d3d11_texture2d_GetPrivateData(ID3D11Texture2D *iface, REFGUID guid, UINT *data_size, void *data)
Definition: texture.c:601
static UINT STDMETHODCALLTYPE d3d11_texture3d_GetEvictionPriority(ID3D11Texture3D *iface)
Definition: texture.c:1222
static void STDMETHODCALLTYPE d3d10_texture1d_GetDesc(ID3D10Texture1D *iface, D3D10_TEXTURE1D_DESC *desc)
Definition: texture.c:363
static void STDMETHODCALLTYPE d3d10_texture3d_GetDevice(ID3D10Texture3D *iface, ID3D10Device **device)
Definition: texture.c:1291
static const struct ID3D10Texture2DVtbl d3d10_texture2d_vtbl
Definition: texture.c:886
static ULONG STDMETHODCALLTYPE d3d10_texture3d_Release(ID3D10Texture3D *iface)
Definition: texture.c:1282
static void STDMETHODCALLTYPE d3d11_texture2d_GetType(ID3D11Texture2D *iface, D3D11_RESOURCE_DIMENSION *resource_dimension)
Definition: texture.c:655
static struct d3d_texture1d * impl_from_ID3D10Texture1D(ID3D10Texture1D *iface)
Definition: texture.c:224
static void STDMETHODCALLTYPE d3d10_texture2d_GetDevice(ID3D10Texture2D *iface, ID3D10Device **device)
Definition: texture.c:770
static const struct ID3D10Texture1DVtbl d3d10_texture1d_vtbl
Definition: texture.c:382
static const struct wined3d_parent_ops d3d_texture1d_wined3d_parent_ops
Definition: texture.c:411
static HRESULT STDMETHODCALLTYPE d3d11_texture3d_GetPrivateData(ID3D11Texture3D *iface, REFGUID guid, UINT *data_size, void *data)
Definition: texture.c:1155
static void STDMETHODCALLTYPE d3d_texture3d_wined3d_object_released(void *parent)
Definition: texture.c:1116
static UINT STDMETHODCALLTYPE d3d10_texture2d_GetEvictionPriority(ID3D10Texture2D *iface)
Definition: texture.c:824
struct d3d_texture1d * unsafe_impl_from_ID3D11Texture1D(ID3D11Texture1D *iface)
Definition: texture.c:216
static HRESULT d3d_texture3d_init(struct d3d_texture3d *texture, struct d3d_device *device, const D3D11_TEXTURE3D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data)
Definition: texture.c:1445
static void STDMETHODCALLTYPE d3d11_texture3d_GetDesc(ID3D11Texture3D *iface, D3D11_TEXTURE3D_DESC *desc)
Definition: texture.c:1229
static HRESULT STDMETHODCALLTYPE d3d10_texture1d_SetPrivateDataInterface(ID3D10Texture1D *iface, REFGUID guid, const IUnknown *data)
Definition: texture.c:298
static const struct ID3D11Texture2DVtbl d3d11_texture2d_vtbl
Definition: texture.c:699
static struct d3d_texture3d * impl_from_ID3D10Texture3D(ID3D10Texture3D *iface)
Definition: texture.c:1259
static void STDMETHODCALLTYPE d3d10_texture3d_SetEvictionPriority(ID3D10Texture3D *iface, UINT eviction_priority)
Definition: texture.c:1338
static const struct wined3d_parent_ops d3d_texture3d_wined3d_parent_ops
Definition: texture.c:1440
static void STDMETHODCALLTYPE d3d10_texture1d_GetDevice(ID3D10Texture1D *iface, ID3D10Device **device)
Definition: texture.c:269
HRESULT d3d_texture3d_create(struct d3d_device *device, const D3D11_TEXTURE3D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture3d **texture)
Definition: texture.c:1514
static HRESULT STDMETHODCALLTYPE d3d11_texture2d_SetPrivateDataInterface(ID3D11Texture2D *iface, REFGUID guid, const IUnknown *data)
Definition: texture.c:637
static const struct ID3D11Texture1DVtbl d3d11_texture1d_vtbl
Definition: texture.c:197
static void STDMETHODCALLTYPE d3d10_texture3d_Unmap(ID3D10Texture3D *iface, UINT sub_resource_idx)
Definition: texture.c:1374
static void STDMETHODCALLTYPE d3d10_texture1d_SetEvictionPriority(ID3D10Texture1D *iface, UINT eviction_priority)
Definition: texture.c:318
static HRESULT STDMETHODCALLTYPE d3d10_texture3d_SetPrivateDataInterface(ID3D10Texture3D *iface, REFGUID guid, const IUnknown *data)
Definition: texture.c:1320
static HRESULT STDMETHODCALLTYPE d3d11_texture2d_QueryInterface(ID3D11Texture2D *iface, REFIID riid, void **object)
Definition: texture.c:514
static HRESULT STDMETHODCALLTYPE d3d10_texture2d_Map(ID3D10Texture2D *iface, UINT sub_resource_idx, D3D10_MAP map_type, UINT map_flags, D3D10_MAPPED_TEXTURE2D *mapped_texture)
Definition: texture.c:833
static void STDMETHODCALLTYPE d3d10_texture2d_GetDesc(ID3D10Texture2D *iface, D3D10_TEXTURE2D_DESC *desc)
Definition: texture.c:865
static HRESULT STDMETHODCALLTYPE d3d10_texture1d_GetPrivateData(ID3D10Texture1D *iface, REFGUID guid, UINT *data_size, void *data)
Definition: texture.c:278
static ULONG STDMETHODCALLTYPE d3d10_texture2d_Release(ID3D10Texture2D *iface)
Definition: texture.c:759
static HRESULT STDMETHODCALLTYPE d3d10_texture2d_GetPrivateData(ID3D10Texture2D *iface, REFGUID guid, UINT *data_size, void *data)
Definition: texture.c:779
static void STDMETHODCALLTYPE d3d10_texture3d_GetType(ID3D10Texture3D *iface, D3D10_RESOURCE_DIMENSION *resource_dimension)
Definition: texture.c:1330
struct d3d_texture3d * unsafe_impl_from_ID3D10Texture3D(ID3D10Texture3D *iface)
Definition: texture.c:1424
static HRESULT STDMETHODCALLTYPE d3d11_texture2d_SetPrivateData(ID3D11Texture2D *iface, REFGUID guid, UINT data_size, const void *data)
Definition: texture.c:619
static void STDMETHODCALLTYPE d3d10_texture2d_Unmap(ID3D10Texture2D *iface, UINT sub_resource_idx)
Definition: texture.c:856
static void STDMETHODCALLTYPE d3d11_texture1d_GetType(ID3D11Texture1D *iface, D3D11_RESOURCE_DIMENSION *resource_dimension)
Definition: texture.c:168
static void STDMETHODCALLTYPE d3d10_texture1d_GetType(ID3D10Texture1D *iface, D3D10_RESOURCE_DIMENSION *resource_dimension)
Definition: texture.c:310
static HRESULT STDMETHODCALLTYPE d3d11_texture3d_SetPrivateData(ID3D11Texture3D *iface, REFGUID guid, UINT data_size, const void *data)
Definition: texture.c:1173
static ULONG STDMETHODCALLTYPE d3d11_texture3d_Release(ID3D11Texture3D *iface)
Definition: texture.c:1125
static ULONG STDMETHODCALLTYPE d3d10_texture3d_AddRef(ID3D10Texture3D *iface)
Definition: texture.c:1273
static HRESULT STDMETHODCALLTYPE d3d11_texture1d_SetPrivateData(ID3D11Texture1D *iface, REFGUID guid, UINT data_size, const void *data)
Definition: texture.c:132
static void STDMETHODCALLTYPE d3d10_texture1d_Unmap(ID3D10Texture1D *iface, UINT sub_resource_idx)
Definition: texture.c:354
static const struct ID3D10Texture3DVtbl d3d10_texture3d_vtbl
Definition: texture.c:1403
static ULONG STDMETHODCALLTYPE d3d11_texture1d_Release(ID3D11Texture1D *iface)
Definition: texture.c:85
HRESULT d3d_device_create_dxgi_resource(IUnknown *device, struct wined3d_resource *wined3d_resource, IUnknown *outer, BOOL needs_surface, IUnknown **dxgi_resource)
Definition: texture.c:416
static HRESULT STDMETHODCALLTYPE d3d11_texture1d_GetPrivateData(ID3D11Texture1D *iface, REFGUID guid, UINT *data_size, void *data)
Definition: texture.c:114
static UINT STDMETHODCALLTYPE d3d10_texture1d_GetEvictionPriority(ID3D10Texture1D *iface)
Definition: texture.c:323
static HRESULT STDMETHODCALLTYPE d3d10_texture1d_Map(ID3D10Texture1D *iface, UINT sub_resource_idx, D3D10_MAP map_type, UINT map_flags, void **data)
Definition: texture.c:332
static HRESULT STDMETHODCALLTYPE d3d10_texture2d_SetPrivateData(ID3D10Texture2D *iface, REFGUID guid, UINT data_size, const void *data)
Definition: texture.c:789
static void STDMETHODCALLTYPE d3d_texture1d_wined3d_object_released(void *parent)
Definition: texture.c:249
static HRESULT STDMETHODCALLTYPE d3d11_texture3d_SetPrivateDataInterface(ID3D11Texture3D *iface, REFGUID guid, const IUnknown *data)
Definition: texture.c:1191
struct d3d_texture1d * unsafe_impl_from_ID3D10Texture1D(ID3D10Texture1D *iface)
Definition: texture.c:403
static void STDMETHODCALLTYPE d3d11_texture1d_GetDesc(ID3D11Texture1D *iface, D3D11_TEXTURE1D_DESC *desc)
Definition: texture.c:188
static ULONG STDMETHODCALLTYPE d3d11_texture2d_Release(ID3D11Texture2D *iface)
Definition: texture.c:568
static ULONG STDMETHODCALLTYPE d3d11_texture2d_AddRef(ID3D11Texture2D *iface)
Definition: texture.c:550
static ULONG STDMETHODCALLTYPE d3d10_texture1d_AddRef(ID3D10Texture1D *iface)
Definition: texture.c:240
HRESULT d3d_texture1d_create(struct d3d_device *device, const D3D11_TEXTURE1D_DESC *desc, const D3D11_SUBRESOURCE_DATA *data, struct d3d_texture1d **out)
Definition: texture.c:440
static HRESULT STDMETHODCALLTYPE d3d10_texture3d_GetPrivateData(ID3D10Texture3D *iface, REFGUID guid, UINT *data_size, void *data)
Definition: texture.c:1300
static HRESULT STDMETHODCALLTYPE d3d10_texture1d_QueryInterface(ID3D10Texture1D *iface, REFIID iid, void **out)
Definition: texture.c:231
static UINT STDMETHODCALLTYPE d3d11_texture1d_GetEvictionPriority(ID3D11Texture1D *iface)
Definition: texture.c:181
static HRESULT STDMETHODCALLTYPE d3d10_texture1d_SetPrivateData(ID3D10Texture1D *iface, REFGUID guid, UINT data_size, const void *data)
Definition: texture.c:288
static void STDMETHODCALLTYPE d3d11_texture1d_GetDevice(ID3D11Texture1D *iface, ID3D11Device **device)
Definition: texture.c:104
HRESULT CDECL wined3d_resource_unmap(struct wined3d_resource *resource, unsigned int sub_resource_idx)
Definition: resource.c:304
void CDECL wined3d_resource_get_desc(const struct wined3d_resource *resource, struct wined3d_resource_desc *desc)
Definition: resource.c:280
HRESULT CDECL wined3d_resource_map(struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_map_desc *map_desc, const struct wined3d_box *box, uint32_t flags)
Definition: resource.c:295
void CDECL wined3d_resource_set_parent(struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
Definition: resource.c:274
struct wined3d_swapchain *CDECL wined3d_texture_get_swapchain(struct wined3d_texture *texture)
Definition: texture.c:4028
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
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
GUID guid
Definition: version.c:147
#define assert(_expr)
Definition: assert.h:32
r parent
Definition: btrfs.c:3010
@ DXGI_FORMAT_B8G8R8A8_UNORM
Definition: dxgiformat.idl:110
@ DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
Definition: dxgiformat.idl:114
@ DXGI_FORMAT_B8G8R8A8_TYPELESS
Definition: dxgiformat.idl:113
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLenum GLuint texture
Definition: glext.h:6295
GLbitfield flags
Definition: glext.h:7161
GLsizei levels
Definition: glext.h:7884
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 debugstr_guid
Definition: kernel32.h:35
static VARTYPE map_type(struct string_t *str)
D3D11_SHADER_VARIABLE_DESC desc
Definition: reflection.c:1683
static IUnknown * outer
Definition: compobj.c:82
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define calloc
Definition: rosglue.h:14
#define TRACE(s)
Definition: solgame.cpp:4
Definition: scsiwmi.h:51
ID3D11Texture1D ID3D11Texture1D_iface
ID3D10Texture1D ID3D10Texture1D_iface
IUnknown * dxgi_resource
struct wined3d_texture * wined3d_texture
ID3D10Texture2D ID3D10Texture2D_iface
IUnknown * dxgi_resource
ID3D11Texture2D ID3D11Texture2D_iface
IUnknown * dxgi_resource
ID3D11Texture3D ID3D11Texture3D_iface
ID3D10Texture3D ID3D10Texture3D_iface
Definition: devices.h:37
unsigned int size
Definition: wined3d.h:1801
enum wined3d_resource_type resource_type
Definition: wined3d.h:1791
unsigned int width
Definition: wined3d.h:1798
unsigned int height
Definition: wined3d.h:1799
enum wined3d_multisample_type multisample_type
Definition: wined3d.h:1793
unsigned int multisample_quality
Definition: wined3d.h:1794
unsigned int bind_flags
Definition: wined3d.h:1796
unsigned int usage
Definition: wined3d.h:1795
unsigned int depth
Definition: wined3d.h:1800
enum wined3d_format_id format
Definition: wined3d.h:1792
unsigned int access
Definition: wined3d.h:1797
#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
ULONG CDECL wined3d_swapchain_decref(struct wined3d_swapchain *swapchain)
Definition: swapchain.c:144
ULONG CDECL wined3d_swapchain_incref(struct wined3d_swapchain *swapchain)
Definition: swapchain.c:135
static unsigned int wined3d_log2i(unsigned int x)
Definition: wined3d.h:2952
@ WINED3D_MULTISAMPLE_NONE
Definition: wined3d.h:573
@ WINED3D_RTYPE_TEXTURE_2D
Definition: wined3d.h:720
@ WINED3D_RTYPE_TEXTURE_1D
Definition: wined3d.h:719
@ WINED3D_RTYPE_TEXTURE_3D
Definition: wined3d.h:721
#define WINED3DERR_NOTAVAILABLE
Definition: wined3d.h:42
#define WINED3DERR_INVALIDCALL
Definition: wined3d.h:44
#define WINED3D_TEXTURE_CREATE_GET_DC
Definition: wined3d.h:1565
#define WINED3D_TEXTURE_CREATE_GENERATE_MIPMAPS
Definition: wined3d.h:1566
void WINAPI wined3d_mutex_unlock(void)
Definition: wined3d_main.c:544
void WINAPI wined3d_mutex_lock(void)
Definition: wined3d_main.c:539