ReactOS 0.4.17-dev-923-g4c9a150
utils.c
Go to the documentation of this file.
1/*
2 * Copyright 2016 Józef Kucia for CodeWeavers
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 "vkd3d_private.h"
20
21#include <errno.h>
22
23#define COLOR (VK_IMAGE_ASPECT_COLOR_BIT)
24#define DEPTH (VK_IMAGE_ASPECT_DEPTH_BIT)
25#define STENCIL (VK_IMAGE_ASPECT_STENCIL_BIT)
26#define DEPTH_STENCIL (VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT)
27#define TYPELESS VKD3D_FORMAT_TYPE_TYPELESS
28#define SINT VKD3D_FORMAT_TYPE_SINT
29#define UINT VKD3D_FORMAT_TYPE_UINT
30static const struct vkd3d_format vkd3d_formats[] =
31{
119};
120
121static const struct vkd3d_format format_b4g4r4a4 =
123
124/* Each depth/stencil format is only compatible with itself in Vulkan. */
126{
139};
140#undef COLOR
141#undef DEPTH
142#undef STENCIL
143#undef DEPTH_STENCIL
144#undef TYPELESS
145#undef SINT
146#undef UINT
147
149{
152}
154{
155 /* DXGI_FORMAT_R32G32B32A32_TYPELESS */
159 /* DXGI_FORMAT_R32G32B32_TYPELESS */
163 /* DXGI_FORMAT_R16G16B16A16_TYPELESS */
169 /* DXGI_FORMAT_R32G32_TYPELESS */
173 /* DXGI_FORMAT_R32G8X24_TYPELESS */
177 /* DXGI_FORMAT_R10G10B10A2_TYPELESS */
180 /* DXGI_FORMAT_R8G8B8A8_TYPELESS */
186 /* DXGI_FORMAT_R16G16_TYPELESS */
192 /* DXGI_FORMAT_R32_TYPELESS */
197 /* DXGI_FORMAT_R24G8_TYPELESS */
201 /* DXGI_FORMAT_R8G8_TYPELESS */
206 /* DXGI_FORMAT_R16_TYPELESS */
213 /* DXGI_FORMAT_R8_TYPELESS */
218 /* DXGI_FORMAT_BC1_TYPELESS */
221 /* DXGI_FORMAT_BC2_TYPELESS */
224 /* DXGI_FORMAT_BC3_TYPELESS */
227 /* DXGI_FORMAT_BC4_TYPELESS */
230 /* DXGI_FORMAT_BC5_TYPELESS */
233 /* DXGI_FORMAT_BC6H_TYPELESS */
236 /* DXGI_FORMAT_BC7_TYPELESS */
239 /* DXGI_FORMAT_B8G8R8A8_TYPELESS */
242 /* DXGI_FORMAT_B8G8R8X8_TYPELESS */
246
248{
249 unsigned int i;
250
251 for (i = 0; i < ARRAY_SIZE(vkd3d_formats); ++i)
252 {
253 const struct vkd3d_format *current = &vkd3d_formats[i];
254
255 if (current->dxgi_format == dxgi_format)
257 }
258
260 {
262 return true;
263 }
264
265 return false;
266}
267
268/* FIXME: This table should be generated at compile-time. */
270{
271 struct vkd3d_format_compatibility_list *lists, *current_list;
274 VkFormat vk_format;
275 unsigned int count;
276 unsigned int i, j;
277
278 device->format_compatibility_list_count = 0;
279 device->format_compatibility_lists = NULL;
280
281 if (!device->vk_info.KHR_image_format_list)
282 return S_OK;
283
284 count = 1;
287 {
289
291 {
292 ++count;
294 }
295 }
296
297 if (!(lists = vkd3d_calloc(count, sizeof(*lists))))
298 return E_OUTOFMEMORY;
299
300 count = 0;
301 current_list = lists;
304 {
306
307 if (current_list->typeless_format != current->typeless_format)
308 {
309 /* Avoid empty format lists. */
310 if (current_list->format_count)
311 {
312 ++current_list;
313 ++count;
314 }
315
316 current_list->typeless_format = current->typeless_format;
317 }
318
319 /* In Vulkan, each depth-stencil format is only compatible with itself. */
321 continue;
322
323 if (!(vk_format = vkd3d_get_vk_format(current->format)))
324 continue;
325
326 for (j = 0; j < current_list->format_count; ++j)
327 {
328 if (current_list->vk_formats[j] == vk_format)
329 break;
330 }
331
332 if (j >= current_list->format_count)
333 {
335 current_list->vk_formats[current_list->format_count++] = vk_format;
336 }
337 }
338 if (current_list->format_count)
339 ++count;
340
341 device->format_compatibility_list_count = count;
342 device->format_compatibility_lists = lists;
343 return S_OK;
344}
345
347{
348 vkd3d_free((void *)device->format_compatibility_lists);
349
350 device->format_compatibility_lists = NULL;
351 device->format_compatibility_list_count = 0;
352}
353
355{
356 const unsigned int count = ARRAY_SIZE(vkd3d_depth_stencil_formats);
357 const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
358 VkFormatProperties properties;
359 struct vkd3d_format *formats;
360 unsigned int i;
361
363 VK_FORMAT_D24_UNORM_S8_UINT, &properties));
364
366 {
367 device->depth_stencil_formats = vkd3d_depth_stencil_formats;
368 }
369 else
370 {
371 /* AMD doesn't support VK_FORMAT_D24_UNORM_S8_UINT. */
372 WARN("Mapping VK_FORMAT_D24_UNORM_S8_UINT to VK_FORMAT_D32_SFLOAT_S8_UINT.\n");
373
374 if (!(formats = vkd3d_calloc(count, sizeof(*formats))))
375 return E_OUTOFMEMORY;
376
378 for (i = 0; i < count; ++i)
379 {
381 {
383 formats[i].is_emulated = true;
384 }
385 }
386
387 device->depth_stencil_formats = formats;
388 }
389
390 return S_OK;
391}
392
394{
395 if (vkd3d_depth_stencil_formats != device->depth_stencil_formats)
396 vkd3d_free((void *)device->depth_stencil_formats);
397
398 device->depth_stencil_formats = NULL;
399}
400
402{
403 HRESULT hr;
404
406 return hr;
407
410
411 return hr;
412}
413
415{
418}
419
420/* We use overrides for depth/stencil formats. This is required in order to
421 * properly support typeless formats because depth/stencil formats are only
422 * compatible with themselves in Vulkan.
423 */
426{
427 const struct vkd3d_format *formats;
428 unsigned int i;
429
431 formats = device->depth_stencil_formats;
432
434 {
436 return &formats[i];
437 }
438
439 return NULL;
440}
441
444{
445 const struct vkd3d_format *format;
446 unsigned int i;
447
449 return format;
450
451 for (i = 0; i < ARRAY_SIZE(vkd3d_formats); ++i)
452 {
454 return &vkd3d_formats[i];
455 }
456
457 /* Do not check VkPhysicalDevice4444FormatsFeaturesEXT because apps
458 * should query format support, which returns more detailed info. */
459 if (dxgi_format == format_b4g4r4a4.dxgi_format && device->vk_info.EXT_4444_formats)
460 return &format_b4g4r4a4;
461
462 return NULL;
463}
464
466{
467 DXGI_FORMAT typeless_format = DXGI_FORMAT_UNKNOWN;
468 const struct vkd3d_format *vkd3d_format;
469 unsigned int i;
470
472 {
474 {
476 break;
477 }
478 }
479
480 if (!typeless_format)
481 return NULL;
482
484 {
485 if (vkd3d_format_compatibility_info[i].typeless_format != typeless_format)
486 continue;
487
490 return vkd3d_format;
491 }
492
493 return NULL;
494}
495
497 unsigned int src_row_pitch, unsigned int src_slice_pitch, uint8_t *dst, unsigned int dst_row_pitch,
498 unsigned int dst_slice_pitch, unsigned int w, unsigned int h, unsigned int d)
499{
500 unsigned int row_block_count, row_count, row_size, slice, row;
501 unsigned int slice_count = d;
502 const uint8_t *src_row;
503 uint8_t *dst_row;
504
505 row_block_count = (w + format->block_width - 1) / format->block_width;
506 row_count = (h + format->block_height - 1) / format->block_height;
507 row_size = row_block_count * format->byte_count * format->block_byte_count;
508
509 for (slice = 0; slice < slice_count; ++slice)
510 {
511 for (row = 0; row < row_count; ++row)
512 {
513 src_row = &src[slice * src_slice_pitch + row * src_row_pitch];
514 dst_row = &dst[slice * dst_slice_pitch + row * dst_row_pitch];
515 memcpy(dst_row, src_row, row_size);
516 }
517 }
518}
519
521{
522 const struct vkd3d_format *vkd3d_format;
523
524 if (!(vkd3d_format = vkd3d_get_format(NULL, format, false)))
525 return VK_FORMAT_UNDEFINED;
526
527 return vkd3d_format->vk_format;
528}
529
531{
534 unsigned int i;
535
536 for (i = 0; i < ARRAY_SIZE(vkd3d_formats); ++i)
537 {
538 vk_format = vkd3d_formats[i].vk_format;
539 dxgi_format = vkd3d_formats[i].dxgi_format;
541 return dxgi_format;
542 }
543
544 FIXME("Unhandled Vulkan format %#x.\n", format);
545 return DXGI_FORMAT_UNKNOWN;
546}
547
549{
550 static const D3D_FEATURE_LEVEL valid_feature_levels[] =
551 {
563 };
564 unsigned int i;
565
566 for (i = 0; i < ARRAY_SIZE(valid_feature_levels); ++i)
567 {
568 if (valid_feature_levels[i] == feature_level)
569 return true;
570 }
571
572 return false;
573}
574
576{
583}
584
585static bool is_power_of_two(unsigned int x)
586{
587 return x && !(x & (x -1));
588}
589
591{
592 const D3D12_RESOURCE_STATES valid_states =
611
612 if (state & ~valid_states)
613 {
614 WARN("Invalid resource states %#x.\n", state & ~valid_states);
615 return false;
616 }
617
618 /* Exactly one bit must be set for write states. */
620 {
621 WARN("Write state cannot be mixed with other states: %#x.\n", state);
622 return false;
623 }
624
625 return true;
626}
627
628HRESULT return_interface(void *iface, REFIID iface_iid,
629 REFIID requested_iid, void **object)
630{
631 IUnknown *unknown = iface;
632 HRESULT hr;
633
634 if (IsEqualGUID(iface_iid, requested_iid))
635 {
636 *object = unknown;
637 return S_OK;
638 }
639
640 hr = IUnknown_QueryInterface(unknown, requested_iid, object);
641 IUnknown_Release(unknown);
642 return hr;
643}
644
646{
647 return vkd3d_dbg_sprintf("{%#"PRIxPTR"}", (uintptr_t)handle.ptr);
648}
649
650const char *debug_d3d12_box(const D3D12_BOX *box)
651{
652 if (!box)
653 return "(null)";
654
655 return vkd3d_dbg_sprintf("(%u, %u, %u)-(%u, %u, %u)",
656 box->left, box->top, box->front,
657 box->right, box->bottom, box->back);
658}
659
661{
662 switch (component)
663 {
665 return "r";
667 return "g";
669 return "b";
671 return "a";
673 return "0";
675 return "1";
676 }
677
678 FIXME("Invalid component mapping %#x.\n", component);
679 return "invalid";
680}
681
683{
684 return vkd3d_dbg_sprintf("{%s, %s, %s, %s}",
685 debug_d3d12_shader_component(D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(0, mapping)),
686 debug_d3d12_shader_component(D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(1, mapping)),
687 debug_d3d12_shader_component(D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(2, mapping)),
688 debug_d3d12_shader_component(D3D12_DECODE_SHADER_4_COMPONENT_MAPPING(3, mapping)));
689}
690
692{
693 return vkd3d_dbg_sprintf("{%#"PRIx64"}", handle.ptr);
694}
695
697{
698 return vkd3d_dbg_sprintf("(%u, %u, %u)",
699 (unsigned int)extent.width,
700 (unsigned int)extent.height,
701 (unsigned int)extent.depth);
702}
703
705{
706 char buffer[191];
707
708 buffer[0] = '\0';
709#define FLAG_TO_STR(f) if (flags & f) { strcat(buffer, " | "#f); flags &= ~f; }
715#undef FLAG_TO_STR
716#define FLAG_TO_STR(f, n) if (flags & f) { strcat(buffer, " | "#n); flags &= ~f; }
719#undef FLAG_TO_STR
720 if (flags)
721 FIXME("Unrecognized flag(s) %#x.\n", flags);
722
723 if (!buffer[0])
724 return "0";
725 return vkd3d_dbg_sprintf("%s", &buffer[3]);
726}
727
729{
730 char buffer[80];
731
732 buffer[0] = '\0';
733#define FLAG_TO_STR(f) if (flags & f) { strcat(buffer, " | "#f); flags &= ~f; }
736#undef FLAG_TO_STR
737 if (flags)
738 FIXME("Unrecognized flag(s) %#x.\n", flags);
739
740 if (!buffer[0])
741 return "0";
742 return vkd3d_dbg_sprintf("%s", &buffer[3]);
743}
744
746{
747 char buffer[320];
748
749 buffer[0] = '\0';
750#define FLAG_TO_STR(f) if (flags & f) { strcat(buffer, " | "#f); flags &= ~f; }
759#undef FLAG_TO_STR
760 if (flags)
761 FIXME("Unrecognized flag(s) %#x.\n", flags);
762
763 if (!buffer[0])
764 return "0";
765 return vkd3d_dbg_sprintf("%s", &buffer[3]);
766}
767
769{
770 switch (rc)
771 {
772 case 0:
773 return S_OK;
774 case ENOMEM:
775 return E_OUTOFMEMORY;
776 case EINVAL:
777 return E_INVALIDARG;
778 default:
779 FIXME("Unhandled errno %d.\n", rc);
780 return E_FAIL;
781 }
782}
783
785{
786 switch (vr)
787 {
788 case VK_SUCCESS:
789 return S_OK;
791 WARN("Out of device memory.\n");
792 /* fall-through */
794 return E_OUTOFMEMORY;
795 default:
796 FIXME("Unhandled VkResult %d.\n", vr);
797 /* fall-through */
800 return E_FAIL;
801 }
802}
803
804#define LOAD_GLOBAL_PFN(name) \
805 if (!(procs->name = (void *)vkGetInstanceProcAddr(NULL, #name))) \
806 { \
807 ERR("Could not get global proc addr for '" #name "'.\n"); \
808 return E_FAIL; \
809 }
810
813{
814 memset(procs, 0, sizeof(*procs));
815
817
820
821 TRACE("Loaded global Vulkan procs.\n");
822 return S_OK;
823}
824
825#define LOAD_INSTANCE_PFN(name) \
826 if (!(procs->name = (void *)global_procs->vkGetInstanceProcAddr(instance, #name))) \
827 { \
828 ERR("Could not get instance proc addr for '" #name "'.\n"); \
829 return E_FAIL; \
830 }
831#define LOAD_INSTANCE_OPTIONAL_PFN(name) \
832 procs->name = (void *)global_procs->vkGetInstanceProcAddr(instance, #name);
833
835 const struct vkd3d_vk_global_procs *global_procs, VkInstance instance)
836{
837 memset(procs, 0, sizeof(*procs));
838
839#define VK_INSTANCE_PFN LOAD_INSTANCE_PFN
840#define VK_INSTANCE_EXT_PFN LOAD_INSTANCE_OPTIONAL_PFN
841#include "vulkan_procs.h"
842
843 TRACE("Loaded procs for VkInstance %p.\n", instance);
844 return S_OK;
845}
846
847#define COPY_PARENT_PFN(name) procs->name = parent_procs->name;
848#define LOAD_DEVICE_PFN(name) \
849 if (!(procs->name = (void *)procs->vkGetDeviceProcAddr(device, #name))) \
850 { \
851 ERR("Could not get device proc addr for '" #name "'.\n"); \
852 return E_FAIL; \
853 }
854#define LOAD_DEVICE_OPTIONAL_PFN(name) \
855 procs->name = (void *)procs->vkGetDeviceProcAddr(device, #name);
856
858 const struct vkd3d_vk_instance_procs *parent_procs, VkDevice device)
859{
860 memset(procs, 0, sizeof(*procs));
861
862#define VK_INSTANCE_PFN COPY_PARENT_PFN
863#define VK_DEVICE_PFN LOAD_DEVICE_PFN
864#define VK_DEVICE_EXT_PFN LOAD_DEVICE_OPTIONAL_PFN
865#include "vulkan_procs.h"
866
867 TRACE("Loaded procs for VkDevice %p.\n", device);
868 return S_OK;
869}
870
871#if HAVE_DECL_PROGRAM_INVOCATION_NAME
872
874{
875 char *name, *p, *real_path = NULL;
876
877 if ((name = strrchr(program_invocation_name, '/')))
878 {
879 real_path = realpath("/proc/self/exe", NULL);
880
881 /* Try to strip command line arguments. */
882 if (real_path && (p = strrchr(real_path, '/'))
883 && !strncmp(real_path, program_invocation_name, strlen(real_path)))
884 {
885 name = p;
886 }
887
888 ++name;
889 }
890 else if ((name = strrchr(program_invocation_name, '\\')))
891 {
892 ++name;
893 }
894 else
895 {
896 name = program_invocation_name;
897 }
898
900 program_name[PATH_MAX - 1] = '\0';
902 return true;
903}
904
905#elif defined(WIN32)
906
908{
909 char buffer[MAX_PATH];
910 char *p, *name;
911 size_t len;
912
913 *program_name = '\0';
915 if (!(len && len < MAX_PATH))
916 return false;
917
918 name = buffer;
919 if ((p = strrchr(name, '/')))
920 name = p + 1;
921 if ((p = strrchr(name, '\\')))
922 name = p + 1;
923
924 len = strlen(name) + 1;
926 return true;
927}
928
929#else
930
932{
933 *program_name = '\0';
934 return false;
935}
936
937#endif /* HAVE_DECL_PROGRAM_INVOCATION_NAME */
938
940 const struct vkd3d_private_store *store, const GUID *tag)
941{
942 struct vkd3d_private_data *data;
943
945 {
946 if (IsEqualGUID(&data->tag, tag))
947 return data;
948 }
949
950 return NULL;
951}
952
954 const GUID *tag, const void *data, unsigned int data_size, bool is_object)
955{
956 struct vkd3d_private_data *d, *old_data;
957 const void *ptr = data;
958
959 if (!data)
960 {
962 {
964 return S_OK;
965 }
966
967 return S_FALSE;
968 }
969
970 if (is_object)
971 {
972 if (data_size != sizeof(IUnknown *))
973 return E_INVALIDARG;
974 ptr = &data;
975 }
976
977 if (!(d = vkd3d_malloc(offsetof(struct vkd3d_private_data, u.data[data_size]))))
978 return E_OUTOFMEMORY;
979
980 d->tag = *tag;
981 d->size = data_size;
982 d->is_object = is_object;
983 memcpy(d->u.data, ptr, data_size);
984 if (is_object)
985 IUnknown_AddRef(d->u.object);
986
987 if ((old_data = vkd3d_private_store_get_private_data(store, tag)))
989 list_add_tail(&store->content, &d->entry);
990
991 return S_OK;
992}
993
995 const GUID *tag, unsigned int *out_size, void *out)
996{
997 const struct vkd3d_private_data *data;
998 HRESULT hr = S_OK;
999 unsigned int size;
1000
1001 if (!out_size)
1002 return E_INVALIDARG;
1003
1004 vkd3d_mutex_lock(&store->mutex);
1005
1007 {
1008 *out_size = 0;
1010 goto done;
1011 }
1012
1013 size = *out_size;
1014 *out_size = data->size;
1015 if (!out)
1016 goto done;
1017
1018 if (size < data->size)
1019 {
1021 goto done;
1022 }
1023
1024 if (data->is_object)
1025 IUnknown_AddRef(data->u.object);
1026 memcpy(out, data->u.data, data->size);
1027
1028done:
1029 vkd3d_mutex_unlock(&store->mutex);
1030 return hr;
1031}
1032
1034 const GUID *tag, unsigned int data_size, const void *data)
1035{
1036 HRESULT hr;
1037
1038 vkd3d_mutex_lock(&store->mutex);
1039
1040 hr = vkd3d_private_store_set_private_data(store, tag, data, data_size, false);
1041
1042 vkd3d_mutex_unlock(&store->mutex);
1043 return hr;
1044}
1045
1047 const GUID *tag, const IUnknown *object)
1048{
1049 const void *data = object ? object : (void *)&object;
1050 HRESULT hr;
1051
1052 vkd3d_mutex_lock(&store->mutex);
1053
1054 hr = vkd3d_private_store_set_private_data(store, tag, data, sizeof(object), !!object);
1055
1056 vkd3d_mutex_unlock(&store->mutex);
1057 return hr;
1058}
1059
1061 VkDebugReportObjectTypeEXT vk_object_type, const char *name)
1062{
1063 const struct vkd3d_vk_device_procs *vk_procs = &device->vk_procs;
1065
1066 if (!device->vk_info.EXT_debug_marker)
1067 return VK_SUCCESS;
1068
1070 info.pNext = NULL;
1071 info.objectType = vk_object_type;
1072 info.object = vk_object;
1073 info.pObjectName = name;
1074 return VK_CALL(vkDebugMarkerSetObjectNameEXT(device->vk_device, &info));
1075}
1076
1078 VkDebugReportObjectTypeEXT vk_object_type, const WCHAR *name)
1079{
1080 char *name_utf8;
1081 VkResult vr;
1082
1083 if (!name)
1084 return E_INVALIDARG;
1085
1086 if (!device->vk_info.EXT_debug_marker)
1087 return S_OK;
1088
1089 if (!(name_utf8 = vkd3d_strdup_w_utf8(name, device->wchar_size)))
1090 return E_OUTOFMEMORY;
1091
1092 vr = vkd3d_set_vk_object_name_utf8(device, vk_object, vk_object_type, name_utf8);
1093
1094 vkd3d_free(name_utf8);
1095
1096 return hresult_from_vk_result(vr);
1097}
static int state
Definition: maze.c:121
#define PATH_MAX
Definition: types.h:280
#define ARRAY_SIZE(A)
Definition: main.h:20
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
D3D12_RESOURCE_STATES
Definition: d3d12.idl:903
@ D3D12_RESOURCE_STATE_GENERIC_READ
Definition: d3d12.idl:921
@ D3D12_RESOURCE_STATE_RESOLVE_DEST
Definition: d3d12.idl:917
@ D3D12_RESOURCE_STATE_INDEX_BUFFER
Definition: d3d12.idl:906
@ D3D12_RESOURCE_STATE_COPY_DEST
Definition: d3d12.idl:915
@ D3D12_RESOURCE_STATE_RENDER_TARGET
Definition: d3d12.idl:907
@ D3D12_RESOURCE_STATE_COPY_SOURCE
Definition: d3d12.idl:916
@ D3D12_RESOURCE_STATE_PIXEL_SHADER_RESOURCE
Definition: d3d12.idl:912
@ D3D12_RESOURCE_STATE_UNORDERED_ACCESS
Definition: d3d12.idl:908
@ D3D12_RESOURCE_STATE_INDIRECT_ARGUMENT
Definition: d3d12.idl:914
@ D3D12_RESOURCE_STATE_NON_PIXEL_SHADER_RESOURCE
Definition: d3d12.idl:911
@ D3D12_RESOURCE_STATE_DEPTH_WRITE
Definition: d3d12.idl:909
@ D3D12_RESOURCE_STATE_DEPTH_READ
Definition: d3d12.idl:910
@ D3D12_RESOURCE_STATE_STREAM_OUT
Definition: d3d12.idl:913
@ D3D12_RESOURCE_STATE_COMMON
Definition: d3d12.idl:904
@ D3D12_RESOURCE_STATE_PREDICATION
Definition: d3d12.idl:924
@ D3D12_RESOURCE_STATE_RESOLVE_SOURCE
Definition: d3d12.idl:918
@ D3D12_RESOURCE_STATE_VERTEX_AND_CONSTANT_BUFFER
Definition: d3d12.idl:905
@ D3D12_RESOURCE_STATE_PRESENT
Definition: d3d12.idl:923
D3D12_SHADER_COMPONENT_MAPPING
Definition: d3d12.idl:1475
@ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_1
Definition: d3d12.idl:1477
@ D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_0
Definition: d3d12.idl:1480
@ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_3
Definition: d3d12.idl:1479
@ D3D12_SHADER_COMPONENT_MAPPING_FORCE_VALUE_1
Definition: d3d12.idl:1481
@ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_0
Definition: d3d12.idl:1476
@ D3D12_SHADER_COMPONENT_MAPPING_FROM_MEMORY_COMPONENT_2
Definition: d3d12.idl:1478
D3D_FEATURE_LEVEL
Definition: d3dcommon.idl:102
@ D3D_FEATURE_LEVEL_10_0
Definition: d3dcommon.idl:107
@ D3D_FEATURE_LEVEL_9_1
Definition: d3dcommon.idl:104
@ D3D_FEATURE_LEVEL_12_2
Definition: d3dcommon.idl:113
@ D3D_FEATURE_LEVEL_9_2
Definition: d3dcommon.idl:105
@ D3D_FEATURE_LEVEL_9_3
Definition: d3dcommon.idl:106
@ D3D_FEATURE_LEVEL_10_1
Definition: d3dcommon.idl:108
@ D3D_FEATURE_LEVEL_1_0_CORE
Definition: d3dcommon.idl:103
@ D3D_FEATURE_LEVEL_12_1
Definition: d3dcommon.idl:112
@ D3D_FEATURE_LEVEL_12_0
Definition: d3dcommon.idl:111
@ D3D_FEATURE_LEVEL_11_0
Definition: d3dcommon.idl:109
@ D3D_FEATURE_LEVEL_11_1
Definition: d3dcommon.idl:110
#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
UINT64 uint64_t
Definition: types.h:77
DXGI_FORMAT dxgi_format
Definition: texture.c:51
static HINSTANCE instance
Definition: main.c:35
static const struct wined3d_format_channels formats[]
Definition: utils.c:82
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
Definition: object.c:1674
#define MAX_PATH
Definition: compat.h:34
DWORD WINAPI GetModuleFileNameA(HINSTANCE hModule, LPSTR lpFilename, DWORD nSize)
Definition: loader.c:539
unsigned int uintptr_t
Definition: corecrt.h:185
#define EINVAL
Definition: errno.h:44
#define ENOMEM
Definition: errno.h:35
#define PRIxPTR
Definition: inttypes.h:227
#define PRIx64
Definition: inttypes.h:29
unsigned char uint8_t
Definition: stdint.h:33
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
_ACRTIMP int __cdecl strncmp(const char *, const char *, size_t)
Definition: string.c:3335
_ACRTIMP char *__cdecl strrchr(const char *, int)
Definition: string.c:3303
struct png_info_def *typedef unsigned char **typedef struct png_info_def *typedef struct png_info_def *typedef struct png_info_def *typedef unsigned char ** row
Definition: typeof.h:78
DXGI_FORMAT
Definition: dxgiformat.idl:22
@ DXGI_FORMAT_R16_UINT
Definition: dxgiformat.idl:80
@ DXGI_FORMAT_B8G8R8A8_UNORM
Definition: dxgiformat.idl:110
@ DXGI_FORMAT_R8_TYPELESS
Definition: dxgiformat.idl:83
@ DXGI_FORMAT_BC3_UNORM_SRGB
Definition: dxgiformat.idl:101
@ DXGI_FORMAT_R32G32B32_TYPELESS
Definition: dxgiformat.idl:28
@ DXGI_FORMAT_BC3_TYPELESS
Definition: dxgiformat.idl:99
@ DXGI_FORMAT_R16G16_SNORM
Definition: dxgiformat.idl:60
@ DXGI_FORMAT_D32_FLOAT_S8X24_UINT
Definition: dxgiformat.idl:43
@ DXGI_FORMAT_R32G32B32A32_SINT
Definition: dxgiformat.idl:27
@ DXGI_FORMAT_BC5_UNORM
Definition: dxgiformat.idl:106
@ DXGI_FORMAT_BC1_UNORM
Definition: dxgiformat.idl:94
@ DXGI_FORMAT_R8G8_UINT
Definition: dxgiformat.idl:73
@ DXGI_FORMAT_R32G32B32A32_UINT
Definition: dxgiformat.idl:26
@ DXGI_FORMAT_R16G16B16A16_SNORM
Definition: dxgiformat.idl:36
@ DXGI_FORMAT_R32_FLOAT
Definition: dxgiformat.idl:64
@ DXGI_FORMAT_R16G16B16A16_UNORM
Definition: dxgiformat.idl:34
@ DXGI_FORMAT_R32_SINT
Definition: dxgiformat.idl:66
@ DXGI_FORMAT_R8G8_UNORM
Definition: dxgiformat.idl:72
@ DXGI_FORMAT_R16G16_UNORM
Definition: dxgiformat.idl:58
@ DXGI_FORMAT_BC1_UNORM_SRGB
Definition: dxgiformat.idl:95
@ DXGI_FORMAT_R16G16_SINT
Definition: dxgiformat.idl:61
@ DXGI_FORMAT_R24_UNORM_X8_TYPELESS
Definition: dxgiformat.idl:69
@ DXGI_FORMAT_R8G8B8A8_TYPELESS
Definition: dxgiformat.idl:50
@ DXGI_FORMAT_BC2_TYPELESS
Definition: dxgiformat.idl:96
@ DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS
Definition: dxgiformat.idl:44
@ DXGI_FORMAT_R32G32B32_FLOAT
Definition: dxgiformat.idl:29
@ DXGI_FORMAT_R32G32B32_SINT
Definition: dxgiformat.idl:31
@ DXGI_FORMAT_R32G32B32A32_TYPELESS
Definition: dxgiformat.idl:24
@ DXGI_FORMAT_B8G8R8A8_UNORM_SRGB
Definition: dxgiformat.idl:114
@ DXGI_FORMAT_B8G8R8X8_TYPELESS
Definition: dxgiformat.idl:115
@ DXGI_FORMAT_B8G8R8A8_TYPELESS
Definition: dxgiformat.idl:113
@ DXGI_FORMAT_UNKNOWN
Definition: dxgiformat.idl:23
@ DXGI_FORMAT_X24_TYPELESS_G8_UINT
Definition: dxgiformat.idl:70
@ DXGI_FORMAT_R16_SINT
Definition: dxgiformat.idl:82
@ DXGI_FORMAT_R16G16B16A16_UINT
Definition: dxgiformat.idl:35
@ DXGI_FORMAT_R16_UNORM
Definition: dxgiformat.idl:79
@ DXGI_FORMAT_R8G8B8A8_SINT
Definition: dxgiformat.idl:55
@ DXGI_FORMAT_D24_UNORM_S8_UINT
Definition: dxgiformat.idl:68
@ DXGI_FORMAT_R8G8B8A8_SNORM
Definition: dxgiformat.idl:54
@ DXGI_FORMAT_A8_UNORM
Definition: dxgiformat.idl:88
@ DXGI_FORMAT_R8G8B8A8_UINT
Definition: dxgiformat.idl:53
@ DXGI_FORMAT_R10G10B10A2_TYPELESS
Definition: dxgiformat.idl:46
@ DXGI_FORMAT_R32G32_FLOAT
Definition: dxgiformat.idl:39
@ DXGI_FORMAT_BC6H_UF16
Definition: dxgiformat.idl:118
@ DXGI_FORMAT_BC6H_SF16
Definition: dxgiformat.idl:119
@ DXGI_FORMAT_R10G10B10A2_UNORM
Definition: dxgiformat.idl:47
@ DXGI_FORMAT_R8_SNORM
Definition: dxgiformat.idl:86
@ DXGI_FORMAT_R16G16B16A16_TYPELESS
Definition: dxgiformat.idl:32
@ DXGI_FORMAT_R16G16B16A16_FLOAT
Definition: dxgiformat.idl:33
@ DXGI_FORMAT_BC7_TYPELESS
Definition: dxgiformat.idl:120
@ DXGI_FORMAT_R32_TYPELESS
Definition: dxgiformat.idl:62
@ DXGI_FORMAT_R8_UNORM
Definition: dxgiformat.idl:84
@ DXGI_FORMAT_R32G32_UINT
Definition: dxgiformat.idl:40
@ DXGI_FORMAT_R11G11B10_FLOAT
Definition: dxgiformat.idl:49
@ DXGI_FORMAT_R8G8B8A8_UNORM
Definition: dxgiformat.idl:51
@ DXGI_FORMAT_D16_UNORM
Definition: dxgiformat.idl:78
@ DXGI_FORMAT_R16_FLOAT
Definition: dxgiformat.idl:77
@ DXGI_FORMAT_R10G10B10A2_UINT
Definition: dxgiformat.idl:48
@ DXGI_FORMAT_BC6H_TYPELESS
Definition: dxgiformat.idl:117
@ DXGI_FORMAT_BC7_UNORM
Definition: dxgiformat.idl:121
@ DXGI_FORMAT_BC5_TYPELESS
Definition: dxgiformat.idl:105
@ DXGI_FORMAT_R32G32_SINT
Definition: dxgiformat.idl:41
@ DXGI_FORMAT_BC2_UNORM_SRGB
Definition: dxgiformat.idl:98
@ DXGI_FORMAT_R16_SNORM
Definition: dxgiformat.idl:81
@ DXGI_FORMAT_R8_SINT
Definition: dxgiformat.idl:87
@ DXGI_FORMAT_BC5_SNORM
Definition: dxgiformat.idl:107
@ DXGI_FORMAT_R32_UINT
Definition: dxgiformat.idl:65
@ DXGI_FORMAT_BC4_TYPELESS
Definition: dxgiformat.idl:102
@ DXGI_FORMAT_R32G32B32A32_FLOAT
Definition: dxgiformat.idl:25
@ DXGI_FORMAT_R24G8_TYPELESS
Definition: dxgiformat.idl:67
@ DXGI_FORMAT_R8G8_SINT
Definition: dxgiformat.idl:75
@ DXGI_FORMAT_R16_TYPELESS
Definition: dxgiformat.idl:76
@ DXGI_FORMAT_BC3_UNORM
Definition: dxgiformat.idl:100
@ DXGI_FORMAT_R32G32B32_UINT
Definition: dxgiformat.idl:30
@ DXGI_FORMAT_R16G16_TYPELESS
Definition: dxgiformat.idl:56
@ DXGI_FORMAT_R8G8B8A8_UNORM_SRGB
Definition: dxgiformat.idl:52
@ DXGI_FORMAT_R16G16_UINT
Definition: dxgiformat.idl:59
@ DXGI_FORMAT_D32_FLOAT
Definition: dxgiformat.idl:63
@ DXGI_FORMAT_R8G8_TYPELESS
Definition: dxgiformat.idl:71
@ DXGI_FORMAT_R16G16B16A16_SINT
Definition: dxgiformat.idl:37
@ DXGI_FORMAT_BC1_TYPELESS
Definition: dxgiformat.idl:93
@ DXGI_FORMAT_BC7_UNORM_SRGB
Definition: dxgiformat.idl:122
@ DXGI_FORMAT_BC2_UNORM
Definition: dxgiformat.idl:97
@ DXGI_FORMAT_R32G32_TYPELESS
Definition: dxgiformat.idl:38
@ DXGI_FORMAT_R32G8X24_TYPELESS
Definition: dxgiformat.idl:42
@ DXGI_FORMAT_B4G4R4A4_UNORM
Definition: dxgiformat.idl:138
@ DXGI_FORMAT_R16G16_FLOAT
Definition: dxgiformat.idl:57
@ DXGI_FORMAT_B5G6R5_UNORM
Definition: dxgiformat.idl:108
@ DXGI_FORMAT_BC4_UNORM
Definition: dxgiformat.idl:103
@ DXGI_FORMAT_X32_TYPELESS_G8X24_UINT
Definition: dxgiformat.idl:45
@ DXGI_FORMAT_R8G8_SNORM
Definition: dxgiformat.idl:74
@ DXGI_FORMAT_B8G8R8X8_UNORM_SRGB
Definition: dxgiformat.idl:116
@ DXGI_FORMAT_R8_UINT
Definition: dxgiformat.idl:85
@ DXGI_FORMAT_BC4_SNORM
Definition: dxgiformat.idl:104
@ DXGI_FORMAT_B5G5R5A1_UNORM
Definition: dxgiformat.idl:109
@ DXGI_FORMAT_B8G8R8X8_UNORM
Definition: dxgiformat.idl:111
static void depth_stencil(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
Definition: ffp_gl.c:766
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLenum src
Definition: glext.h:6340
GLuint buffer
Definition: glext.h:5915
GLsizeiptr size
Definition: glext.h:5919
GLenum GLenum dst
Definition: glext.h:6340
GLbitfield flags
Definition: glext.h:7161
GLenum GLenum GLenum GLenum mapping
Definition: glext.h:9031
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
GLfloat GLfloat GLfloat GLfloat h
Definition: glext.h:7723
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
Definition: glfuncs.h:240
GLsizei GLenum const GLvoid * lists
Definition: glfuncs.h:14
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
Definition: glfuncs.h:250
unsigned int UINT
Definition: sysinfo.c:13
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51
uint32_t entry
Definition: isohybrid.c:63
#define d
Definition: ke_i.h:81
static char * program_name
Definition: mkdosfs.c:519
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
struct task_struct * current
Definition: linux.c:32
static PVOID ptr
Definition: dispmode.c:27
static HANDLE PIO_APC_ROUTINE PVOID PIO_STATUS_BLOCK ULONG PVOID ULONG PVOID ULONG out_size
Definition: file.c:72
short WCHAR
Definition: pedump.c:58
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define offsetof(TYPE, MEMBER)
strncpy
Definition: string.h:335
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
Definition: list.h:236
#define memset(x, y, z)
Definition: compat.h:39
const char * debug_vk_memory_heap_flags(VkMemoryHeapFlags flags)
Definition: utils.c:728
HRESULT return_interface(void *iface, REFIID iface_iid, REFIID requested_iid, void **object)
Definition: utils.c:628
static bool dxgi_format_is_depth_stencil(DXGI_FORMAT dxgi_format)
Definition: utils.c:247
HRESULT vkd3d_load_vk_device_procs(struct vkd3d_vk_device_procs *procs, const struct vkd3d_vk_instance_procs *parent_procs, VkDevice device)
Definition: utils.c:857
DXGI_FORMAT vkd3d_get_dxgi_format(VkFormat format)
Definition: utils.c:530
static struct vkd3d_private_data * vkd3d_private_store_get_private_data(const struct vkd3d_private_store *store, const GUID *tag)
Definition: utils.c:939
const char * debug_vk_extent_3d(VkExtent3D extent)
Definition: utils.c:696
HRESULT vkd3d_set_private_data(struct vkd3d_private_store *store, const GUID *tag, unsigned int data_size, const void *data)
Definition: utils.c:1033
bool is_valid_resource_state(D3D12_RESOURCE_STATES state)
Definition: utils.c:590
#define LOAD_GLOBAL_PFN(name)
Definition: utils.c:804
static const struct vkd3d_format vkd3d_formats[]
Definition: utils.c:30
#define COLOR
Definition: utils.c:23
static const struct vkd3d_format vkd3d_depth_stencil_formats[]
Definition: utils.c:125
#define TYPELESS
Definition: utils.c:27
const char * debug_vk_memory_property_flags(VkMemoryPropertyFlags flags)
Definition: utils.c:745
#define DEPTH
Definition: utils.c:24
static void vkd3d_cleanup_format_compatibility_lists(struct d3d12_device *device)
Definition: utils.c:346
const char * debug_d3d12_shader_component_mapping(unsigned int mapping)
Definition: utils.c:682
HRESULT vkd3d_load_vk_instance_procs(struct vkd3d_vk_instance_procs *procs, const struct vkd3d_vk_global_procs *global_procs, VkInstance instance)
Definition: utils.c:834
HRESULT vkd3d_set_private_data_interface(struct vkd3d_private_store *store, const GUID *tag, const IUnknown *object)
Definition: utils.c:1046
VkResult vkd3d_set_vk_object_name_utf8(struct d3d12_device *device, uint64_t vk_object, VkDebugReportObjectTypeEXT vk_object_type, const char *name)
Definition: utils.c:1060
void vkd3d_format_copy_data(const struct vkd3d_format *format, const uint8_t *src, unsigned int src_row_pitch, unsigned int src_slice_pitch, uint8_t *dst, unsigned int dst_row_pitch, unsigned int dst_slice_pitch, unsigned int w, unsigned int h, unsigned int d)
Definition: utils.c:496
bool is_write_resource_state(D3D12_RESOURCE_STATES state)
Definition: utils.c:575
HRESULT hresult_from_vk_result(VkResult vr)
Definition: utils.c:784
HRESULT vkd3d_load_vk_global_procs(struct vkd3d_vk_global_procs *procs, PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr)
Definition: utils.c:811
bool is_valid_feature_level(D3D_FEATURE_LEVEL feature_level)
Definition: utils.c:548
bool vkd3d_get_program_name(char program_name[PATH_MAX])
Definition: utils.c:931
HRESULT hresult_from_errno(int rc)
Definition: utils.c:768
static HRESULT vkd3d_init_depth_stencil_formats(struct d3d12_device *device)
Definition: utils.c:354
#define DEPTH_STENCIL
Definition: utils.c:26
const struct vkd3d_format * vkd3d_get_format(const struct d3d12_device *device, DXGI_FORMAT dxgi_format, bool depth_stencil)
Definition: utils.c:442
static HRESULT vkd3d_init_format_compatibility_lists(struct d3d12_device *device)
Definition: utils.c:269
static const struct vkd3d_format * vkd3d_get_depth_stencil_format(const struct d3d12_device *device, DXGI_FORMAT dxgi_format)
Definition: utils.c:424
static const char * debug_d3d12_shader_component(D3D12_SHADER_COMPONENT_MAPPING component)
Definition: utils.c:660
static const struct vkd3d_format format_b4g4r4a4
Definition: utils.c:121
HRESULT vkd3d_init_format_info(struct d3d12_device *device)
Definition: utils.c:401
#define FLAG_TO_STR(f)
static HRESULT vkd3d_private_store_set_private_data(struct vkd3d_private_store *store, const GUID *tag, const void *data, unsigned int data_size, bool is_object)
Definition: utils.c:953
VkFormat vkd3d_get_vk_format(DXGI_FORMAT format)
Definition: utils.c:520
static void vkd3d_cleanup_depth_stencil_formats(struct d3d12_device *device)
Definition: utils.c:393
#define STENCIL
Definition: utils.c:25
const char * debug_gpu_handle(D3D12_GPU_DESCRIPTOR_HANDLE handle)
Definition: utils.c:691
const char * debug_vk_queue_flags(VkQueueFlags flags)
Definition: utils.c:704
#define SINT
Definition: utils.c:28
HRESULT vkd3d_set_vk_object_name(struct d3d12_device *device, uint64_t vk_object, VkDebugReportObjectTypeEXT vk_object_type, const WCHAR *name)
Definition: utils.c:1077
const char * debug_d3d12_box(const D3D12_BOX *box)
Definition: utils.c:650
void vkd3d_cleanup_format_info(struct d3d12_device *device)
Definition: utils.c:414
const struct vkd3d_format * vkd3d_find_uint_format(const struct d3d12_device *device, DXGI_FORMAT dxgi_format)
Definition: utils.c:465
static bool is_power_of_two(unsigned int x)
Definition: utils.c:585
const char * debug_cpu_handle(D3D12_CPU_DESCRIPTOR_HANDLE handle)
Definition: utils.c:645
HRESULT vkd3d_get_private_data(struct vkd3d_private_store *store, const GUID *tag, unsigned int *out_size, void *out)
Definition: utils.c:994
string real_path(const char *path)
Definition: utils.cpp:43
int is_object(const type_t *iface)
Definition: header.c:972
#define TRACE(s)
Definition: solgame.cpp:4
VkFormatFeatureFlags optimalTilingFeatures
Definition: vulkan.h:8746
Definition: palette.c:466
struct list entry
Definition: wpp.c:51
Definition: devices.h:37
Definition: name.c:39
Definition: ecma_167.h:138
VkFormat vk_formats[VKD3D_MAX_COMPATIBLE_FORMAT_COUNT]
VkFormat vk_format
enum vkd3d_format_type type
struct vkd3d_mutex mutex
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr
Definition: vkd3d_private.h:78
const char * vkd3d_dbg_sprintf(const char *fmt,...) VKD3D_PRINTF_FUNC(1
static void vkd3d_mutex_unlock(struct vkd3d_mutex *lock)
Definition: vkd3d_common.h:584
static void vkd3d_mutex_lock(struct vkd3d_mutex *lock)
Definition: vkd3d_common.h:572
#define VKD3D_ASSERT(cond)
Definition: vkd3d_common.h:49
static void * vkd3d_calloc(size_t count, size_t size)
Definition: vkd3d_memory.h:43
static void vkd3d_free(void *ptr)
Definition: vkd3d_memory.h:52
static void * vkd3d_malloc(size_t size)
Definition: vkd3d_memory.h:28
@ VKD3D_FORMAT_TYPE_UINT
@ VKD3D_FORMAT_TYPE_TYPELESS
static void vkd3d_private_data_destroy(struct vkd3d_private_data *data)
#define VKD3D_MAX_COMPATIBLE_FORMAT_COUNT
Definition: vkd3d_private.h:54
char * vkd3d_strdup_w_utf8(const WCHAR *wstr, size_t wchar_size)
Definition: utf8.c:159
VkFlags VkMemoryPropertyFlags
Definition: vulkan.h:1063
@ VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT
Definition: vulkan.h:3137
@ VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD
Definition: vulkan.h:3777
@ VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD
Definition: vulkan.h:3776
@ VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
Definition: vulkan.h:3774
@ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
Definition: vulkan.h:3772
@ VK_MEMORY_PROPERTY_PROTECTED_BIT
Definition: vulkan.h:3775
@ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
Definition: vulkan.h:3770
@ VK_MEMORY_PROPERTY_HOST_CACHED_BIT
Definition: vulkan.h:3773
@ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
Definition: vulkan.h:3771
VkFlags VkQueueFlags
Definition: vulkan.h:1116
PFN_vkVoidFunction(VKAPI_PTR * PFN_vkGetInstanceProcAddr)(VkInstance, const char *)
Definition: vulkan.h:18143
void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties *pFormatProperties)
VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(VkDevice device, const VkDebugMarkerObjectNameInfoEXT *pNameInfo)
VkDebugReportObjectTypeEXT
Definition: vulkan.h:2328
VkFlags VkMemoryHeapFlags
Definition: vulkan.h:1061
VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties)
@ VK_IMAGE_ASPECT_STENCIL_BIT
Definition: vulkan.h:3367
@ VK_IMAGE_ASPECT_DEPTH_BIT
Definition: vulkan.h:3366
@ VK_MEMORY_HEAP_MULTI_INSTANCE_BIT
Definition: vulkan.h:3749
@ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
Definition: vulkan.h:3748
PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *pName)
@ VK_QUEUE_SPARSE_BINDING_BIT
Definition: vulkan.h:4534
@ VK_QUEUE_PROTECTED_BIT
Definition: vulkan.h:4535
@ VK_QUEUE_COMPUTE_BIT
Definition: vulkan.h:4532
@ VK_QUEUE_TRANSFER_BIT
Definition: vulkan.h:4533
@ VK_QUEUE_VIDEO_ENCODE_BIT_KHR
Definition: vulkan.h:4537
@ VK_QUEUE_VIDEO_DECODE_BIT_KHR
Definition: vulkan.h:4536
@ VK_QUEUE_GRAPHICS_BIT
Definition: vulkan.h:4531
VkResult
Definition: vulkan.h:4639
@ VK_ERROR_EXTENSION_NOT_PRESENT
Definition: vulkan.h:4665
@ VK_ERROR_DEVICE_LOST
Definition: vulkan.h:4668
@ VK_SUCCESS
Definition: vulkan.h:4672
@ VK_ERROR_OUT_OF_HOST_MEMORY
Definition: vulkan.h:4671
@ VK_ERROR_OUT_OF_DEVICE_MEMORY
Definition: vulkan.h:4670
VkFormat
Definition: vulkan.h:2815
@ VK_FORMAT_R16G16B16A16_UNORM
Definition: vulkan.h:2907
@ VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT
Definition: vulkan.h:3118
@ VK_FORMAT_A1R5G5B5_UNORM_PACK16
Definition: vulkan.h:2824
@ VK_FORMAT_R8G8B8A8_SRGB
Definition: vulkan.h:2859
@ VK_FORMAT_R32G32B32_UINT
Definition: vulkan.h:2920
@ VK_FORMAT_R16G16_SNORM
Definition: vulkan.h:2894
@ VK_FORMAT_BC2_UNORM_BLOCK
Definition: vulkan.h:2951
@ VK_FORMAT_D24_UNORM_S8_UINT
Definition: vulkan.h:2945
@ VK_FORMAT_D32_SFLOAT
Definition: vulkan.h:2942
@ VK_FORMAT_B8G8R8A8_UNORM
Definition: vulkan.h:2860
@ VK_FORMAT_R16G16B16A16_SNORM
Definition: vulkan.h:2908
@ VK_FORMAT_R8G8_SNORM
Definition: vulkan.h:2833
@ VK_FORMAT_BC7_SRGB_BLOCK
Definition: vulkan.h:2962
@ VK_FORMAT_R16G16_SFLOAT
Definition: vulkan.h:2899
@ VK_FORMAT_R32G32_SFLOAT
Definition: vulkan.h:2919
@ VK_FORMAT_R8_SNORM
Definition: vulkan.h:2826
@ VK_FORMAT_BC2_SRGB_BLOCK
Definition: vulkan.h:2952
@ VK_FORMAT_R16_SFLOAT
Definition: vulkan.h:2892
@ VK_FORMAT_R8G8_UNORM
Definition: vulkan.h:2832
@ VK_FORMAT_BC1_RGBA_SRGB_BLOCK
Definition: vulkan.h:2950
@ VK_FORMAT_R32_SINT
Definition: vulkan.h:2915
@ VK_FORMAT_R16G16_UINT
Definition: vulkan.h:2897
@ VK_FORMAT_BC3_UNORM_BLOCK
Definition: vulkan.h:2953
@ VK_FORMAT_R8_UNORM
Definition: vulkan.h:2825
@ VK_FORMAT_R32G32B32A32_SFLOAT
Definition: vulkan.h:2925
@ VK_FORMAT_R32G32B32A32_UINT
Definition: vulkan.h:2923
@ VK_FORMAT_BC6H_SFLOAT_BLOCK
Definition: vulkan.h:2960
@ VK_FORMAT_A2B10G10R10_UINT_PACK32
Definition: vulkan.h:2884
@ VK_FORMAT_R5G6B5_UNORM_PACK16
Definition: vulkan.h:2820
@ VK_FORMAT_R32_SFLOAT
Definition: vulkan.h:2916
@ VK_FORMAT_R16G16B16A16_SINT
Definition: vulkan.h:2912
@ VK_FORMAT_A2B10G10R10_UNORM_PACK32
Definition: vulkan.h:2880
@ VK_FORMAT_B8G8R8A8_SRGB
Definition: vulkan.h:2866
@ VK_FORMAT_R8G8B8A8_UNORM
Definition: vulkan.h:2853
@ VK_FORMAT_R16G16_SINT
Definition: vulkan.h:2898
@ VK_FORMAT_R8G8_SINT
Definition: vulkan.h:2837
@ VK_FORMAT_UNDEFINED
Definition: vulkan.h:2816
@ VK_FORMAT_R16_SINT
Definition: vulkan.h:2891
@ VK_FORMAT_BC4_SNORM_BLOCK
Definition: vulkan.h:2956
@ VK_FORMAT_R32G32B32_SINT
Definition: vulkan.h:2921
@ VK_FORMAT_R16_UNORM
Definition: vulkan.h:2886
@ VK_FORMAT_BC6H_UFLOAT_BLOCK
Definition: vulkan.h:2959
@ VK_FORMAT_R8_SINT
Definition: vulkan.h:2830
@ VK_FORMAT_BC7_UNORM_BLOCK
Definition: vulkan.h:2961
@ VK_FORMAT_D16_UNORM
Definition: vulkan.h:2940
@ VK_FORMAT_R16_UINT
Definition: vulkan.h:2890
@ VK_FORMAT_R8_UINT
Definition: vulkan.h:2829
@ VK_FORMAT_R16G16B16A16_SFLOAT
Definition: vulkan.h:2913
@ VK_FORMAT_R16G16_UNORM
Definition: vulkan.h:2893
@ VK_FORMAT_BC5_UNORM_BLOCK
Definition: vulkan.h:2957
@ VK_FORMAT_R8G8B8A8_SINT
Definition: vulkan.h:2858
@ VK_FORMAT_R32G32_UINT
Definition: vulkan.h:2917
@ VK_FORMAT_R8G8B8A8_SNORM
Definition: vulkan.h:2854
@ VK_FORMAT_R16G16B16A16_UINT
Definition: vulkan.h:2911
@ VK_FORMAT_R32G32B32A32_SINT
Definition: vulkan.h:2924
@ VK_FORMAT_BC3_SRGB_BLOCK
Definition: vulkan.h:2954
@ VK_FORMAT_R32G32B32_SFLOAT
Definition: vulkan.h:2922
@ VK_FORMAT_R8G8B8A8_UINT
Definition: vulkan.h:2857
@ VK_FORMAT_BC1_RGBA_UNORM_BLOCK
Definition: vulkan.h:2949
@ VK_FORMAT_R16_SNORM
Definition: vulkan.h:2887
@ VK_FORMAT_B10G11R11_UFLOAT_PACK32
Definition: vulkan.h:2938
@ VK_FORMAT_R8G8_UINT
Definition: vulkan.h:2836
@ VK_FORMAT_BC5_SNORM_BLOCK
Definition: vulkan.h:2958
@ VK_FORMAT_BC4_UNORM_BLOCK
Definition: vulkan.h:2955
@ VK_FORMAT_D32_SFLOAT_S8_UINT
Definition: vulkan.h:2946
@ VK_FORMAT_R32G32_SINT
Definition: vulkan.h:2918
@ VK_FORMAT_R32_UINT
Definition: vulkan.h:2914
VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkInstance *pInstance)
@ VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT
Definition: vulkan.h:5026
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383
#define VK_CALL(f)
Definition: wined3d_vk.h:272
#define S_FALSE
Definition: winerror.h:3451
#define DXGI_ERROR_NOT_FOUND
Definition: winerror.h:7122
#define DXGI_ERROR_MORE_DATA
Definition: winerror.h:7123