80 WARN(
"Out of host memory.\n");
83 WARN(
"Out of device memory.\n");
86 WARN(
"Device lost.\n");
89 WARN(
"Extension not present.\n");
92 FIXME(
"Unhandled VkResult %d.\n", vr);
104 WARN(
"Failed to load vulkan-1.dll.\n");
149 if (!(queue_properties =
calloc(
count,
sizeof(*queue_properties))))
158 *queue_family_index =
i;
160 free(queue_properties);
164 free(queue_properties);
166 WARN(
"Failed to find graphics queue.\n");
246 if (!(chunk_vk =
malloc(
sizeof(*chunk_vk))))
277 if (chunk_vk->
c.map_ptr)
349 if (vk_info->
vk_ops.vkGetPhysicalDeviceFeatures2)
367 VkPhysicalDevice physical_device;
374 if (!(device_vk =
calloc(1,
sizeof(*device_vk))))
387 queue_info.
flags = 0;
417#define VK_DEVICE_PFN(name) \
418 if (!(device_vk->vk_info.vk_ops.name = (void *)VK_CALL(vkGetDeviceProcAddr(vk_device, #name)))) \
420 WARN("Could not get device proc addr for '" #name "'.\n"); \
424#define VK_DEVICE_EXT_PFN(name) \
425 device_vk->vk_info.vk_ops.name = (void *)VK_CALL(vkGetDeviceProcAddr(vk_device, #name));
427#undef VK_DEVICE_EXT_PFN
433 WARN(
"Failed to initialise allocator.\n");
441 WARN(
"Failed to initialize device, hr %#lx.\n",
hr);
479 if (!
device->context_count)
517 if (sampler_anisotropy)
572 if (sampler_anisotropy)
614 WARN(
"Failed to initialise context.\n");
619 device->adapter->vertex_pipe,
device->adapter->fragment_pipe)))
621 ERR(
"Failed to allocate shader private data, hr %#lx.\n",
hr);
628 ERR(
"Failed to add the newly created context to the context list.\n");
638 ERR(
"Failed to create CPU blitter.\n");
662 TRACE(
"device_vk %p.\n", device_vk);
675 device->shader_backend->shader_free_private(
device, &context_vk->
c);
706 return bo->b.map_ptr;
711 if ((slab =
bo->slab))
715 ERR(
"Failed to map slab.\n");
725 ERR(
"Failed to map chunk.\n");
740 return bo->
b.map_ptr;
752 TRACE(
"Not unmapping BO %p.\n",
bo);
760 if (
bo->b.client_map_count)
763 TRACE(
"BO %p is still in use by a client thread; not unmapping.\n",
bo);
769 if ((slab =
bo->slab))
800 TRACE(
"slab_vk %p, context_vk %p.\n", slab_vk, context_vk);
807 ERR(
"Failed to map slab.\n");
893 VkCommandBuffer vk_command_buffer;
900 if (!
data->buffer_object)
917 bo_user->
valid =
false;
928 ERR(
"Failed to create new buffer object.\n");
937 ERR(
"Failed to get command buffer.\n");
951 vk_barrier.size =
size;
976 ERR(
"Failed to map bo.\n");
1005 if (!
data->buffer_object)
1011 if (!bo->
b.coherent)
1013 for (
i = 0;
i < range_count; ++
i)
1031 VkCommandBuffer vk_command_buffer;
1040 if (src_bo && dst_bo)
1044 ERR(
"Failed to get command buffer.\n");
1057 vk_barrier[0].buffer = src_bo->
vk_buffer;
1063 vk_barrier[1].buffer = dst_bo->
vk_buffer;
1065 for (
i = 0;
i < range_count; ++
i)
1073 vk_barrier[0].offset =
region.srcOffset;
1074 vk_barrier[0].size =
region.size;
1076 vk_barrier[1].offset =
region.dstOffset;
1077 vk_barrier[1].size =
region.size;
1106 for (
i = 0;
i < range_count; ++
i)
1114 ERR(
"Failed to create staging bo.\n");
1134 ERR(
"Failed to create staging bo.\n");
1151 for (
i = 0;
i < range_count; ++
i)
1164 if (!(bo =
data->buffer_object))
1195 size =
texture->sub_resources[sub_resource_idx].size;
1198 if (!(bo_vk =
malloc(
sizeof(*bo_vk))))
1203 WARN(
"Failed to create Vulkan buffer.\n");
1208 if (!bo_vk->
b.map_ptr)
1211 ERR(
"Failed to map bo.\n");
1214 addr->buffer_object = &bo_vk->
b;
1231 TRACE(
"device %p, desc %p, state_parent %p, parent %p, parent_ops %p, swapchain %p.\n",
1234 if (!(swapchain_vk =
calloc(1,
sizeof(*swapchain_vk))))
1240 WARN(
"Failed to initialise swapchain, hr %#lx.\n",
hr);
1245 TRACE(
"Created swapchain %p.\n", swapchain_vk);
1246 *swapchain = &swapchain_vk->
s;
1267 if (!(memory_type_mask & (1u <<
i)))
1283 TRACE(
"device %p, desc %p, data %p, parent %p, parent_ops %p, buffer %p.\n",
1286 if (!(buffer_vk =
calloc(1,
sizeof(*buffer_vk))))
1291 WARN(
"Failed to initialise buffer, hr %#lx.\n",
hr);
1296 TRACE(
"Created buffer %p.\n", buffer_vk);
1308 TRACE(
"buffer_vk %p.\n", buffer_vk);
1329 TRACE(
"device %p, desc %p, layer_count %u, level_count %u, flags %#x, parent %p, parent_ops %p, texture %p.\n",
1336 layer_count, level_count,
flags,
parent, parent_ops)))
1338 WARN(
"Failed to initialise texture, hr %#lx.\n",
hr);
1343 TRACE(
"Created texture %p.\n", texture_vk);
1355 TRACE(
"texture_vk %p.\n", texture_vk);
1365 texture->resource.parent_ops->wined3d_object_destroyed(
texture->resource.parent);
1381 TRACE(
"desc %s, resource %p, parent %p, parent_ops %p, view %p.\n",
1384 if (!(view_vk =
calloc(1,
sizeof(*view_vk))))
1389 WARN(
"Failed to initialise view, hr %#lx.\n",
hr);
1394 TRACE(
"Created render target view %p.\n", view_vk);
1395 *
view = &view_vk->
v;
1422 device_vk =
ctx->device_vk;
1426 if (
ctx->vk_buffer_view)
1431 *
ctx->vk_buffer_view, *
ctx->command_buffer_id);
1439 if (
ctx->vk_image_view)
1444 *
ctx->vk_image_view, *
ctx->command_buffer_id);
1452 if (
ctx->bo_user &&
ctx->bo_user->valid)
1454 if (
ctx->vk_counter_bo &&
ctx->vk_counter_bo->vk_buffer)
1456 if (
ctx->vk_counter_view)
1461 *
ctx->vk_counter_view, *
ctx->command_buffer_id);
1479 VkBufferView *vk_counter_view,
uint64_t *command_buffer_id,
void *view_vk)
1492 ctx->object = view_vk;
1505 TRACE(
"view_vk %p.\n", view_vk);
1519 TRACE(
"desc %s, resource %p, parent %p, parent_ops %p, view %p.\n",
1527 WARN(
"Failed to initialise view, hr %#lx.\n",
hr);
1544 VkImageView *vk_image_view =
NULL;
1546 TRACE(
"srv_vk %p.\n", srv_vk);
1564 TRACE(
"desc %s, resource %p, parent %p, parent_ops %p, view %p.\n",
1572 WARN(
"Failed to initialise view, hr %#lx.\n",
hr);
1589 VkImageView *vk_image_view =
NULL;
1591 TRACE(
"uav_vk %p.\n", uav_vk);
1607 TRACE(
"device %p, desc %p, parent %p, parent_ops %p, sampler %p.\n",
1610 if (!(sampler_vk =
calloc(1,
sizeof(*sampler_vk))))
1615 TRACE(
"Created sampler %p.\n", sampler_vk);
1626 TRACE(
"sampler_vk %p.\n", sampler_vk);
1640 TRACE(
"sampler_vk %p.\n", sampler_vk);
1648 TRACE(
"device %p, type %#x, parent %p, parent_ops %p, query %p.\n",
1658 TRACE(
"query_vk %p.\n", query_vk);
1660 query_vk->
q.query_ops->query_destroy(&query_vk->
q);
1667 TRACE(
"query_vk %p.\n", query_vk);
1676 TRACE(
"context_vk %p.\n", context_vk);
1687 VkCommandBuffer vk_command_buffer;
1701 ERR(
"Failed to apply draw state.\n");
1706 if (context_vk->
c.transform_feedback_active)
1709 if (context_vk->
c.transform_feedback_paused)
1730 instance_count =
parameters->u.direct.instance_count;
1731 if (!instance_count)
1743 if (context_vk->
c.transform_feedback_active)
1747 context_vk->
c.transform_feedback_paused = 1;
1748 context_vk->
c.transform_feedback_active = 0;
1762 VkCommandBuffer vk_command_buffer;
1774 ERR(
"Failed to apply compute state.\n");
1785 bo->
b.buffer_offset +
parameters->u.indirect.offset));
1862 "wine_get_version" );
1868 ptr = wine_get_version();
1896 const char *enabled_extensions[],
const struct wined3d_vk_info *vk_info)
1904 *extension_count = 0;
1906 if (!(pfn_vkEnumerateInstanceExtensionProperties
1909 WARN(
"Failed to get 'vkEnumerateInstanceExtensionProperties'.\n");
1913 if ((vr = pfn_vkEnumerateInstanceExtensionProperties(
NULL, &
count,
NULL)) < 0)
1918 if (!(extensions =
calloc(
count,
sizeof(*extensions))))
1920 WARN(
"Out of memory.\n");
1923 if ((vr = pfn_vkEnumerateInstanceExtensionProperties(
NULL, &
count, extensions)) < 0)
1929 TRACE(
"Vulkan instance extensions reported:\n");
1983 ERR(
"Failed to get 'vkCreateInstance'.\n");
1997 memset(&app_info, 0,
sizeof(app_info));
2005 memset(&instance_info, 0,
sizeof(instance_info));
2023#define LOAD_INSTANCE_PFN(name) \
2024 if (!(vk_ops->name = (void *)VK_CALL(vkGetInstanceProcAddr(instance, #name)))) \
2026 WARN("Could not get instance proc addr for '" #name "'.\n"); \
2029#define LOAD_INSTANCE_OPT_PFN(name) \
2030 vk_ops->name = (void *)VK_CALL(vkGetInstanceProcAddr(instance, #name));
2031#define VK_INSTANCE_PFN LOAD_INSTANCE_PFN
2032#define VK_INSTANCE_EXT_PFN LOAD_INSTANCE_OPT_PFN
2033#define VK_DEVICE_PFN LOAD_INSTANCE_PFN
2034#define VK_DEVICE_EXT_PFN LOAD_INSTANCE_OPT_PFN
2037#undef VK_INSTANCE_PFN
2038#undef VK_INSTANCE_EXT_PFN
2040#undef VK_DEVICE_EXT_PFN
2042#define MAP_INSTANCE_FUNCTION(core_pfn, ext_pfn) \
2043 if (!vk_ops->core_pfn) \
2044 vk_ops->core_pfn = (void *)VK_CALL(vkGetInstanceProcAddr(instance, #ext_pfn));
2047#undef MAP_INSTANCE_FUNCTION
2054 if (vk_ops->vkDestroyInstance)
2062 VkPhysicalDevice physical_devices[1];
2073 WARN(
"No physical device.\n");
2079 FIXME(
"Multiple physical devices available.\n");
2089 return physical_devices[0];
2109 UINT64 vram_bytes, sysmem_bytes;
2119 for (
i = 0, vram_bytes = 0, sysmem_bytes = 0;
i < memory_properties->
memoryHeapCount; ++
i)
2121 heap = &memory_properties->memoryHeaps[
i];
2122 TRACE(
"Memory heap [%u]: flags %#x, size 0x%s.\n",
2125 vram_bytes +=
heap->size;
2127 sysmem_bytes +=
heap->size;
2135 TRACE(
"Memory type [%u]: flags %#x, heap %u.\n",
i,
type->propertyFlags,
type->heapIndex);
2141 if (!gpu_description)
2143 FIXME(
"Failed to retrieve GPU description for device %s %04x:%04x.\n",
2156 adapter_vk->
a.d3d_info.feature_level, vram_bytes, sysmem_bytes);
2161 return info->features2.features.occlusionQueryPrecise;
2166 return shader_model >= 3
2167 &&
info->features2.features.independentBlend;
2172 return shader_model >= 4
2173 &&
info->features2.features.multiViewport
2174 &&
info->features2.features.geometryShader
2175 &&
info->features2.features.depthClamp
2176 &&
info->features2.features.depthBiasClamp
2177 &&
info->features2.features.pipelineStatisticsQuery
2178 &&
info->features2.features.shaderClipDistance
2179 &&
info->features2.features.shaderCullDistance
2180 &&
info->draw_parameters_features.shaderDrawParameters
2181 &&
info->vertex_divisor_features.vertexAttributeInstanceRateDivisor
2182 &&
info->vertex_divisor_features.vertexAttributeInstanceRateZeroDivisor;
2187 return info->features2.features.imageCubeArray;
2192 return shader_model >= 5
2193 &&
info->features2.features.multiDrawIndirect
2194 &&
info->features2.features.drawIndirectFirstInstance
2195 &&
info->features2.features.fragmentStoresAndAtomics
2196 &&
info->features2.features.shaderImageGatherExtended
2197 &&
info->features2.features.tessellationShader;
2202 return info->features2.features.vertexPipelineStoresAndAtomics;
2208 unsigned int shader_model;
2218 if (shader_model <= 1)
2249 unsigned int sample_counts_mask;
2254 if (!
device_info.dynamic_state_features.extendedDynamicState)
2257 if (!
device_info.host_query_reset_features.hostQueryReset)
2263 adapter_vk->
a.shader_backend->shader_get_caps(&adapter_vk->
a, &
shader_caps);
2264 adapter_vk->
a.vertex_pipe->vp_get_caps(&adapter_vk->
a, &vertex_caps);
2306 d3d_info->
pbo =
true;
2328 dynamic_state3 = &
device_info.dynamic_state3_features;
2345 unsigned int count, enable_count,
i,
j;
2346 const char **enabled_extensions =
NULL;
2399 if (!(extensions =
calloc(
count,
sizeof(*extensions))))
2401 ERR(
"Failed to allocate extension properties array.\n");
2411 TRACE(
"Vulkan device extensions reported:\n");
2422 for (
j = 0, found =
false;
j <
count; ++
j)
2435 WARN(
"Required extension '%s' is not available.\n",
info[
i].
name);
2441 enable_count + 1,
sizeof(*enabled_extensions)))
2443 ERR(
"Failed to allocate enabled extensions array.\n");
2446 enabled_extensions[enable_count++] =
info[
i].name;
2452 for (
j = 0;
j < enable_count; ++
j)
2470 free(enabled_extensions);
2477 unsigned int ordinal,
unsigned int wined3d_creation_flags)
2485 TRACE(
"adapter_vk %p, ordinal %u, wined3d_creation_flags %#x.\n",
2486 adapter_vk,
ordinal, wined3d_creation_flags);
2490 WARN(
"Failed to initialize Vulkan.\n");
2500 memset(&id_properties, 0,
sizeof(id_properties));
2503 properties2.
pNext = &id_properties;
2505 if (vk_info->
vk_ops.vkGetPhysicalDeviceProperties2)
2516 luid = &primary_luid;
2533 TRACE(
"Reporting (fake) driver version 0x%08x-0x%08x.\n",
2534 adapter_vk->
a.driver_info.version_high, adapter_vk->
a.driver_info.version_low);
2556 unsigned int wined3d_creation_flags)
2560 if (!(adapter_vk =
calloc(1,
sizeof(*adapter_vk))))
2569 TRACE(
"Created adapter %p.\n", adapter_vk);
2571 return &adapter_vk->
a;
COMPILER_DEPENDENT_UINT64 UINT64
static void get_physical_device_info(const struct wined3d_adapter_vk *adapter_vk, struct wined3d_physical_device_info *info)
static BOOL wined3d_init_vulkan(struct wined3d_vk_info *vk_info)
static void adapter_vk_dispatch_compute(struct wined3d_device *device, const struct wined3d_state *state, const struct wined3d_dispatch_parameters *parameters)
static HRESULT adapter_vk_create_query(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query)
static struct wined3d_context * adapter_vk_acquire_context(struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
static void add_structure(VkPhysicalDeviceFeatures2 *features2, void *s)
static void adapter_vk_destroy_device(struct wined3d_device *device)
VkAccessFlags vk_access_mask_from_buffer_usage(VkBufferUsageFlags usage)
static bool wined3d_adapter_vk_init_device_extensions(struct wined3d_adapter_vk *adapter_vk)
static bool adapter_vk_alloc_bo(struct wined3d_device *device, struct wined3d_resource *resource, unsigned int sub_resource_idx, struct wined3d_bo_address *addr)
static HRESULT adapter_vk_create_buffer(struct wined3d_device *device, const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_buffer **buffer)
static void wined3d_view_vk_destroy(struct wined3d_device *device, VkBufferView *vk_buffer_view, VkImageView *vk_image_view, struct wined3d_bo_user *bo_user, struct wined3d_bo_vk *vk_counter_bo, VkBufferView *vk_counter_view, uint64_t *command_buffer_id, void *view_vk)
static BOOL adapter_vk_check_format(const struct wined3d_adapter *adapter, const struct wined3d_format *adapter_format, const struct wined3d_format *rt_format, const struct wined3d_format *ds_format)
static const char * debug_vk_version(uint32_t version)
static void wined3d_unload_vulkan(struct wined3d_vk_info *vk_info)
static HRESULT adapter_vk_create_sampler(struct wined3d_device *device, const struct wined3d_sampler_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_sampler **sampler)
static HRESULT wined3d_select_vulkan_queue_family(const struct wined3d_adapter_vk *adapter_vk, uint32_t *queue_family_index, uint32_t *timestamp_bits)
static void adapter_vk_destroy_buffer(struct wined3d_buffer *buffer)
static void adapter_vk_destroy_swapchain(struct wined3d_swapchain *swapchain)
unsigned int wined3d_adapter_vk_get_memory_type_index(const struct wined3d_adapter_vk *adapter_vk, uint32_t memory_type_mask, VkMemoryPropertyFlags flags)
static void adapter_vk_destroy_query(struct wined3d_query *query)
static void wined3d_disable_vulkan_features(struct wined3d_physical_device_info *info)
static void adapter_vk_uninit_3d_cs(void *object)
static void * adapter_vk_map_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, size_t size, uint32_t map_flags)
static void flush_bo_range(struct wined3d_context_vk *context_vk, struct wined3d_bo_vk *bo, unsigned int offset, unsigned int size)
unsigned int core_since_version
static const struct wined3d_adapter_vk * wined3d_adapter_vk_const(const struct wined3d_adapter *adapter)
static void adapter_vk_get_wined3d_caps(const struct wined3d_adapter *adapter, struct wined3d_caps *caps)
static void adapter_vk_destroy_bo(struct wined3d_context *context, struct wined3d_bo *bo)
static void adapter_vk_flush_bo_address(struct wined3d_context *context, const struct wined3d_const_bo_address *data, size_t size)
#define MAP_INSTANCE_FUNCTION(core_pfn, ext_pfn)
static bool feature_level_9_2_supported(const struct wined3d_physical_device_info *info)
void * wined3d_bo_slab_vk_map(struct wined3d_bo_slab_vk *slab_vk, struct wined3d_context_vk *context_vk)
static void adapter_vk_uninit_3d(struct wined3d_device *device)
void wined3d_bo_slab_vk_unmap(struct wined3d_bo_slab_vk *slab_vk, struct wined3d_context_vk *context_vk)
static HRESULT adapter_vk_create_texture(struct wined3d_device *device, const struct wined3d_resource_desc *desc, unsigned int layer_count, unsigned int level_count, uint32_t flags, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_texture **texture)
static HRESULT adapter_vk_create_device(struct wined3d *wined3d, const struct wined3d_adapter *adapter, enum wined3d_device_type device_type, HWND focus_window, unsigned int flags, BYTE surface_alignment, const enum wined3d_feature_level *levels, unsigned int level_count, struct wined3d_device_parent *device_parent, struct wined3d_device **device)
static enum wined3d_display_driver guess_display_driver(enum wined3d_pci_vendor vendor)
static bool feature_level_10_1_supported(const struct wined3d_physical_device_info *info, unsigned int shader_model)
static BOOL wined3d_load_vulkan(struct wined3d_vk_info *vk_info)
static const struct wined3d_adapter_ops wined3d_adapter_vk_ops
struct wined3d_adapter * wined3d_adapter_vk_create(unsigned int ordinal, unsigned int wined3d_creation_flags)
static void wined3d_sampler_vk_destroy_object(void *object)
static bool feature_level_11_1_supported(const struct wined3d_physical_device_info *info)
static void * wined3d_bo_vk_map(struct wined3d_bo_vk *bo, struct wined3d_context_vk *context_vk)
static BOOL wined3d_adapter_vk_init(struct wined3d_adapter_vk *adapter_vk, unsigned int ordinal, unsigned int wined3d_creation_flags)
void adapter_vk_copy_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *dst, const struct wined3d_bo_address *src, unsigned int range_count, const struct wined3d_range *ranges, uint32_t map_flags)
static HRESULT adapter_vk_init_3d(struct wined3d_device *device)
static void adapter_vk_flush_context(struct wined3d_context *context)
static VkPhysicalDevice get_vulkan_physical_device(struct wined3d_vk_info *vk_info)
static BOOL enable_vulkan_instance_extensions(uint32_t *extension_count, const char *enabled_extensions[], const struct wined3d_vk_info *vk_info)
static bool adapter_vk_init_driver_info(struct wined3d_adapter_vk *adapter_vk, const VkPhysicalDeviceProperties *properties)
VkPipelineStageFlags vk_pipeline_stage_mask_from_buffer_usage(VkBufferUsageFlags usage)
static HRESULT hresult_from_vk_result(VkResult vr)
static const struct wined3d_state_entry_template misc_state_template_vk[]
static void wined3d_bo_slab_vk_unlock(struct wined3d_bo_slab_vk *slab_vk, struct wined3d_context_vk *context_vk)
static void wined3d_query_vk_destroy_object(void *object)
static void wined3d_bo_vk_unmap(struct wined3d_bo_vk *bo, struct wined3d_context_vk *context_vk)
static enum wined3d_feature_level feature_level_from_caps(const struct wined3d_physical_device_info *info, const struct shader_caps *shader_caps)
static void adapter_vk_destroy_rendertarget_view(struct wined3d_rendertarget_view *view)
static bool feature_level_9_3_supported(const struct wined3d_physical_device_info *info, unsigned int shader_model)
static HRESULT adapter_vk_create_rendertarget_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_rendertarget_view **view)
static bool feature_level_10_supported(const struct wined3d_physical_device_info *info, unsigned int shader_model)
static const struct wined3d_allocator_ops wined3d_allocator_vk_ops
static bool feature_level_11_supported(const struct wined3d_physical_device_info *info, unsigned int shader_model)
static void adapter_vk_release_context(struct wined3d_context *context)
static void wined3d_view_vk_destroy_object(void *object)
static void wined3d_adapter_vk_init_d3d_info(struct wined3d_adapter_vk *adapter_vk, uint32_t wined3d_creation_flags)
static void adapter_vk_generate_mipmap(struct wined3d_context *context, struct wined3d_shader_resource_view *view)
static struct wined3d_allocator_chunk * wined3d_allocator_vk_create_chunk(struct wined3d_allocator *allocator, struct wined3d_context *context, unsigned int memory_type, size_t chunk_size)
static HRESULT adapter_vk_create_swapchain(struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_swapchain **swapchain)
static HRESULT adapter_vk_create_unordered_access_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_unordered_access_view **view)
static void adapter_vk_draw_primitive(struct wined3d_device *device, const struct wined3d_state *state, const struct wined3d_draw_parameters *parameters)
static void adapter_vk_destroy_shader_resource_view(struct wined3d_shader_resource_view *view)
static unsigned int wined3d_get_wine_vk_version(void)
static void adapter_vk_destroy(struct wined3d_adapter *adapter)
static const struct @332 vulkan_instance_extensions[]
static void wined3d_allocator_vk_destroy_chunk(struct wined3d_allocator_chunk *chunk)
static void adapter_vk_destroy_texture(struct wined3d_texture *texture)
static void adapter_vk_destroy_sampler(struct wined3d_sampler *sampler)
static void adapter_vk_destroy_unordered_access_view(struct wined3d_unordered_access_view *view)
static HRESULT adapter_vk_create_shader_resource_view(const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_shader_resource_view **view)
static void adapter_vk_clear_uav(struct wined3d_context *context, struct wined3d_unordered_access_view *view, const struct wined3d_uvec4 *clear_value, bool fp)
static void adapter_vk_unmap_bo_address(struct wined3d_context *context, const struct wined3d_bo_address *data, unsigned int range_count, const struct wined3d_range *ranges)
static void wined3d_bo_slab_vk_lock(struct wined3d_bo_slab_vk *slab_vk, struct wined3d_context_vk *context_vk)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
VkCommandBuffer wined3d_context_vk_apply_compute_state(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, struct wined3d_buffer_vk *indirect_vk)
BOOL wined3d_context_vk_create_bo(struct wined3d_context_vk *context_vk, VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags memory_type, struct wined3d_bo_vk *bo)
void wined3d_context_vk_destroy_vk_buffer_view(struct wined3d_context_vk *context_vk, VkBufferView vk_view, uint64_t command_buffer_id)
void wined3d_context_vk_end_current_render_pass(struct wined3d_context_vk *context_vk)
void wined3d_context_vk_destroy_vk_image_view(struct wined3d_context_vk *context_vk, VkImageView vk_view, uint64_t command_buffer_id)
void wined3d_context_vk_destroy_vk_sampler(struct wined3d_context_vk *context_vk, VkSampler vk_sampler, uint64_t command_buffer_id)
VkDeviceMemory wined3d_context_vk_allocate_vram_chunk_memory(struct wined3d_context_vk *context_vk, unsigned int pool, size_t size)
void * wined3d_allocator_chunk_vk_map(struct wined3d_allocator_chunk_vk *chunk_vk, struct wined3d_context_vk *context_vk)
VkCommandBuffer wined3d_context_vk_apply_draw_state(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, struct wined3d_buffer_vk *indirect_vk, bool indexed)
VkCommandBuffer wined3d_context_vk_get_command_buffer(struct wined3d_context_vk *context_vk)
void wined3d_context_vk_destroy_bo(struct wined3d_context_vk *context_vk, const struct wined3d_bo_vk *bo)
void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
void wined3d_context_vk_submit_command_buffer(struct wined3d_context_vk *context_vk, unsigned int wait_semaphore_count, const VkSemaphore *wait_semaphores, const VkPipelineStageFlags *wait_stages, unsigned int signal_semaphore_count, const VkSemaphore *signal_semaphores)
void wined3d_allocator_chunk_vk_unmap(struct wined3d_allocator_chunk_vk *chunk_vk, struct wined3d_context_vk *context_vk)
void wined3d_context_vk_wait_command_buffer(struct wined3d_context_vk *context_vk, uint64_t id)
HRESULT wined3d_context_vk_init(struct wined3d_context_vk *context_vk, struct wined3d_swapchain *swapchain)
void wined3d_cs_destroy_object(struct wined3d_cs *cs, void(*callback)(void *object), void *object)
static HINSTANCE instance
VkMemoryPropertyFlags vk_memory_type_from_access_flags(uint32_t access, uint32_t usage)
HRESULT wined3d_buffer_vk_init(struct wined3d_buffer_vk *buffer_vk, struct wined3d_device *device, const struct wined3d_buffer_desc *desc, const struct wined3d_sub_resource_data *data, void *parent, const struct wined3d_parent_ops *parent_ops)
void wined3d_buffer_cleanup(struct wined3d_buffer *buffer)
VkBufferUsageFlags vk_buffer_usage_from_bind_flags(uint32_t bind_flags)
bool wined3d_device_vk_create_null_resources(struct wined3d_device_vk *device_vk, struct wined3d_context_vk *context_vk)
void wined3d_device_destroy_default_samplers(struct wined3d_device *device)
ULONG CDECL wined3d_device_decref(struct wined3d_device *device)
HRESULT wined3d_device_init(struct wined3d_device *device, struct wined3d *wined3d, unsigned int adapter_idx, enum wined3d_device_type device_type, HWND focus_window, unsigned int flags, BYTE surface_alignment, const enum wined3d_feature_level *levels, unsigned int level_count, const BOOL *supported_extensions, struct wined3d_device_parent *device_parent)
BOOL device_context_add(struct wined3d_device *device, struct wined3d_context *context)
void wined3d_device_vk_destroy_null_views(struct wined3d_device_vk *device_vk, struct wined3d_context_vk *context_vk)
void wined3d_device_vk_destroy_null_resources(struct wined3d_device_vk *device_vk, struct wined3d_context_vk *context_vk)
void wined3d_device_cleanup(struct wined3d_device *device)
void device_context_remove(struct wined3d_device *device, struct wined3d_context *context)
bool wined3d_device_vk_create_null_views(struct wined3d_device_vk *device_vk, struct wined3d_context_vk *context_vk)
ULONG CDECL wined3d_device_incref(struct wined3d_device *device)
void wined3d_device_create_default_samplers(struct wined3d_device *device, struct wined3d_context *context)
HRESULT wined3d_query_vk_create(struct wined3d_device *device, enum wined3d_query_type type, void *parent, const struct wined3d_parent_ops *parent_ops, struct wined3d_query **query)
struct wined3d_blitter * wined3d_cpu_blitter_create(void)
void wined3d_texture_cleanup(struct wined3d_texture *texture)
void wined3d_texture_sub_resources_destroyed(struct wined3d_texture *texture)
HRESULT wined3d_texture_vk_init(struct wined3d_texture_vk *texture_vk, struct wined3d_device *device, const struct wined3d_resource_desc *desc, unsigned int layer_count, unsigned int level_count, uint32_t flags, void *parent, const struct wined3d_parent_ops *parent_ops)
void wined3d_vk_blitter_create(struct wined3d_blitter **next)
bool wined3d_allocator_init(struct wined3d_allocator *allocator, size_t pool_count, const struct wined3d_allocator_ops *allocator_ops)
void wined3d_allocator_cleanup(struct wined3d_allocator *allocator)
BOOL wined3d_get_primary_adapter_luid(LUID *luid)
BOOL wined3d_adapter_vk_init_format_info(struct wined3d_adapter_vk *adapter_vk, const struct wined3d_vk_info *vk_info)
const char * wined3d_debug_vkresult(VkResult vr)
const char * debug_uvec4(const struct wined3d_uvec4 *v)
bool wined3d_allocator_chunk_init(struct wined3d_allocator_chunk *chunk, struct wined3d_allocator *allocator)
BOOL wined3d_array_reserve(void **elements, SIZE_T *capacity, SIZE_T count, SIZE_T size)
void wined3d_allocator_chunk_cleanup(struct wined3d_allocator_chunk *chunk)
const char * wined3d_debug_view_desc(const struct wined3d_view_desc *d, const struct wined3d_resource *resource)
HRESULT wined3d_rendertarget_view_vk_init(struct wined3d_rendertarget_view_vk *view_vk, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
HRESULT wined3d_shader_resource_view_vk_init(struct wined3d_shader_resource_view_vk *view_vk, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
void wined3d_shader_resource_view_cleanup(struct wined3d_shader_resource_view *view)
void wined3d_device_vk_uav_clear_state_init(struct wined3d_device_vk *device_vk)
void wined3d_shader_resource_view_vk_generate_mipmap(struct wined3d_shader_resource_view_vk *srv_vk, struct wined3d_context_vk *context_vk)
void wined3d_unordered_access_view_cleanup(struct wined3d_unordered_access_view *view)
void wined3d_unordered_access_view_vk_clear(struct wined3d_unordered_access_view_vk *view_vk, const struct wined3d_uvec4 *clear_value, struct wined3d_context_vk *context_vk, bool fp)
void wined3d_device_vk_uav_clear_state_cleanup(struct wined3d_device_vk *device_vk)
void wined3d_rendertarget_view_cleanup(struct wined3d_rendertarget_view *view)
HRESULT wined3d_unordered_access_view_vk_init(struct wined3d_unordered_access_view_vk *view_vk, const struct wined3d_view_desc *desc, struct wined3d_resource *resource, void *parent, const struct wined3d_parent_ops *parent_ops)
const char * wine_dbg_sprintf(const char *format,...)
#define GetProcAddress(x, y)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
static API_VERSION api_version
static const WCHAR version[]
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
_ACRTIMP int __cdecl atoi(const char *)
_ACRTIMP int __cdecl strcmp(const char *, const char *)
void state_nop(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
GLuint GLuint GLsizei count
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum const GLvoid * addr
const GLuint const GLclampf * priorities
GLboolean GLboolean GLboolean GLboolean a
GLsizeiptr const GLvoid GLenum usage
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
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
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
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
void wined3d_sampler_vk_init(struct wined3d_sampler_vk *sampler_vk, struct wined3d_device *device, const struct wined3d_sampler_desc *desc, void *parent, const struct wined3d_parent_ops *parent_ops)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
const struct wined3d_fragment_pipe_ops * wined3d_spirv_fragment_pipe_init_vk(void)
const struct wined3d_shader_backend_ops * wined3d_spirv_shader_backend_init_vk(void)
const struct wined3d_vertex_pipe_ops * wined3d_spirv_vertex_pipe_init_vk(void)
const char * pApplicationName
VkAccessFlags srcAccessMask
VkAccessFlags dstAccessMask
uint32_t srcQueueFamilyIndex
uint32_t dstQueueFamilyIndex
uint32_t queueFamilyIndex
VkDeviceQueueCreateFlags flags
const float * pQueuePriorities
const char *const * ppEnabledExtensionNames
uint32_t enabledExtensionCount
const VkApplicationInfo * pApplicationInfo
VkMemoryPropertyFlags propertyFlags
VkBool32 extendedDynamicState3CoverageModulationMode
VkBool32 extendedDynamicState3SampleMask
VkBool32 extendedDynamicState3CoverageModulationTable
VkBool32 extendedDynamicState3ProvokingVertexMode
VkBool32 extendedDynamicState3CoverageToColorLocation
VkBool32 extendedDynamicState3RasterizationSamples
VkBool32 extendedDynamicState3ConservativeRasterizationMode
VkBool32 extendedDynamicState3CoverageModulationTableEnable
VkBool32 extendedDynamicState3PolygonMode
VkBool32 extendedDynamicState3ColorBlendAdvanced
VkBool32 extendedDynamicState3TessellationDomainOrigin
VkBool32 extendedDynamicState3LineStippleEnable
VkBool32 extendedDynamicState3CoverageToColorEnable
VkBool32 extendedDynamicState3DepthClipEnable
VkBool32 extendedDynamicState3AlphaToCoverageEnable
VkBool32 extendedDynamicState3ViewportSwizzle
VkBool32 extendedDynamicState3ColorBlendEnable
VkBool32 extendedDynamicState3DepthClipNegativeOneToOne
VkBool32 extendedDynamicState3LineRasterizationMode
VkBool32 extendedDynamicState3AlphaToOneEnable
VkBool32 extendedDynamicState3RasterizationStream
VkBool32 extendedDynamicState3DepthClampEnable
VkBool32 extendedDynamicState3SampleLocationsEnable
VkBool32 extendedDynamicState3ShadingRateImageEnable
VkBool32 extendedDynamicState3ExtraPrimitiveOverestimationSize
VkBool32 extendedDynamicState3ViewportWScalingEnable
VkBool32 extendedDynamicState3ColorWriteMask
VkBool32 extendedDynamicState3ColorBlendEquation
VkBool32 extendedDynamicState3CoverageReductionMode
VkBool32 extendedDynamicState3RepresentativeFragmentTestEnable
VkBool32 extendedDynamicState3LogicOpEnable
VkPhysicalDeviceFeatures features
VkBool32 shaderStorageBufferArrayDynamicIndexing
VkBool32 shaderResourceMinLod
VkBool32 sparseResidency2Samples
VkBool32 textureCompressionASTC_LDR
VkBool32 shaderStorageImageMultisample
VkBool32 sparseResidency16Samples
VkBool32 shaderSampledImageArrayDynamicIndexing
VkBool32 shaderResourceResidency
VkBool32 sparseResidency4Samples
VkBool32 shaderStorageImageArrayDynamicIndexing
VkBool32 sparseResidencyImage2D
VkBool32 textureCompressionETC2
VkBool32 sparseResidencyImage3D
VkBool32 shaderTessellationAndGeometryPointSize
VkBool32 shaderUniformBufferArrayDynamicIndexing
VkBool32 inheritedQueries
VkBool32 sparseResidencyAliased
VkBool32 sparseResidency8Samples
VkBool32 sparseResidencyBuffer
uint8_t driverUUID[VK_UUID_SIZE]
uint8_t deviceLUID[VK_LUID_SIZE]
uint8_t deviceUUID[VK_UUID_SIZE]
uint32_t maxImageDimension2D
VkSampleCountFlags framebufferColorSampleCounts
uint32_t maxImageDimension3D
VkSampleCountFlags framebufferStencilSampleCounts
float maxSamplerAnisotropy
VkSampleCountFlags framebufferNoAttachmentsSampleCounts
VkSampleCountFlags framebufferDepthSampleCounts
VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]
char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]
VkBool32 shaderDrawParameters
uint32_t timestampValidBits
unsigned int varying_count
unsigned int ps_uniform_count
unsigned int vs_uniform_count
PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr
PFN_vkCreateInstance vkCreateInstance
unsigned int device_extension_count
VkPhysicalDeviceMemoryProperties memory_properties
const char ** device_extensions
struct wined3d_vk_info vk_info
VkPhysicalDevice physical_device
VkPhysicalDeviceLimits device_limits
struct wined3d_allocator_chunk c
struct wined3d_bo * buffer_object
struct wined3d_allocator_block * memory
uint64_t command_buffer_id
VkMemoryPropertyFlags memory_type
DWORD MaxVertexShader30InstructionSlots
struct wined3d_vertex_shader_caps VS20Caps
DWORD VolumeTextureAddressCaps
DWORD MaxPixelShader30InstructionSlots
DWORD VolumeTextureFilterCaps
struct wined3d_pixel_shader_caps PS20Caps
DWORD CubeTextureFilterCaps
struct wined3d_ddraw_caps ddraw_caps
VkDeviceSize vk_so_offsets[WINED3D_MAX_STREAM_OUTPUT_BUFFERS]
struct wined3d_command_buffer_vk current_command_buffer
struct wined3d_bo_vk vk_so_counter_bo
uint64_t completed_command_buffer_id
const struct wined3d_vk_info * vk_info
unsigned int command_buffer_work_count
VkBuffer vk_so_counters[WINED3D_MAX_STREAM_OUTPUT_BUFFERS]
unsigned int sub_resource_idx
uint32_t subpixel_viewport
uint32_t gpu_push_constants
struct fragment_caps ffp_fragment_caps
uint32_t viewport_array_index_any_shader
uint32_t full_ffp_varyings
uint32_t srgb_read_control
enum wined3d_feature_level feature_level
struct wined3d_d3d_limits limits
uint32_t shader_double_precision
uint32_t wined3d_creation_flags
uint32_t emulated_flatshading
uint32_t draw_base_vertex_offset
uint32_t shader_output_interpolation
float filling_convention_offset
DWORD multisample_draw_location
uint32_t srgb_write_control
uint32_t unconditional_npot
CRITICAL_SECTION allocator_cs
uint32_t vk_queue_family_index
struct wined3d_vk_info vk_info
struct wined3d_context_vk context_vk
struct wined3d_allocator allocator
unsigned int group_count_y
unsigned int group_count_x
unsigned int group_count_z
VkPhysicalDeviceExtendedDynamicState2FeaturesEXT dynamic_state2_features
VkPhysicalDeviceShaderDrawParametersFeatures draw_parameters_features
VkPhysicalDeviceExtendedDynamicStateFeaturesEXT dynamic_state_features
VkPhysicalDeviceExtendedDynamicState3FeaturesEXT dynamic_state3_features
VkPhysicalDeviceTransformFeedbackFeaturesEXT xfb_features
VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT vertex_divisor_features
VkPhysicalDeviceHostQueryResetFeatures host_query_reset_features
VkPhysicalDeviceFeatures2 features2
uint64_t command_buffer_id
struct wined3d_rendertarget_view v
VkImageView vk_image_view
const struct wined3d_parent_ops * parent_ops
VkDescriptorImageInfo vk_image_info
uint64_t command_buffer_id
struct wined3d_view_vk view_vk
struct wined3d_shader_resource_view v
struct list shader_list_entry
struct wined3d_swapchain s
struct wined3d_swapchain * swapchain
VkBufferView vk_counter_view
struct wined3d_bo_vk counter_bo
struct wined3d_unordered_access_view v
struct wined3d_view_vk view_vk
BOOL emulated_flatshading
DWORD max_vertex_blend_matrices
struct wined3d_view_vk_destroy_ctx * free
VkBufferView * vk_counter_view
VkBufferView * vk_buffer_view
struct wined3d_bo_vk * vk_counter_bo
VkImageView * vk_image_view
struct wined3d_device_vk * device_vk
uint64_t * command_buffer_id
struct wined3d_bo_user * bo_user
struct wined3d_bo_user bo_user
VkBufferView vk_buffer_view
VkDescriptorImageInfo vk_image_info
union wined3d_view_vk::@365 u
uint64_t command_buffer_id
bool dynamic_patch_vertex_count
bool dynamic_multisample_state
BOOL supported[WINED3D_VK_EXT_COUNT]
bool dynamic_rasterizer_state
#define CONTAINING_RECORD(address, type, field)
void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties *pMemoryProperties)
#define VK_API_VERSION_1_0
#define VK_API_VERSION_1_3
VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(VkPhysicalDevice physicalDevice, const char *pLayerName, uint32_t *pPropertyCount, VkExtensionProperties *pProperties)
VkFlags VkMemoryPropertyFlags
VkFlags VkPipelineStageFlags
void VKAPI_CALL vkDestroyDevice(VkDevice device, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 *pFeatures)
#define VK_VERSION_MAJOR(version)
void VKAPI_CALL vkCmdCopyBuffer(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy *pRegions)
@ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME
void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(VkPhysicalDevice physicalDevice, uint32_t *pQueueFamilyPropertyCount, VkQueueFamilyProperties *pQueueFamilyProperties)
void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties)
#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME
#define VK_API_VERSION_1_2
void VKAPI_CALL vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks *pAllocator)
#define VK_VERSION_PATCH(version)
void VKAPI_CALL vkGetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures *pFeatures)
#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME
VkResult(VKAPI_PTR * PFN_vkEnumerateInstanceVersion)(uint32_t *)
VkResult VKAPI_CALL vkCreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDevice *pDevice)
#define VK_KHR_SURFACE_EXTENSION_NAME
void VKAPI_CALL vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks *pAllocator)
VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange *pMemoryRanges)
void VKAPI_CALL vkCmdDrawIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME
void VKAPI_CALL vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks *pAllocator)
#define VK_VERSION_MINOR(version)
void VKAPI_CALL vkCmdDrawIndexed(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance)
#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME
@ VK_MEMORY_HEAP_DEVICE_LOCAL_BIT
PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(VkInstance instance, const char *pName)
void VKAPI_CALL vkCmdDraw(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance)
#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME
void VKAPI_CALL vkGetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2 *pFeatures)
void VKAPI_CALL vkCmdDispatchIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset)
#define VK_MAKE_VERSION(major, minor, patch)
void VKAPI_CALL vkGetDeviceQueue(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue *pQueue)
#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME
#define VK_KHR_MAINTENANCE1_EXTENSION_NAME
#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME
void VKAPI_CALL vkGetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2 *pProperties)
#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME
#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME
VkFlags VkBufferUsageFlags
@ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
@ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
@ VK_BUFFER_USAGE_TRANSFER_DST_BIT
@ VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
@ VK_BUFFER_USAGE_INDEX_BUFFER_BIT
@ VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
@ VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_VERTEX_BUFFER_BIT
@ VK_BUFFER_USAGE_TRANSFER_SRC_BIT
void VKAPI_CALL vkDestroyInstance(VkInstance instance, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkCmdDispatch(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
VkResult(VKAPI_PTR * PFN_vkEnumerateInstanceExtensionProperties)(const char *, uint32_t *, VkExtensionProperties *)
VkResult VKAPI_CALL vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void **ppData)
@ VK_ERROR_EXTENSION_NOT_PRESENT
@ VK_ERROR_OUT_OF_HOST_MEMORY
@ VK_ERROR_OUT_OF_DEVICE_MEMORY
@ VK_ACCESS_HOST_READ_BIT
@ VK_ACCESS_TRANSFER_WRITE_BIT
@ VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT
@ VK_ACCESS_INDIRECT_COMMAND_READ_BIT
@ VK_ACCESS_TRANSFER_READ_BIT
@ VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT
@ VK_ACCESS_SHADER_WRITE_BIT
@ VK_ACCESS_SHADER_READ_BIT
@ VK_ACCESS_UNIFORM_READ_BIT
@ VK_ACCESS_INDEX_READ_BIT
@ VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT
@ VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT
VkResult VKAPI_CALL vkEnumeratePhysicalDevices(VkInstance instance, uint32_t *pPhysicalDeviceCount, VkPhysicalDevice *pPhysicalDevices)
VkResult VKAPI_CALL vkFlushMappedMemoryRanges(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange *pMemoryRanges)
#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME
void VKAPI_CALL vkCmdEndTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer *pCounterBuffers, const VkDeviceSize *pCounterBufferOffsets)
void VKAPI_CALL vkGetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties *pProperties)
#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME
void VKAPI_CALL vkCmdDrawIndexedIndirect(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride)
#define VK_KHR_SWAPCHAIN_EXTENSION_NAME
@ VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT
@ VK_PIPELINE_STAGE_VERTEX_INPUT_BIT
@ VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
@ VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT
@ VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT
@ VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT
@ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
@ VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT
@ VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
@ VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT
@ VK_PIPELINE_STAGE_HOST_BIT
@ VK_PIPELINE_STAGE_TRANSFER_BIT
@ VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT
void VKAPI_CALL vkCmdPipelineBarrier(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier *pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier *pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier *pImageMemoryBarriers)
void VKAPI_CALL vkCmdBeginTransformFeedbackEXT(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer *pCounterBuffers, const VkDeviceSize *pCounterBufferOffsets)
void VKAPI_CALL vkUnmapMemory(VkDevice device, VkDeviceMemory memory)
#define VK_API_VERSION_1_1
VkResult VKAPI_CALL vkCreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkInstance *pInstance)
#define VK_KHR_MAINTENANCE2_EXTENSION_NAME
#define VK_QUEUE_FAMILY_IGNORED
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT
@ VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT
@ VK_STRUCTURE_TYPE_APPLICATION_INFO
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT
@ VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2
@ VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES
@ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES
@ VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
@ VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
#define success(from, fromstr, to, tostr)
const struct wined3d_gpu_description * wined3d_get_gpu_description(enum wined3d_pci_vendor vendor, enum wined3d_pci_device device)
void wined3d_adapter_cleanup(struct wined3d_adapter *adapter)
ssize_t adapter_adjust_mapped_memory(struct wined3d_adapter *adapter, ssize_t size)
BOOL wined3d_adapter_init(struct wined3d_adapter *adapter, unsigned int ordinal, const LUID *luid, const struct wined3d_adapter_ops *adapter_ops)
bool wined3d_driver_info_init(struct wined3d_driver_info *driver_info, const struct wined3d_gpu_description *gpu_desc, enum wined3d_feature_level feature_level, UINT64 vram_bytes, UINT64 sysmem_bytes)
const struct wined3d_gpu_description * wined3d_get_user_override_gpu_description(enum wined3d_pci_vendor vendor, enum wined3d_pci_device device)
HRESULT wined3d_swapchain_vk_init(struct wined3d_swapchain_vk *swapchain_vk, struct wined3d_device *device, const struct wined3d_swapchain_desc *desc, struct wined3d_swapchain_state_parent *state_parent, void *parent, const struct wined3d_parent_ops *parent_ops)
void wined3d_swapchain_vk_cleanup(struct wined3d_swapchain_vk *swapchain_vk)
#define WINED3DPTEXTURECAPS_MIPCUBEMAP
#define WINED3DPMISCCAPS_POSTBLENDSRGBCONVERT
#define WINED3DPRASTERCAPS_ANISOTROPY
#define WINED3DPTADDRESSCAPS_WRAP
static unsigned int wined3d_log2i(unsigned int x)
#define WINEDDSCAPS_NONLOCALVIDMEM
#define WINED3DPS20_MAX_NUMTEMPS
@ WINED3D_RS_DITHERENABLE
@ WINED3D_RS_MULTISAMPLEANTIALIAS
#define WINEDDSCAPS_OWNDC
#define WINED3DSTENCILCAPS_DECR
#define WINED3DVS20_MAX_NUMTEMPS
#define WINED3DPTFILTERCAPS_LINEARMIPNEAREST
#define WINEDDSCAPS_VIDEOMEMORY
#define WINED3DPMISCCAPS_INDEPENDENTWRITEMASKS
#define WINED3DPTFILTERCAPS_MAGFLINEAR
#define WINED3DPTEXTURECAPS_CUBEMAP_POW2
#define WINED3DPTADDRESSCAPS_INDEPENDENTUV
#define WINED3DPTFILTERCAPS_MIPNEAREST
#define WINED3DPTEXTURECAPS_MIPVOLUMEMAP
#define WINED3DPTADDRESSCAPS_CLAMP
#define WINED3DPBLENDCAPS_SRCALPHASAT
#define WINED3DCAPS2_CANGENMIPMAP
#define WINED3DPRASTERCAPS_MIPMAPLODBIAS
#define WINED3D_MAX_RENDER_TARGETS
#define WINED3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS
#define WINED3DPTFILTERCAPS_MINFANISOTROPIC
#define WINED3DPTEXTURECAPS_VOLUMEMAP
#define WINED3DPTFILTERCAPS_MIPFLINEAR
#define WINED3DPMISCCAPS_SEPARATEALPHABLEND
#define WINEDDSCAPS_LOCALVIDMEM
#define WINED3DDTCAPS_FLOAT16_2
#define WINED3DPTADDRESSCAPS_MIRRORONCE
#define WINED3DPTFILTERCAPS_LINEARMIPLINEAR
#define WINED3DPTADDRESSCAPS_BORDER
#define WINED3DDTCAPS_FLOAT16_4
#define WINED3DPTADDRESSCAPS_MIRROR
#define WINED3DPTFILTERCAPS_NEAREST
#define WINED3DPTFILTERCAPS_MAGFPOINT
#define WINED3D_MAP_DISCARD
#define WINED3D_MAP_WRITE
#define WINED3DPTFILTERCAPS_LINEAR
#define WINED3DPTFILTERCAPS_MAGFANISOTROPIC
#define WINEDDSCAPS_FRONTBUFFER
#define WINEDDSCAPS_COMPLEX
@ WINED3D_FEATURE_LEVEL_11
@ WINED3D_FEATURE_LEVEL_10_1
@ WINED3D_FEATURE_LEVEL_8
@ WINED3D_FEATURE_LEVEL_7
@ WINED3D_FEATURE_LEVEL_9_3
@ WINED3D_FEATURE_LEVEL_10
@ WINED3D_FEATURE_LEVEL_11_1
@ WINED3D_FEATURE_LEVEL_9_1
@ WINED3D_FEATURE_LEVEL_9_2
#define WINED3D_MAX_CLIP_DISTANCES
@ WINED3D_SHADER_TYPE_HULL
@ WINED3D_SHADER_TYPE_PIXEL
@ WINED3D_SHADER_TYPE_GEOMETRY
@ WINED3D_SHADER_TYPE_DOMAIN
@ WINED3D_SHADER_TYPE_COMPUTE
@ WINED3D_SHADER_TYPE_VERTEX
#define WINED3DPMISCCAPS_BLENDOP
#define WINED3DPTFILTERCAPS_MIPLINEAR
#define WINED3D_MAP_NOOVERWRITE
#define WINED3DPTFILTERCAPS_MINFPOINT
#define WINED3DPTEXTURECAPS_VOLUMEMAP_POW2
#define WINED3DPBLENDCAPS_BLENDFACTOR
#define WINED3DSTENCILCAPS_INCR
#define WINED3DPTEXTURECAPS_CUBEMAP
#define WINED3DPTFILTERCAPS_MIPFPOINT
#define WINED3DMAX30SHADERINSTRUCTIONS
#define WINED3DPTFILTERCAPS_MINFLINEAR
#define WINEDDSCAPS_3DDEVICE
#define WINEDDSCAPS_BACKBUFFER
#define WINED3DSTENCILCAPS_TWOSIDED
BOOL wined3d_get_app_name(char *app_name, unsigned int app_name_size)
#define STATE_BASEVERTEXINDEX
#define STATE_DEPTH_STENCIL
#define STATE_STENCIL_REF
#define STATE_CONSTANT_BUFFER(a)
static void * wined3d_texture_allocate_object_memory(SIZE_T s, SIZE_T level_count, SIZE_T layer_count)
#define STATE_GRAPHICS_SHADER_RESOURCE_BINDING
static void wined3d_device_bo_map_lock(struct wined3d_device *device)
#define WINED3D_SHADER_CAP_DOUBLE_PRECISION
static void wined3d_cs_finish(struct wined3d_cs *cs, enum wined3d_cs_queue_id queue_id)
#define STATE_STREAM_OUTPUT
static void wined3d_device_bo_map_unlock(struct wined3d_device *device)
static void wined3d_not_from_cs(const struct wined3d_cs *cs)
#define WINED3D_SHADER_CAP_OUTPUT_INTERPOLATION
#define STATE_DEPTH_BOUNDS
#define MAX_PERSISTENT_MAPPED_BYTES
static void context_release(struct wined3d_context *context)
#define STATE_BLEND_FACTOR
#define WINED3D_SHADER_CAP_FULL_FFP_VARYINGS
#define WINED3D_ALLOCATOR_CHUNK_SIZE
#define STATE_SAMPLE_MASK
#define STATE_SCISSORRECT
#define STATE_COMPUTE_SHADER_RESOURCE_BINDING
#define wined3d_lock_init(lock, name)
#define WINED3D_LOCATION_TEXTURE_RGB
#define STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING
static void wined3d_from_cs(const struct wined3d_cs *cs)
static void wined3d_lock_cleanup(CRITICAL_SECTION *lock)
#define STATE_INDEXBUFFER
static struct wined3d_context * context_acquire(struct wined3d_device *device, struct wined3d_texture *texture, unsigned int sub_resource_idx)
@ WINED3D_CS_QUEUE_DEFAULT
#define STATE_FRAMEBUFFER
#define STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING
static struct wined3d_texture * texture_from_resource(struct wined3d_resource *resource)
static void wined3d_device_vk_allocator_unlock(struct wined3d_device_vk *device_vk)
static void wined3d_device_vk_allocator_lock(struct wined3d_device_vk *device_vk)
#define VK_DEVICE_FUNCS()
@ WINED3D_VK_KHR_SHADER_DRAW_PARAMETERS
@ WINED3D_VK_EXT_EXTENDED_DYNAMIC_STATE
@ WINED3D_VK_EXT_EXTENDED_DYNAMIC_STATE2
@ WINED3D_VK_EXT_SHADER_STENCIL_EXPORT
@ WINED3D_VK_KHR_MAINTENANCE2
@ WINED3D_VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE
@ WINED3D_VK_EXT_VERTEX_ATTRIBUTE_DIVISOR
@ WINED3D_VK_EXT_HOST_QUERY_RESET
@ WINED3D_VK_EXT_TRANSFORM_FEEDBACK
@ WINED3D_VK_EXT_EXTENDED_DYNAMIC_STATE3
static struct wined3d_device_vk * wined3d_device_vk_from_allocator(struct wined3d_allocator *allocator)
static void wined3d_context_vk_reference_bo(const struct wined3d_context_vk *context_vk, struct wined3d_bo_vk *bo)
#define VK_INSTANCE_FUNCS()