52 WARN(
"Unhandled compare operation %#x.\n",
op);
54 FIXME(
"Unhandled compare operation %#x.\n",
op);
149 FIXME(
"Unhandled blend op %#x.\n",
op);
181 FIXME(
"Unhandled cull mode %#x.\n",
mode);
271 WARN(
"Unhandled stencil operation %#x.\n",
op);
273 FIXME(
"Unhandled stencil operation %#x.\n",
op);
284 if (!
state->streams[
i].buffer)
312 TRACE(
"chunk %p, memory 0x%s, map_ptr %p.\n", chunk_vk,
317 if (!chunk_vk->
c.map_ptr)
330 ++chunk_vk->
c.map_count;
331 map_ptr = chunk_vk->
c.map_ptr;
344 TRACE(
"chunk_vk %p, context_vk %p.\n", chunk_vk, context_vk);
348 if (--chunk_vk->
c.map_count)
355 chunk_vk->
c.map_ptr =
NULL;
368 VkDeviceMemory vk_memory;
373 allocate_info.allocationSize =
size;
432 size_t object_size,
idx;
440 && limits->minTexelBufferOffsetAlignment >
alignment)
441 alignment = limits->minTexelBufferOffsetAlignment;
443 alignment = limits->minUniformBufferOffsetAlignment;
445 alignment = limits->minStorageBufferOffsetAlignment;
450 key.memory_type = memory_type;
452 key.size = 32 * object_size;
459 TRACE(
"Using existing bo slab %p.\n", slab);
463 if (!(slab =
calloc(1,
sizeof(*slab))))
466 ERR(
"Failed to allocate bo slab.\n");
473 ERR(
"Failed to add slab to available tree.\n");
482 ERR(
"Failed to create slab bo.\n");
489 TRACE(
"Created new bo slab %p.\n", slab);
512 bo->
b.client_map_count = 0;
513 bo->
b.map_ptr =
NULL;
514 bo->
b.buffer_offset =
idx * object_size;
515 bo->
b.memory_offset = slab->
bo.b.memory_offset + bo->
b.buffer_offset;
521 TRACE(
"Using buffer 0x%s, memory 0x%s, offset 0x%s for bo %p.\n",
536 unsigned int memory_type_idx;
546 create_info.
flags = 0;
547 create_info.size =
size;
563 if (memory_type_idx == ~0
u)
565 ERR(
"Failed to find suitable memory type.\n");
570 memory_type_idx, memory_requirements.size, &bo->
vk_memory);
573 ERR(
"Failed to allocate buffer memory.\n");
592 bo->
b.client_map_count = 0;
593 bo->
b.map_ptr =
NULL;
594 bo->
b.buffer_offset = 0;
604 TRACE(
"Created buffer 0x%s, memory 0x%s for bo %p.\n",
612 unsigned int sample_count,
unsigned int mip_levels,
unsigned int layer_count,
unsigned int flags,
620 unsigned int memory_type_idx;
627 create_info.
format = vk_format;
633 create_info.
samples = sample_count;
641 image->command_buffer_id = 0;
652 &memory_requirements));
656 if (memory_type_idx == ~0
u)
658 ERR(
"Failed to find suitable image memory type.\n");
665 memory_requirements.size, &
image->vk_memory);
666 if (!
image->vk_memory)
668 ERR(
"Failed to allocate image memory.\n");
756 VkDescriptorPool vk_descriptor_pool,
uint64_t command_buffer_id)
833 TRACE(
"slab %p, idx %Iu, context_vk %p.\n", slab,
idx, context_vk);
840 key.usage = slab->
bo.usage;
841 key.size = slab->
bo.size;
850 ERR(
"Unable to return slab %p (map 0x%08x) to available tree.\n", slab, slab->
map);
871 ERR(
"Leaking slab %p, slice %#Ix.\n",
slab,
idx);
987 unsigned int start = 0;
998 ERR(
"Freeing query range %u+%u in pool %p.\n",
range.offset,
range.size, pool_vk);
1017 VkPipeline vk_pipeline,
uint64_t command_buffer_id)
1097 image->command_buffer_id);
1111 size_t object_size,
idx;
1113 TRACE(
"context_vk %p, bo %p.\n", context_vk,
bo);
1120 if ((slab_vk =
bo->slab))
1124 object_size = slab_vk->
bo.size / 32;
1125 idx =
bo->b.buffer_offset / object_size;
1158 unsigned int submit_index)
1184 while (i < context_vk->submitted.buffer_count)
1193 TRACE(
"Command buffer %p with id 0x%s has finished.\n",
1195 if (
buffer->vk_fence == vk_fence)
1281 ERR(
"Unhandled object type %#x.\n", o->
type);
1357 for (
i = 0;
i < rt_count; ++
i)
1375 key->rt_mask |= 1u <<
i;
1418 unsigned int attachment_count, rt_count,
i;
1426 attachment_count = 0;
1451 attachment_references[
i].
attachment = attachment_count;
1452 attachment_references[
i].
layout =
a->vk_layout;
1494 ds_reference = &ds_attachment_reference;
1496 ds_reference->
layout =
a->vk_layout;
1501 sub_pass_desc.
flags = 0;
1514 pass_desc.
flags = 0;
1524 &pass_desc,
NULL, &
pass->vk_render_pass))) < 0)
1526 WARN(
"Failed to create Vulkan render pass, vr %d.\n", vr);
1555 ERR(
"Failed to insert render pass.\n");
1561 return pass->vk_render_pass;
1584 ERR(
"Failed to allocate new query.\n");
1629 struct list *free_pools;
1656 FIXME(
"Unhandled query type %#x.\n",
type);
1668 if (!(pool_vk =
calloc(1,
sizeof(*pool_vk))))
1693 event_create_info.
flags = 0;
1732 if (
buffer->vk_command_buffer)
1740 for (
i = 0;
i < context_vk->
completed.buffer_count; ++
i)
1784#define WINED3D_PERIODIC_SUBMIT_WORK_COUNT 512
1785#define WINED3D_PERIODIC_SUBMIT_MAX_BUFFERS 3
1800 TRACE(
"Periodically submitting command buffer, %u draw/dispatch commands since last buffer, %I64u currently busy.\n",
1814 TRACE(
"context_vk %p.\n", context_vk);
1817 if (
buffer->vk_command_buffer)
1823 TRACE(
"Returning existing command buffer %p with id 0x%s.\n",
1825 return buffer->vk_command_buffer;
1844 fence_desc.
flags = 0;
1857 &command_buffer_info, &
buffer->vk_command_buffer))) < 0)
1873 1, &
buffer->vk_command_buffer));
1881 ERR(
"Failed to allocate new query.\n");
1890 TRACE(
"Created new command buffer %p with id 0x%s.\n",
1893 return buffer->vk_command_buffer;
1897 unsigned int wait_semaphore_count,
const VkSemaphore *wait_semaphores,
const VkPipelineStageFlags *wait_stages,
1898 unsigned int signal_semaphore_count,
const VkSemaphore *signal_semaphores)
1908 TRACE(
"context_vk %p, wait_semaphore_count %u, wait_semaphores %p, wait_stages %p,"
1909 "signal_semaphore_count %u, signal_semaphores %p.\n",
1910 context_vk, wait_semaphore_count, wait_semaphores, wait_stages,
1911 signal_semaphore_count, signal_semaphores);
1914 if (!
buffer->vk_command_buffer)
1917 TRACE(
"Submitting command buffer %p with id 0x%s.\n",
1937 context_vk->
c.update_shader_resource_bindings = 1;
1938 context_vk->
c.update_compute_shader_resource_bindings = 1;
1939 context_vk->
c.update_unordered_access_view_bindings = 1;
1940 context_vk->
c.update_compute_unordered_access_view_bindings = 1;
1941 context_vk->
c.update_primitive_type = 1;
1942 context_vk->
c.update_patch_vertex_count = 1;
1943 context_vk->
c.update_multisample_state = 1;
1969 ERR(
"Failed to submit command buffer %p, vr %s.\n",
1974 ERR(
"Failed to grow submitted command buffer array.\n");
1997 if (id <= context_vk->completed_command_buffer_id
2001 for (
i = 0;
i < context_vk->
submitted.buffer_count; ++
i)
2003 if (context_vk->
submitted.buffers[
i].id !=
id)
2006 vk_fence = context_vk->
submitted.buffers[
i].vk_fence;
2008 for (
i = 0;
i < context_vk->
submitted.buffer_count; ++
i)
2010 if (context_vk->
submitted.buffers[
i].id !=
id)
2040 barrier.image =
image;
2064 return memcmp(
a->bindings,
b->bindings,
a->binding_count *
sizeof(*
a->bindings));
2077 for (
i = 0;
i <
a->pipeline_desc.stageCount; ++
i)
2084 b->divisor_desc.vertexBindingDivisorCount)))
2087 a->divisor_desc.vertexBindingDivisorCount *
sizeof(*
a->divisors))))
2091 b->input_desc.vertexAttributeDescriptionCount)))
2094 a->input_desc.vertexAttributeDescriptionCount *
sizeof(*
a->attributes))))
2097 b->input_desc.vertexBindingDescriptionCount)))
2100 a->input_desc.vertexBindingDescriptionCount *
sizeof(*
a->bindings))))
2111 if ((
ret =
memcmp(&
a->rs_desc, &
b->rs_desc,
sizeof(
a->rs_desc))))
2121 if ((
ret =
memcmp(&
a->ds_desc, &
b->ds_desc,
sizeof(
a->ds_desc))))
2126 if ((
ret =
memcmp(
a->blend_attachments,
b->blend_attachments,
2127 a->blend_desc.attachmentCount *
sizeof(*
a->blend_attachments))))
2211 stage = &
key->stages[
i];
2213 stage->
pName =
"main";
2217 key->input_desc.pVertexBindingDescriptions =
key->bindings;
2218 key->input_desc.pVertexAttributeDescriptions =
key->attributes;
2221 key->divisor_desc.pVertexBindingDivisors =
key->divisors;
2229 key->vp_desc.scissorCount =
key->vp_desc.viewportCount;
2232 key->rs_desc.lineWidth = 1.0f;
2235 key->ms_desc.pSampleMask = &
key->sample_mask;
2237 key->ms_desc.rasterizationSamples = 1;
2240 key->ds_desc.maxDepthBounds = 1.0f;
2244 key->blend_desc.pAttachments =
key->blend_attachments;
2245 key->blend_desc.blendConstants[0] = 1.0f;
2246 key->blend_desc.blendConstants[1] = 1.0f;
2247 key->blend_desc.blendConstants[2] = 1.0f;
2248 key->blend_desc.blendConstants[3] = 1.0f;
2251 key->dynamic_desc.dynamicStateCount = dynamic_state_count;
2252 key->dynamic_desc.pDynamicStates = dynamic_states;
2255 key->pipeline_desc.pStages =
key->stages;
2256 key->pipeline_desc.pVertexInputState = &
key->input_desc;
2257 key->pipeline_desc.pInputAssemblyState = &
key->ia_desc;
2258 key->pipeline_desc.pTessellationState = &
key->ts_desc;
2259 key->pipeline_desc.pViewportState = &
key->vp_desc;
2260 key->pipeline_desc.pRasterizationState = &
key->rs_desc;
2261 key->pipeline_desc.pMultisampleState = &
key->ms_desc;
2262 key->pipeline_desc.pDepthStencilState = &
key->ds_desc;
2263 key->pipeline_desc.pColorBlendState = &
key->blend_desc;
2264 key->pipeline_desc.pDynamicState = &
key->dynamic_desc;
2265 key->pipeline_desc.basePipelineIndex = -1;
2279 if (!
state->rasterizer_state)
2286 desc->depthBiasConstantFactor = 0.0f;
2287 desc->depthBiasClamp = 0.0f;
2288 desc->depthBiasSlopeFactor = 0.0f;
2293 r = &
state->rasterizer_state->desc;
2294 desc->depthClampEnable = !
r->depth_clip;
2300 const_bias.f32 =
r->depth_bias;
2304 desc->depthBiasConstantFactor = 0.0f;
2305 desc->depthBiasClamp = 0.0f;
2306 desc->depthBiasSlopeFactor = 0.0f;
2316 if ((dsv =
state->fb.depth_stencil))
2318 desc->depthBiasConstantFactor = -(
float)const_bias.u32 / dsv->
format->depth_bias_scale;
2319 desc->depthBiasSlopeFactor = -(
float)const_bias.u32;
2323 desc->depthBiasConstantFactor = 0.0f;
2324 desc->depthBiasSlopeFactor = 0.0f;
2329 desc->depthBiasConstantFactor = const_bias.f32;
2330 desc->depthBiasSlopeFactor = scale_bias;
2332 desc->depthBiasClamp =
r->depth_bias_clamp;
2348 if (
desc.depthBiasEnable)
2350 desc.depthBiasClamp,
desc.depthBiasSlopeFactor));
2364 src_blend = rt->src;
2365 dst_blend = rt->dst;
2380 src_blend = rt->src_alpha;
2381 dst_blend = rt->dst_alpha;
2396 memset(
key->blend_attachments, 0,
sizeof(
key->blend_attachments));
2397 if (!
state->blend_state)
2410 b = &
state->blend_state->desc;
2413 const struct wined3d_rendertarget_blend_state_desc *rt = &
b->rt[
b->independent ?
i : 0];
2432 unsigned int rt_count = context_vk->
rt_count;
2436 if (!
state->blend_state)
2439#define X (VK_COLOR_COMPONENT_R_BIT | VK_COLOR_COMPONENT_G_BIT | VK_COLOR_COMPONENT_B_BIT | VK_COLOR_COMPONENT_A_BIT)
2448 b = &
state->blend_state->desc;
2449 for (
unsigned int i = 0;
i < rt_count; ++
i)
2451 const struct wined3d_rendertarget_blend_state_desc *rt = &
b->rt[
b->independent ?
i : 0];
2485 unsigned int i, attribute_count, binding_count, divisor_count, stage_count;
2494 bool update =
false;
2497 *null_buffer_binding = ~0
u;
2508 stage = &
key->stages[stage_count++];
2513 key->pipeline_desc.stageCount = stage_count;
2536 a = &
key->attributes[attribute_count++];
2549 b = &
key->bindings[binding_count++];
2551 b->stride =
e->stride;
2556 d = &
key->divisors[divisor_count++];
2558 d->divisor =
e->divisor;
2571 ERR(
"No streams left for a null buffer binding.\n");
2585 a = &
key->attributes[attribute_count++];
2587 a->binding = null_binding;
2594 b = &
key->bindings[binding_count++];
2595 *null_buffer_binding =
b->binding = null_binding;
2603 key->input_desc.vertexBindingDescriptionCount = binding_count;
2604 key->input_desc.vertexAttributeDescriptionCount = attribute_count;
2608 key->input_desc.pNext = &
key->divisor_desc;
2609 key->divisor_desc.vertexBindingDivisorCount = divisor_count;
2618 if (
key->ia_desc.topology != vk_topology)
2620 key->ia_desc.topology = vk_topology;
2627 if (
key->ia_desc.topology != vk_topology)
2629 key->ia_desc.topology = vk_topology;
2639 key->ts_desc.patchControlPoints =
state->patch_vertex_count;
2657 key->ms_desc.alphaToCoverageEnable =
state->blend_state &&
state->blend_state->desc.alpha_to_coverage;
2658 key->sample_mask =
state->sample_mask;
2671 key->ds_desc.depthTestEnable =
d->desc.depth;
2672 key->ds_desc.depthWriteEnable =
d->desc.depth_write;
2674 key->ds_desc.stencilTestEnable =
state->fb.depth_stencil &&
d->desc.stencil;
2675 if (
key->ds_desc.stencilTestEnable)
2681 key->ds_desc.front.compareMask =
d->desc.stencil_read_mask;
2682 key->ds_desc.front.writeMask =
d->desc.stencil_write_mask;
2688 key->ds_desc.back.compareMask =
d->desc.stencil_read_mask;
2689 key->ds_desc.back.writeMask =
d->desc.stencil_write_mask;
2693 memset(&
key->ds_desc.front, 0,
sizeof(
key->ds_desc.front));
2694 memset(&
key->ds_desc.back, 0,
sizeof(
key->ds_desc.back));
2717 if (
key->pipeline_desc.layout != vk_pipeline_layout)
2719 key->pipeline_desc.layout = vk_pipeline_layout;
2740 unsigned int fb_width, fb_height, fb_layer_count;
2745 VkCommandBuffer vk_command_buffer;
2747 unsigned int attachment_count,
i;
2759 attachment_count = 0;
2770 if (rtv_vk->
v.resource->bind_count)
2781 if (
view->width < fb_width)
2782 fb_width =
view->width;
2783 if (
view->height < fb_height)
2784 fb_height =
view->height;
2785 if (
view->layer_count < fb_layer_count)
2786 fb_layer_count =
view->layer_count;
2795 c->
int32[0] =
c->int32[1] =
c->int32[2] =
c->int32[3] = 0;
2801 &
texture->sub_resources[
view->sub_resource_idx].clear_value.colour,
c);
2813 if (rtv_vk->
v.resource->bind_count)
2824 if (
view->width < fb_width)
2825 fb_width =
view->width;
2826 if (
view->height < fb_height)
2827 fb_height =
view->height;
2828 if (
view->layer_count < fb_layer_count)
2829 fb_layer_count =
view->layer_count;
2843 c->depth =
texture->sub_resources[
view->sub_resource_idx].clear_value.depth;
2844 c->stencil =
texture->sub_resources[
view->sub_resource_idx].clear_value.stencil;
2853 ERR(
"Failed to get command buffer.\n");
2860 ERR(
"Failed to get render pass.\n");
2870 fb_desc.
width = fb_width;
2871 fb_desc.
height = fb_height;
2872 fb_desc.
layers = fb_layer_count;
2952 ERR(
"Failed to create counter BO.\n");
2975 FIXME(
"Appending to stream output buffers not implemented.\n");
3012 pool_desc.
flags = 0;
3033 ERR(
"Failed to allocate array.\n");
3049 VkDescriptorSetLayout vk_set_layout)
3054 VkDescriptorPool vk_descriptor_pool;
3055 VkDescriptorSet vk_descriptor_set;
3063 set_desc.descriptorPool = vk_descriptor_pool;
3067 return vk_descriptor_set;
3076 WARN(
"Failed to create descriptor pool.\n");
3080 set_desc.descriptorPool = vk_descriptor_pool;
3082 return vk_descriptor_set;
3093 const VkBufferView *buffer_view)
3099 write_count + 1,
sizeof(*writes->
writes)))
3105 write->dstSet = vk_descriptor_set;
3106 write->dstBinding = binding_idx;
3107 write->dstArrayElement = 0;
3108 write->descriptorCount = 1;
3110 write->pImageInfo = image_info;
3111 write->pBufferInfo = buffer_info;
3112 write->pTexelBufferView = buffer_view;
3171 FIXME(
"Unhandled resource type %#x.\n",
type);
3191 buffer_info->offset += cb_state->
offset;
3192 buffer_info->range =
min(cb_state->
size, buffer_info->range);
3209 VkBufferView *buffer_view;
3257 VkBufferView *buffer_view;
3260 if (!(uav =
state->unordered_access_view[pipeline][
binding->resource_idx]))
3262 FIXME(
"NULL unordered access views not implemented.\n");
3302 if (!(uav =
state->unordered_access_view[pipeline][
binding->resource_idx]))
3304 FIXME(
"NULL unordered access view counters not implemented.\n");
3323 sampler = context_vk->
c.device->null_sampler;
3340 VkDescriptorSetLayout vk_set_layout;
3341 VkPipelineLayout vk_pipeline_layout;
3343 VkDescriptorSet vk_descriptor_set;
3351 vk_set_layout = context_vk->
graphics.vk_set_layout;
3352 vk_pipeline_layout = context_vk->
graphics.vk_pipeline_layout;
3358 vk_set_layout = context_vk->
compute.vk_set_layout;
3359 vk_pipeline_layout = context_vk->
compute.vk_pipeline_layout;
3363 ERR(
"Invalid pipeline %#x.\n", pipeline);
3369 WARN(
"Failed to create descriptor set.\n");
3378 switch (
binding->shader_descriptor_type)
3394 context_vk, pipeline, vk_descriptor_set,
state,
binding))
3400 context_vk, pipeline, vk_descriptor_set,
state,
binding))
3411 ERR(
"Invalid descriptor type %#x.\n",
binding->shader_descriptor_type);
3418 vk_pipeline_layout, 0, 1, &vk_descriptor_set, 0,
NULL));
3425 VkDescriptorSetLayout *vk_set_layout)
3432 layout_desc.
flags = 0;
3453 key.bindings = bindings;
3454 key.binding_count = binding_count;
3458 if (!(layout =
malloc(
sizeof(*layout))))
3461 if (!(layout->
key.bindings =
malloc(
sizeof(*layout->
key.bindings) *
key.binding_count)))
3466 memcpy(layout->
key.bindings,
key.bindings,
sizeof(*layout->
key.bindings) *
key.binding_count);
3467 layout->
key.binding_count =
key.binding_count;
3477 layout_desc.
flags = 0;
3493 ERR(
"Failed to insert pipeline layout.\n");
3520 if (!(pipeline_vk =
malloc(
sizeof(*pipeline_vk))))
3533 ERR(
"Failed to insert pipeline.\n");
3554 if (!buffer_vk->
b.bo_user.valid)
3571 if (!buffer_vk->
b.bo_user.valid)
3574 context_vk->
c.transform_feedback_active = 1;
3582 if (!buffer_vk->
b.bo_user.valid)
3610 bindings = &context_vk->
graphics.bindings;
3614 bindings = &context_vk->
compute.bindings;
3618 ERR(
"Invalid pipeline %#x.\n", pipeline);
3623 for (
i = 0;
i < bindings->
count; ++
i)
3627 switch (
binding->shader_descriptor_type)
3635 if (!buffer_vk->
b.bo_user.valid)
3652 if (!srv_vk->
view_vk.bo_user.valid)
3670 if (!(uav =
state->unordered_access_view[pipeline][
binding->resource_idx]))
3677 if (!uav_vk->
view_vk.bo_user.valid)
3702 ERR(
"Invalid descriptor type %#x.\n",
binding->shader_descriptor_type);
3730 bool dual_source_blend =
b &&
b->dual_source;
3734 VkCommandBuffer vk_command_buffer;
3735 unsigned int i, invalidate_rt = 0;
3737 bool invalidate_ds =
false;
3741 || dual_source_blend != context_vk->
c.last_was_dual_source_blend)
3744 context_vk->
c.last_was_dual_source_blend = dual_source_blend;
3767 invalidate_rt |= (1 <<
i);
3778 FIXME(
"Inconsistent sample counts (%u != %u).\n", context_vk->
sample_count, sample_count);
3781 if ((dsv =
state->fb.depth_stencil))
3788 if (!
state->depth_stencil_state ||
state->depth_stencil_state->writes_ds)
3789 invalidate_ds =
true;
3795 FIXME(
"Inconsistent sample counts (%u != %u).\n", context_vk->
sample_count, sample_count);
3802 context_vk->
c.update_multisample_state = 1;
3806 device_vk->
d.shader_backend->shader_apply_draw_state(device_vk->
d.shader_priv, &context_vk->
c,
state);
3807 if (!context_vk->
graphics.vk_pipeline_layout)
3809 ERR(
"No pipeline layout set.\n");
3812 context_vk->
c.update_shader_resource_bindings = 1;
3813 context_vk->
c.update_unordered_access_view_bindings = 1;
3825 ERR(
"Failed to begin render pass.\n");
3830 while (invalidate_rt)
3833 rtv =
state->fb.render_targets[
i];
3845 &null_buffer_binding) || !context_vk->
graphics.vk_pipeline)
3849 ERR(
"Failed to get graphics pipeline.\n");
3855 if (null_buffer_binding != ~0
u)
3875 context_vk->
c.transform_feedback_paused = 0;
3909 context_vk->
c.update_shader_resource_bindings = 1;
3911 context_vk->
c.update_unordered_access_view_bindings = 1;
3913 if (context_vk->
c.update_shader_resource_bindings || context_vk->
c.update_unordered_access_view_bindings)
3917 ERR(
"Failed to update shader descriptors.\n");
3921 context_vk->
c.update_shader_resource_bindings = 0;
3922 context_vk->
c.update_unordered_access_view_bindings = 0;
3937 for (
i = 0;
i < viewport_count; ++
i)
3943 if (
i >=
state->viewport_count)
3947 viewport->
width = 1.0f;
3955 viewport->
x = src_viewport->
x;
3956 viewport->
y = src_viewport->
y;
3962 if (
state->rasterizer_state &&
state->rasterizer_state->desc.scissor)
3966 if (
i >=
state->scissor_rect_count)
3974 scissor->extent.width =
r->right -
r->left;
3975 scissor->extent.height =
r->bottom -
r->top;
3979 scissor->offset.x = src_viewport->
x;
3980 scissor->offset.y = src_viewport->
y;
3990 viewport->
y += viewport->
height;
4004 context_vk->
c.update_primitive_type = 0;
4009 if (
state->patch_vertex_count)
4011 context_vk->
c.update_patch_vertex_count = 0;
4019 state->blend_state &&
state->blend_state->desc.alpha_to_coverage));
4022 context_vk->
c.update_multisample_state = 0;
4041 VkBool32 stencil_enable =
state->fb.depth_stencil &&
d->desc.stencil;
4074 memset(context_vk->
c.dirty_graphics_states, 0,
sizeof(context_vk->
c.dirty_graphics_states));
4077 return vk_command_buffer;
4085 VkCommandBuffer vk_command_buffer;
4094 device_vk->
d.shader_backend->shader_apply_compute_state(device_vk->
d.shader_priv, &context_vk->
c,
state);
4095 if (!context_vk->
compute.vk_pipeline)
4097 ERR(
"No compute pipeline set.\n");
4100 context_vk->
c.update_compute_shader_resource_bindings = 1;
4101 context_vk->
c.update_compute_unordered_access_view_bindings = 1;
4115 ERR(
"Failed to get command buffer.\n");
4128 context_vk->
c.update_compute_shader_resource_bindings = 1;
4130 context_vk->
c.update_compute_unordered_access_view_bindings = 1;
4132 if (context_vk->
c.update_compute_shader_resource_bindings
4133 || context_vk->
c.update_compute_unordered_access_view_bindings)
4137 ERR(
"Failed to update shader descriptors.\n");
4141 context_vk->
c.update_compute_shader_resource_bindings = 0;
4142 context_vk->
c.update_compute_unordered_access_view_bindings = 0;
4145 memset(context_vk->
c.dirty_compute_states, 0,
sizeof(context_vk->
c.dirty_compute_states));
4148 return vk_command_buffer;
unsigned int wined3d_adapter_vk_get_memory_type_index(const struct wined3d_adapter_vk *adapter_vk, uint32_t memory_type_mask, VkMemoryPropertyFlags flags)
void wined3d_bo_slab_vk_unmap(struct wined3d_bo_slab_vk *slab_vk, struct wined3d_context_vk *context_vk)
_Check_return_ _Ret_maybenull_ _In_ size_t alignment
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static int list_empty(struct list_entry *head)
static void list_init(struct list_entry *head)
static int wined3d_render_pass_vk_compare(const void *key, const struct wine_rb_entry *entry)
struct wined3d_pipeline_layout_vk * wined3d_context_vk_get_pipeline_layout(struct wined3d_context_vk *context_vk, VkDescriptorSetLayoutBinding *bindings, SIZE_T binding_count)
VkRenderPass wined3d_context_vk_get_render_pass(struct wined3d_context_vk *context_vk, const struct wined3d_fb_state *fb, unsigned int rt_count, bool depth_stencil, uint32_t clear_flags)
static bool wined3d_shader_descriptor_writes_vk_add_uav_counter_write(struct wined3d_shader_descriptor_writes_vk *writes, struct wined3d_context_vk *context_vk, enum wined3d_pipeline pipeline, VkDescriptorSet vk_descriptor_set, const struct wined3d_state *state, const struct wined3d_shader_resource_binding *binding)
static int wined3d_bo_slab_vk_compare(const void *key, const struct wine_rb_entry *entry)
void wined3d_context_vk_destroy_vk_memory(struct wined3d_context_vk *context_vk, VkDeviceMemory vk_memory, uint64_t command_buffer_id)
static void wined3d_context_vk_load_shader_resources(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, enum wined3d_pipeline pipeline)
static int wined3d_graphics_pipeline_vk_compare(const void *key, const struct wine_rb_entry *entry)
static void wined3d_context_vk_destroy_pipeline_layout(struct wine_rb_entry *entry, void *ctx)
static void wined3d_context_vk_destroy_graphics_pipeline(struct wine_rb_entry *entry, void *ctx)
static void free_command_buffer(struct wined3d_context_vk *context_vk, struct wined3d_command_buffer_vk *buffer)
static struct wined3d_allocator_block * wined3d_context_vk_allocate_memory(struct wined3d_context_vk *context_vk, unsigned int memory_type, VkDeviceSize size, VkDeviceMemory *vk_memory)
static void wined3d_context_vk_reset_vk_descriptor_pool(struct wined3d_context_vk *context_vk, VkDescriptorPool vk_descriptor_pool, uint64_t command_buffer_id)
static void rasterizer_state_from_wined3d(VkPipelineRasterizationStateCreateInfo *desc, const struct wined3d_state *state, const struct wined3d_d3d_info *d3d_info)
static VkPipeline wined3d_context_vk_get_graphics_pipeline(struct wined3d_context_vk *context_vk)
static void wined3d_context_vk_set_dynamic_blend_state(const struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, const struct wined3d_vk_info *vk_info, const struct wined3d_state *state)
static void wined3d_context_vk_bind_stream_output_buffers(struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, const struct wined3d_state *state, const struct wined3d_vk_info *vk_info)
static void wined3d_context_vk_update_blend_state(const struct wined3d_context_vk *context_vk, const struct wined3d_state *state, struct wined3d_graphics_pipeline_key_vk *key)
static VkPrimitiveTopology vk_topology_class_from_wined3d(enum wined3d_primitive_type t)
static void wined3d_shader_descriptor_writes_vk_cleanup(struct wined3d_shader_descriptor_writes_vk *writes)
VkCommandBuffer wined3d_context_vk_apply_compute_state(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, struct wined3d_buffer_vk *indirect_vk)
static void wined3d_context_vk_destroy_query_pools(struct wined3d_context_vk *context_vk, struct list *free_pools)
void wined3d_context_vk_destroy_vk_framebuffer(struct wined3d_context_vk *context_vk, VkFramebuffer vk_framebuffer, uint64_t command_buffer_id)
static void wined3d_allocator_chunk_vk_unlock(struct wined3d_allocator_chunk_vk *chunk_vk)
static bool wined3d_context_vk_begin_render_pass(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, const struct wined3d_vk_info *vk_info)
static bool wined3d_shader_descriptor_writes_vk_add_sampler_write(struct wined3d_shader_descriptor_writes_vk *writes, struct wined3d_context_vk *context_vk, VkDescriptorSet vk_descriptor_set, const struct wined3d_state *state, const struct wined3d_shader_resource_binding *binding)
static VkColorComponentFlags vk_colour_write_mask_from_wined3d(uint32_t wined3d_mask)
static bool wined3d_context_vk_create_slab_bo(struct wined3d_context_vk *context_vk, VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags memory_type, struct wined3d_bo_vk *bo)
static void wined3d_context_vk_destroy_render_pass(struct wine_rb_entry *entry, void *ctx)
BOOL wined3d_context_vk_create_bo(struct wined3d_context_vk *context_vk, VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags memory_type, struct wined3d_bo_vk *bo)
static void wined3d_render_pass_vk_cleanup(struct wined3d_render_pass_vk *pass, struct wined3d_context_vk *context_vk)
void wined3d_context_vk_destroy_vk_buffer_view(struct wined3d_context_vk *context_vk, VkBufferView vk_view, uint64_t command_buffer_id)
static void wined3d_context_vk_destroy_bo_slab(struct wine_rb_entry *entry, void *ctx)
void wined3d_context_vk_end_current_render_pass(struct wined3d_context_vk *context_vk)
VkShaderStageFlagBits vk_shader_stage_from_wined3d(enum wined3d_shader_type shader_type)
static int wined3d_pipeline_layout_vk_compare(const void *key, const struct wine_rb_entry *entry)
static bool wined3d_shader_descriptor_writes_vk_add_write(struct wined3d_shader_descriptor_writes_vk *writes, VkDescriptorSet vk_descriptor_set, size_t binding_idx, VkDescriptorType type, const VkDescriptorBufferInfo *buffer_info, const VkDescriptorImageInfo *image_info, const VkBufferView *buffer_view)
static void wined3d_context_vk_set_dynamic_rasterizer_state(const struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, const struct wined3d_vk_info *vk_info, const struct wined3d_state *state)
static void wined3d_allocator_chunk_vk_lock(struct wined3d_allocator_chunk_vk *chunk_vk)
static void blend_equation_from_wined3d(const struct wined3d_context_vk *context_vk, VkColorBlendEquationEXT *eq, const struct wined3d_rendertarget_blend_state_desc *rt, const struct wined3d_rendertarget_view *rtv)
static VkBlendFactor vk_blend_factor_from_wined3d(enum wined3d_blend blend, const struct wined3d_format *dst_format, bool alpha)
VkDescriptorSet wined3d_context_vk_create_vk_descriptor_set(struct wined3d_context_vk *context_vk, VkDescriptorSetLayout vk_set_layout)
static void wined3d_context_vk_init_graphics_pipeline_key(struct wined3d_context_vk *context_vk)
static VkResult wined3d_context_vk_create_vk_descriptor_set_layout(struct wined3d_device_vk *device_vk, const struct wined3d_vk_info *vk_info, const struct wined3d_pipeline_layout_key_vk *key, VkDescriptorSetLayout *vk_set_layout)
void wined3d_context_vk_destroy_vk_image_view(struct wined3d_context_vk *context_vk, VkImageView vk_view, uint64_t command_buffer_id)
static void wined3d_context_vk_destroy_bo_slab_slice(struct wined3d_context_vk *context_vk, struct wined3d_bo_slab_vk *slab, SIZE_T idx, uint64_t command_buffer_id)
#define WINED3D_PERIODIC_SUBMIT_MAX_BUFFERS
static bool wined3d_shader_descriptor_writes_vk_add_uav_write(struct wined3d_shader_descriptor_writes_vk *writes, struct wined3d_context_vk *context_vk, enum wined3d_pipeline pipeline, VkDescriptorSet vk_descriptor_set, const struct wined3d_state *state, const struct wined3d_shader_resource_binding *binding)
void wined3d_context_vk_destroy_vk_sampler(struct wined3d_context_vk *context_vk, VkSampler vk_sampler, uint64_t command_buffer_id)
static VkPrimitiveTopology vk_topology_from_wined3d(enum wined3d_primitive_type t)
VkDeviceMemory wined3d_context_vk_allocate_vram_chunk_memory(struct wined3d_context_vk *context_vk, unsigned int pool, size_t size)
static bool should_periodic_submit(struct wined3d_context_vk *context_vk)
void wined3d_context_vk_destroy_vk_image(struct wined3d_context_vk *context_vk, VkImage vk_image, uint64_t command_buffer_id)
static void wined3d_context_vk_bind_vertex_buffers(struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, const struct wined3d_state *state, const struct wined3d_vk_info *vk_info)
void wined3d_context_vk_destroy_allocator_block(struct wined3d_context_vk *context_vk, struct wined3d_allocator_block *block, uint64_t command_buffer_id)
void * wined3d_allocator_chunk_vk_map(struct wined3d_allocator_chunk_vk *chunk_vk, struct wined3d_context_vk *context_vk)
static VkStencilOp vk_stencil_op_from_wined3d(enum wined3d_stencil_op op)
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)
static bool wined3d_get_unused_stream_index(const struct wined3d_state *state, uint32_t *index)
void wined3d_context_vk_destroy_image(struct wined3d_context_vk *context_vk, struct wined3d_image_vk *image)
VkDescriptorPool wined3d_context_vk_get_vk_descriptor_pool(struct wined3d_context_vk *context_vk)
static bool wined3d_shader_descriptor_writes_vk_add_srv_write(struct wined3d_shader_descriptor_writes_vk *writes, struct wined3d_context_vk *context_vk, VkDescriptorSet vk_descriptor_set, const struct wined3d_state *state, const struct wined3d_shader_resource_binding *binding)
VkCommandBuffer wined3d_context_vk_get_command_buffer(struct wined3d_context_vk *context_vk)
static void wined3d_context_vk_cleanup_resources(struct wined3d_context_vk *context_vk, VkFence vk_fence)
static bool wined3d_render_pass_vk_init(struct wined3d_render_pass_vk *pass, struct wined3d_context_vk *context_vk, const struct wined3d_render_pass_key_vk *key)
static void wined3d_render_pass_key_vk_init(struct wined3d_render_pass_key_vk *key, const struct wined3d_fb_state *fb, unsigned int rt_count, bool depth_stencil, uint32_t clear_flags)
static void wined3d_context_vk_remove_command_buffer(struct wined3d_context_vk *context_vk, unsigned int submit_index)
static void wined3d_context_vk_free_memory(struct wined3d_context_vk *context_vk, struct wined3d_allocator_block *block)
void wined3d_context_vk_destroy_bo(struct wined3d_context_vk *context_vk, const struct wined3d_bo_vk *bo)
static VkCullModeFlags vk_cull_mode_from_wined3d(enum wined3d_cull mode)
static void wined3d_context_vk_load_buffers(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, struct wined3d_buffer_vk *indirect_vk, bool indexed)
static bool wined3d_context_vk_update_graphics_pipeline_key(struct wined3d_context_vk *context_vk, const struct wined3d_state *state, VkPipelineLayout vk_pipeline_layout, uint32_t *null_buffer_binding)
static void wined3d_context_vk_reset_completed_queries(struct wined3d_context_vk *context_vk, struct wined3d_query_pool_vk *pool_vk, struct wined3d_command_buffer_vk *buffer)
BOOL wined3d_context_vk_create_image(struct wined3d_context_vk *context_vk, VkImageType vk_image_type, VkImageUsageFlags usage, VkFormat vk_format, unsigned int width, unsigned int height, unsigned int depth, unsigned int sample_count, unsigned int mip_levels, unsigned int layer_count, unsigned int flags, struct wined3d_image_vk *image)
void wined3d_context_vk_cleanup(struct wined3d_context_vk *context_vk)
static void wined3d_context_vk_prepare_used_rtv(struct wined3d_context_vk *context_vk, struct wined3d_rendertarget_view *rtv)
static bool wined3d_shader_descriptor_writes_vk_add_cbv_write(struct wined3d_shader_descriptor_writes_vk *writes, struct wined3d_context_vk *context_vk, VkDescriptorSet vk_descriptor_set, const struct wined3d_state *state, const struct wined3d_shader_resource_binding *binding, VkDescriptorBufferInfo *buffer_info)
void wined3d_context_vk_image_barrier(struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, VkPipelineStageFlags src_stage_mask, VkPipelineStageFlags dst_stage_mask, VkAccessFlags src_access_mask, VkAccessFlags dst_access_mask, VkImageLayout old_layout, VkImageLayout new_layout, VkImage image, const VkImageSubresourceRange *range)
static VkFormat vk_format_from_component_type(enum wined3d_component_type component_type)
VkCompareOp vk_compare_op_from_wined3d(enum wined3d_cmp_func op)
static bool wined3d_context_vk_update_descriptors(struct wined3d_context_vk *context_vk, VkCommandBuffer vk_command_buffer, const struct wined3d_state *state, enum wined3d_pipeline pipeline)
static struct wined3d_retired_object_vk * wined3d_context_vk_get_retired_object_vk(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_context_vk_destroy_vk_event(struct wined3d_context_vk *context_vk, VkEvent vk_event, uint64_t command_buffer_id)
static VkResult wined3d_context_vk_create_vk_descriptor_pool(struct wined3d_device_vk *device_vk, const struct wined3d_vk_info *vk_info, VkDescriptorPool *vk_pool)
bool wined3d_context_vk_allocate_query(struct wined3d_context_vk *context_vk, enum wined3d_query_type type, struct wined3d_query_pool_idx_vk *pool_idx)
#define WINED3D_PERIODIC_SUBMIT_WORK_COUNT
static void wined3d_context_vk_destroy_vk_buffer(struct wined3d_context_vk *context_vk, VkBuffer vk_buffer, uint64_t command_buffer_id)
static void wined3d_context_vk_return_vk_descriptor_pool(struct wined3d_context_vk *context_vk, VkDescriptorPool vk_descriptor_pool)
void wined3d_allocator_chunk_vk_unmap(struct wined3d_allocator_chunk_vk *chunk_vk, struct wined3d_context_vk *context_vk)
static void wined3d_bo_slab_vk_free_slice(struct wined3d_bo_slab_vk *slab, SIZE_T idx, struct wined3d_context_vk *context_vk)
void wined3d_context_vk_wait_command_buffer(struct wined3d_context_vk *context_vk, uint64_t id)
static bool wined3d_shader_resource_bindings_add_null_srv_binding(struct wined3d_shader_descriptor_writes_vk *writes, VkDescriptorSet vk_descriptor_set, size_t binding_idx, enum wined3d_shader_resource_type type, enum wined3d_data_type data_type, struct wined3d_context_vk *context_vk)
void wined3d_context_vk_destroy_vk_pipeline(struct wined3d_context_vk *context_vk, VkPipeline vk_pipeline, uint64_t command_buffer_id)
static VkBlendOp vk_blend_op_from_wined3d(enum wined3d_blend_op op)
HRESULT wined3d_context_vk_init(struct wined3d_context_vk *context_vk, struct wined3d_swapchain *swapchain)
const VkDescriptorBufferInfo * wined3d_buffer_vk_get_buffer_info(struct wined3d_buffer_vk *buffer_vk)
BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer, struct wined3d_context *context, uint32_t location)
void wined3d_buffer_load(struct wined3d_buffer *buffer, struct wined3d_context *context, const struct wined3d_state *state)
void wined3d_buffer_acquire_bo_for_write(struct wined3d_buffer *buffer, struct wined3d_context *context)
void wined3d_buffer_invalidate_location(struct wined3d_buffer *buffer, uint32_t location)
void wined3d_buffer_vk_barrier(struct wined3d_buffer_vk *buffer_vk, struct wined3d_context_vk *context_vk, uint32_t bind_mask)
void context_invalidate_compute_state(struct wined3d_context *context, DWORD state_id)
void context_invalidate_state(struct wined3d_context *context, unsigned int state_id)
void wined3d_context_cleanup(struct wined3d_context *context)
void wined3d_context_init(struct wined3d_context *context, struct wined3d_swapchain *swapchain)
void wined3d_stream_info_from_declaration(struct wined3d_stream_info *stream_info, const struct wined3d_state *state, const struct wined3d_d3d_info *d3d_info)
void wined3d_query_vk_resume(struct wined3d_query_vk *query_vk, struct wined3d_context_vk *context_vk)
bool wined3d_query_pool_vk_init(struct wined3d_query_pool_vk *pool_vk, struct wined3d_context_vk *context_vk, enum wined3d_query_type type, struct list *free_pools)
void wined3d_query_vk_suspend(struct wined3d_query_vk *query_vk, struct wined3d_context_vk *context_vk)
void wined3d_query_pool_vk_cleanup(struct wined3d_query_pool_vk *pool_vk, struct wined3d_context_vk *context_vk)
void wined3d_query_pool_vk_mark_free(struct wined3d_context_vk *context_vk, struct wined3d_query_pool_vk *pool_vk, uint32_t start, uint32_t count)
bool wined3d_query_pool_vk_allocate_query(struct wined3d_query_pool_vk *pool_vk, size_t *idx)
unsigned int wined3d_resource_get_sample_count(const struct wined3d_resource *resource)
struct wined3d_texture *__cdecl wined3d_texture_from_resource(struct wined3d_resource *resource)
const VkDescriptorImageInfo * wined3d_texture_vk_get_default_image_info(struct wined3d_texture_vk *texture_vk, struct wined3d_context_vk *context_vk)
void wined3d_texture_load(struct wined3d_texture *texture, struct wined3d_context *context, BOOL srgb)
void wined3d_texture_vk_make_generic(struct wined3d_texture_vk *texture_vk, struct wined3d_context_vk *context_vk)
struct wined3d_allocator_block * wined3d_allocator_allocate(struct wined3d_allocator *allocator, struct wined3d_context *context, unsigned int memory_type, size_t size)
const char * debug_shader_type(enum wined3d_shader_type type)
const char * debug_d3dprimitivetype(enum wined3d_primitive_type primitive_type)
const char * wined3d_debug_vkresult(VkResult vr)
const struct wined3d_format * wined3d_get_format(const struct wined3d_adapter *adapter, enum wined3d_format_id format_id, unsigned int bind_flags)
BOOL wined3d_array_reserve(void **elements, SIZE_T *capacity, SIZE_T count, SIZE_T size)
void wined3d_allocator_block_free(struct wined3d_allocator_block *block)
void wined3d_format_colour_to_vk(const struct wined3d_format *format, const struct wined3d_color *c, VkClearColorValue *retval)
void wined3d_rendertarget_view_prepare_location(struct wined3d_rendertarget_view *view, struct wined3d_context *context, uint32_t location)
void wined3d_rendertarget_view_load_location(struct wined3d_rendertarget_view *view, struct wined3d_context *context, uint32_t location)
DWORD wined3d_rendertarget_view_get_locations(const struct wined3d_rendertarget_view *view)
void wined3d_rendertarget_view_validate_location(struct wined3d_rendertarget_view *view, uint32_t location)
void wined3d_unordered_access_view_invalidate_location(struct wined3d_unordered_access_view *view, uint32_t location)
void wined3d_shader_resource_view_vk_update_layout(struct wined3d_shader_resource_view_vk *srv_vk, VkImageLayout layout)
void wined3d_shader_resource_view_vk_update_buffer(struct wined3d_shader_resource_view_vk *srv_vk, struct wined3d_context_vk *context_vk)
void wined3d_rendertarget_view_invalidate_location(struct wined3d_rendertarget_view *view, uint32_t location)
void wined3d_unordered_access_view_vk_update(struct wined3d_unordered_access_view_vk *uav_vk, struct wined3d_context_vk *context_vk)
static __inline const char * wine_dbgstr_longlong(ULONGLONG ll)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
static void blend(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static void scissor(const struct wined3d_rasterizer_state *r, const struct wined3d_gl_info *gl_info)
static void depth_stencil(struct wined3d_context *context, const struct wined3d_state *state, DWORD state_id)
static const FxOffsetAndName offsets[]
GLint GLint GLsizei GLsizei GLsizei depth
GLuint GLuint GLsizei count
GLint GLint GLsizei GLsizei height
GLuint GLuint GLsizei GLenum type
GLclampf GLclampf GLclampf alpha
GLdouble GLdouble GLdouble r
GLint GLint GLsizei width
GLboolean GLboolean GLboolean b
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
enum wined3d_data_type data_type
#define location(file, line)
#define memcpy(s1, s2, n)
D3D11_SHADER_VARIABLE_DESC desc
static const char * dst_format
#define eq(received, expected, label, type)
static void stream_info(IStream *stream, HGLOBAL *hmem, int *size, int *pos)
static RPC_BINDING_HANDLE binding
static float(__cdecl *square_half_float)(float x
static const struct @662 sizes[]
unsigned __int3264 UINT_PTR
static unsigned __int64 next
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
#define WINE_RB_ENTRY_VALUE
VkAttachmentDescriptionFlags flags
uint32_t queueFamilyIndexCount
const uint32_t * pQueueFamilyIndices
VkBufferCreateFlags flags
VkSharingMode sharingMode
uint32_t commandBufferCount
VkCommandBufferLevel level
const VkCommandBufferInheritanceInfo * pInheritanceInfo
VkCommandBufferUsageFlags flags
uint32_t queueFamilyIndex
VkCommandPoolCreateFlags flags
VkImageLayout imageLayout
const VkDescriptorPoolSize * pPoolSizes
VkDescriptorPoolCreateFlags flags
uint32_t descriptorSetCount
const VkDescriptorSetLayout * pSetLayouts
const VkDescriptorSetLayoutBinding * pBindings
VkDescriptorSetLayoutCreateFlags flags
const VkImageView * pAttachments
VkFramebufferCreateFlags flags
VkSharingMode sharingMode
VkImageLayout initialLayout
const uint32_t * pQueueFamilyIndices
VkSampleCountFlagBits samples
uint32_t queueFamilyIndexCount
VkAccessFlags dstAccessMask
uint32_t dstQueueFamilyIndex
VkAccessFlags srcAccessMask
VkImageSubresourceRange subresourceRange
uint32_t srcQueueFamilyIndex
VkMemoryPropertyFlags propertyFlags
uint32_t maxFramebufferLayers
uint32_t maxFramebufferHeight
uint32_t maxFramebufferWidth
VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES]
VkPipelineLayoutCreateFlags flags
uint32_t pushConstantRangeCount
const VkPushConstantRange * pPushConstantRanges
const VkDescriptorSetLayout * pSetLayouts
VkShaderStageFlagBits stage
const VkClearValue * pClearValues
const VkSubpassDescription * pSubpasses
const VkSubpassDependency * pDependencies
const VkAttachmentDescription * pAttachments
VkRenderPassCreateFlags flags
uint32_t waitSemaphoreCount
const VkPipelineStageFlags * pWaitDstStageMask
uint32_t commandBufferCount
const VkSemaphore * pWaitSemaphores
uint32_t signalSemaphoreCount
const VkCommandBuffer * pCommandBuffers
const VkSemaphore * pSignalSemaphores
const VkAttachmentReference * pDepthStencilAttachment
VkSubpassDescriptionFlags flags
uint32_t inputAttachmentCount
const VkAttachmentReference * pResolveAttachments
const uint32_t * pPreserveAttachments
const VkAttachmentReference * pInputAttachments
uint32_t colorAttachmentCount
const VkAttachmentReference * pColorAttachments
VkPipelineBindPoint pipelineBindPoint
uint32_t preserveAttachmentCount
VkPhysicalDeviceMemoryProperties memory_properties
struct wined3d_vk_info vk_info
VkPhysicalDeviceLimits device_limits
struct wined3d_allocator_chunk c
struct wined3d_bo_slab_vk * next
VkMemoryPropertyFlags requested_memory_type
struct wine_rb_entry entry
struct wined3d_allocator_block * memory
uint64_t command_buffer_id
VkMemoryPropertyFlags memory_type
struct wined3d_bo_slab_vk * slab
VkDescriptorBufferInfo buffer_info
VkCommandBuffer vk_command_buffer
struct wined3d_buffer * buffer
VkDescriptorPool * vk_descriptor_pools
struct list active_queries
VkDeviceSize retired_bo_size
struct list completed_query_pools
VkSampleCountFlagBits sample_count
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
VkDynamicState dynamic_states[27]
uint64_t completed_command_buffer_id
struct wined3d_context_vk::@363 compute
struct list free_occlusion_query_pools
struct wined3d_retired_objects_vk retired
struct wine_rb_tree bo_slab_available
struct wined3d_context_vk::@362 graphics
struct wined3d_shader_descriptor_writes_vk descriptor_writes
const struct wined3d_vk_info * vk_info
SIZE_T vk_descriptor_pools_size
uint32_t update_compute_pipeline
struct list free_stream_output_statistics_query_pools
unsigned int command_buffer_work_count
struct wine_rb_tree pipeline_layouts
SIZE_T vk_descriptor_pool_count
struct list free_pipeline_statistics_query_pools
VkCommandPool vk_command_pool
VkBuffer vk_so_counters[WINED3D_MAX_STREAM_OUTPUT_BUFFERS]
VkRenderPass vk_render_pass
VkFramebuffer vk_framebuffer
struct wined3d_context_vk::@364 submitted
struct wine_rb_tree render_passes
struct wined3d_context_vk::@364 completed
uint32_t update_stream_output
struct list render_pass_queries
struct wine_rb_tree graphics_pipelines
struct list free_timestamp_query_pools
uint32_t wined3d_creation_flags
uint32_t vk_queue_family_index
struct wined3d_vk_info vk_info
struct wined3d_context_vk context_vk
struct wined3d_null_resources_vk null_resources_vk
struct wined3d_null_views_vk null_views_vk
struct wined3d_allocator allocator
struct wined3d_rendertarget_view * depth_stencil
struct wined3d_rendertarget_view * render_targets[WINED3D_MAX_RENDER_TARGETS]
struct wined3d_graphics_pipeline_key_vk key
struct wine_rb_entry entry
VkDescriptorSetLayout vk_set_layout
VkPipelineLayout vk_pipeline_layout
struct wine_rb_entry entry
struct wined3d_pipeline_layout_key_vk key
struct wined3d_query_pool_vk * pool_vk
uint32_t completed[WINED3D_BITMAP_SIZE(WINED3D_QUERY_POOL_SIZE)]
struct list completed_entry
VkQueryPool vk_query_pool
struct wined3d_query_pool_idx_vk pool_idx
struct wined3d_rendertarget_view v
struct wined3d_resource * resource
const struct wined3d_format * format
struct wined3d_query_pool_vk * pool_vk
enum wined3d_retired_object_type_vk type
struct wined3d_retired_object_vk::@359::@360 slice
VkImageView vk_image_view
VkBufferView vk_buffer_view
VkFramebuffer vk_framebuffer
uint64_t command_buffer_id
union wined3d_retired_object_vk::@359 u
struct wined3d_allocator_block * block
struct wined3d_bo_slab_vk * slab
VkDescriptorPool vk_descriptor_pool
struct wined3d_retired_object_vk::@359::@361 queries
struct wined3d_retired_object_vk * next
struct wined3d_retired_object_vk * objects
struct wined3d_retired_object_vk * free
VkWriteDescriptorSet * writes
struct wined3d_shader_resource_binding * bindings
struct wined3d_view_vk view_vk
struct wined3d_resource * resource
struct wined3d_shader_signature input_signature
struct wined3d_shader_reg_maps reg_maps
struct wined3d_device * device
enum VkImageLayout layout
VkBufferView vk_counter_view
struct wined3d_view_vk view_vk
struct wined3d_resource * resource
VkBufferView vk_buffer_view
VkDescriptorImageInfo vk_image_info
union wined3d_view_vk::@365 u
bool dynamic_patch_vertex_count
bool dynamic_multisample_state
BOOL supported[WINED3D_VK_EXT_COUNT]
bool dynamic_rasterizer_state
VkClearDepthStencilValue depthStencil
void VKAPI_CALL vkFreeCommandBuffers(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer *pCommandBuffers)
void VKAPI_CALL vkCmdSetSampleMaskEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits samples, const VkSampleMask *pSampleMask)
void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable)
VkFlags VkMemoryPropertyFlags
VkFlags VkPipelineStageFlags
VkResult VKAPI_CALL vkBindImageMemory(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset)
void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable)
@ VK_IMAGE_LAYOUT_UNDEFINED
void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable)
void VKAPI_CALL vkDestroyRenderPass(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks *pAllocator)
@ VK_COMMAND_BUFFER_LEVEL_PRIMARY
void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable)
@ VK_SHADER_STAGE_VERTEX_BIT
@ VK_SHADER_STAGE_COMPUTE_BIT
@ VK_SHADER_STAGE_GEOMETRY_BIT
@ VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT
@ VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT
@ VK_SHADER_STAGE_FRAGMENT_BIT
@ VK_SHARING_MODE_EXCLUSIVE
VkResult VKAPI_CALL vkCreateDescriptorSetLayout(VkDevice device, const VkDescriptorSetLayoutCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDescriptorSetLayout *pSetLayout)
@ VK_MEMORY_PROPERTY_HOST_COHERENT_BIT
@ VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT
@ VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT
VkResult VKAPI_CALL vkCreateBuffer(VkDevice device, const VkBufferCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkBuffer *pBuffer)
void VKAPI_CALL vkCmdBindDescriptorSets(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet *pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t *pDynamicOffsets)
VkResult VKAPI_CALL vkQueueSubmit(VkQueue queue, uint32_t submitCount, const VkSubmitInfo *pSubmits, VkFence fence)
void VKAPI_CALL vkCmdSetViewport(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport *pViewports)
void VKAPI_CALL vkCmdBeginRenderPass(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo *pRenderPassBegin, VkSubpassContents contents)
@ VK_DYNAMIC_STATE_DEPTH_BIAS
@ VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT
@ VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT
@ VK_DYNAMIC_STATE_BLEND_CONSTANTS
@ VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT
@ VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT
@ VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT
@ VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT
@ VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT
@ VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT
@ VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT
@ VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT
@ VK_DYNAMIC_STATE_STENCIL_WRITE_MASK
@ VK_DYNAMIC_STATE_FRONT_FACE_EXT
@ VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT
@ VK_DYNAMIC_STATE_VIEWPORT
@ VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT
@ VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK
@ VK_DYNAMIC_STATE_STENCIL_REFERENCE
@ VK_DYNAMIC_STATE_CULL_MODE_EXT
@ VK_DYNAMIC_STATE_SAMPLE_MASK_EXT
@ VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT
@ VK_DYNAMIC_STATE_STENCIL_OP_EXT
@ VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT
@ VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT
@ VK_DYNAMIC_STATE_SCISSOR
void VKAPI_CALL vkDestroyImageView(VkDevice device, VkImageView imageView, const VkAllocationCallbacks *pAllocator)
VkFlags VkImageUsageFlags
void VKAPI_CALL vkCmdSetColorWriteMaskEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorComponentFlags *pColorWriteMasks)
void VKAPI_CALL vkCmdSetCullModeEXT(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode)
void VKAPI_CALL vkCmdSetStencilWriteMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask)
void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer *pBuffers, const VkDeviceSize *pOffsets, const VkDeviceSize *pSizes)
void VKAPI_CALL vkCmdSetStencilCompareMask(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask)
void VKAPI_CALL vkCmdSetBlendConstants(VkCommandBuffer commandBuffer, const float blendConstants[4])
VkResult VKAPI_CALL vkBeginCommandBuffer(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo *pBeginInfo)
void VKAPI_CALL vkDestroyPipelineLayout(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkCmdSetRasterizationSamplesEXT(VkCommandBuffer commandBuffer, VkSampleCountFlagBits rasterizationSamples)
void VKAPI_CALL vkDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks *pAllocator)
VkResult VKAPI_CALL vkCreatePipelineLayout(VkDevice device, const VkPipelineLayoutCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkPipelineLayout *pPipelineLayout)
@ VK_IMAGE_TILING_OPTIMAL
@ VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT
@ VK_PIPELINE_BIND_POINT_GRAPHICS
@ VK_PIPELINE_BIND_POINT_COMPUTE
void VKAPI_CALL vkGetBufferMemoryRequirements(VkDevice device, VkBuffer buffer, VkMemoryRequirements *pMemoryRequirements)
void VKAPI_CALL vkFreeMemory(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkCmdResetQueryPool(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount)
void VKAPI_CALL vkDestroyBufferView(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkDestroyCommandPool(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks *pAllocator)
@ VK_STENCIL_OP_INCREMENT_AND_CLAMP
@ VK_STENCIL_OP_DECREMENT_AND_CLAMP
@ VK_STENCIL_OP_INCREMENT_AND_WRAP
@ VK_STENCIL_OP_DECREMENT_AND_WRAP
void VKAPI_CALL vkDestroyFence(VkDevice device, VkFence fence, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkDestroyBuffer(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkResetQueryPoolEXT(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount)
VkResult VKAPI_CALL vkGetFenceStatus(VkDevice device, VkFence fence)
void VKAPI_CALL vkCmdSetDepthBias(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor)
void VKAPI_CALL vkCmdSetDepthTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable)
void VKAPI_CALL vkCmdEndRenderPass(VkCommandBuffer commandBuffer)
void VKAPI_CALL vkGetImageMemoryRequirements(VkDevice device, VkImage image, VkMemoryRequirements *pMemoryRequirements)
VkResult VKAPI_CALL vkAllocateCommandBuffers(VkDevice device, const VkCommandBufferAllocateInfo *pAllocateInfo, VkCommandBuffer *pCommandBuffers)
void VKAPI_CALL vkCmdSetAlphaToCoverageEnableEXT(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable)
VkResult VKAPI_CALL vkEndCommandBuffer(VkCommandBuffer commandBuffer)
void VKAPI_CALL vkDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks *pAllocator)
#define VK_ATTACHMENT_UNUSED
VkResult VKAPI_CALL vkCreateFramebuffer(VkDevice device, const VkFramebufferCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkFramebuffer *pFramebuffer)
void VKAPI_CALL vkCmdSetStencilTestEnableEXT(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable)
VkResult VKAPI_CALL vkWaitForFences(VkDevice device, uint32_t fenceCount, const VkFence *pFences, VkBool32 waitAll, uint64_t timeout)
VkResult VKAPI_CALL vkCreateEvent(VkDevice device, const VkEventCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkEvent *pEvent)
void VKAPI_CALL vkCmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline)
VkResult VKAPI_CALL vkAllocateMemory(VkDevice device, const VkMemoryAllocateInfo *pAllocateInfo, const VkAllocationCallbacks *pAllocator, VkDeviceMemory *pMemory)
@ VK_COMPARE_OP_LESS_OR_EQUAL
@ VK_COMPARE_OP_NOT_EQUAL
@ VK_COMPARE_OP_GREATER_OR_EQUAL
void VKAPI_CALL vkDestroyEvent(VkDevice device, VkEvent event, const VkAllocationCallbacks *pAllocator)
@ VK_BLEND_OP_REVERSE_SUBTRACT
void VKAPI_CALL vkCmdSetFrontFaceEXT(VkCommandBuffer commandBuffer, VkFrontFace frontFace)
void VKAPI_CALL vkCmdSetStencilReference(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference)
void VKAPI_CALL vkDestroySampler(VkDevice device, VkSampler sampler, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkCmdBindIndexBuffer(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType)
@ VK_STENCIL_FACE_FRONT_AND_BACK
@ VK_STENCIL_FACE_FRONT_BIT
@ VK_STENCIL_FACE_BACK_BIT
void VKAPI_CALL vkCmdSetColorBlendEnableEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkBool32 *pColorBlendEnables)
VkResult VKAPI_CALL vkResetDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags)
void VKAPI_CALL vkCmdSetScissor(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D *pScissors)
void VKAPI_CALL vkCmdSetDepthCompareOpEXT(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp)
void VKAPI_CALL vkCmdSetStencilOpEXT(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp)
VkFlags VkBufferUsageFlags
@ VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT
@ VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT
@ VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT
@ VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT
@ VK_BUFFER_USAGE_STORAGE_BUFFER_BIT
@ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST
@ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP
@ VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
@ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN
@ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY
@ VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY
@ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY
@ VK_PRIMITIVE_TOPOLOGY_POINT_LIST
@ VK_PRIMITIVE_TOPOLOGY_LINE_STRIP
@ VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY
@ VK_PRIMITIVE_TOPOLOGY_LINE_LIST
VkResult VKAPI_CALL vkCreateRenderPass(VkDevice device, const VkRenderPassCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkRenderPass *pRenderPass)
VkResult VKAPI_CALL vkMapMemory(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void **ppData)
@ VK_FRONT_FACE_CLOCKWISE
@ VK_FRONT_FACE_COUNTER_CLOCKWISE
@ VK_ERROR_FRAGMENTED_POOL
@ VK_ERROR_OUT_OF_POOL_MEMORY
@ VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER
@ VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE
@ VK_DESCRIPTOR_TYPE_SAMPLER
@ VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER
@ VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER
@ VK_DESCRIPTOR_TYPE_STORAGE_IMAGE
void VKAPI_CALL vkCmdSetEvent(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask)
void VKAPI_CALL vkCmdSetDepthClampEnableEXT(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable)
void VKAPI_CALL vkDestroyDescriptorPool(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks *pAllocator)
VkResult VKAPI_CALL vkResetFences(VkDevice device, uint32_t fenceCount, const VkFence *pFences)
VkResult VKAPI_CALL vkBindBufferMemory(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset)
VkResult VKAPI_CALL vkCreateGraphicsPipelines(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo *pCreateInfos, const VkAllocationCallbacks *pAllocator, VkPipeline *pPipelines)
@ VK_VERTEX_INPUT_RATE_VERTEX
@ VK_VERTEX_INPUT_RATE_INSTANCE
@ VK_COLOR_COMPONENT_R_BIT
@ VK_COLOR_COMPONENT_A_BIT
@ VK_COLOR_COMPONENT_B_BIT
@ VK_COLOR_COMPONENT_G_BIT
VkResult VKAPI_CALL vkCreateFence(VkDevice device, const VkFenceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkFence *pFence)
@ VK_FORMAT_R32G32B32A32_SFLOAT
@ VK_FORMAT_R32G32B32A32_UINT
@ VK_FORMAT_R32G32B32A32_SINT
@ VK_SUBPASS_CONTENTS_INLINE
@ VK_BLEND_FACTOR_SRC1_ALPHA
@ VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA
@ VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR
@ VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR
@ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR
@ VK_BLEND_FACTOR_SRC_COLOR
@ VK_BLEND_FACTOR_CONSTANT_COLOR
@ VK_BLEND_FACTOR_SRC_ALPHA
@ VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA
@ VK_BLEND_FACTOR_CONSTANT_ALPHA
@ VK_BLEND_FACTOR_DST_ALPHA
@ VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
@ VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA
@ VK_BLEND_FACTOR_DST_COLOR
@ VK_BLEND_FACTOR_SRC_ALPHA_SATURATE
@ VK_BLEND_FACTOR_SRC1_COLOR
@ VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR
@ VK_ATTACHMENT_LOAD_OP_CLEAR
@ VK_ATTACHMENT_LOAD_OP_LOAD
@ VK_ATTACHMENT_LOAD_OP_DONT_CARE
VkResult VKAPI_CALL vkCreateDescriptorPool(VkDevice device, const VkDescriptorPoolCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDescriptorPool *pDescriptorPool)
@ VK_ATTACHMENT_STORE_OP_DONT_CARE
@ VK_ATTACHMENT_STORE_OP_STORE
void VKAPI_CALL vkDestroyPipeline(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks *pAllocator)
@ VK_COMMAND_POOL_CREATE_TRANSIENT_BIT
@ VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
VkResult VKAPI_CALL vkAllocateDescriptorSets(VkDevice device, const VkDescriptorSetAllocateInfo *pAllocateInfo, VkDescriptorSet *pDescriptorSets)
void VKAPI_CALL vkUpdateDescriptorSets(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet *pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet *pDescriptorCopies)
@ VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT
@ VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT
@ VK_PIPELINE_STAGE_ALL_COMMANDS_BIT
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 vkCmdSetColorBlendEquationEXT(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendEquationEXT *pColorBlendEquations)
void VKAPI_CALL vkCmdBindVertexBuffers(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer *pBuffers, const VkDeviceSize *pOffsets)
VkResult VKAPI_CALL vkCreateCommandPool(VkDevice device, const VkCommandPoolCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkCommandPool *pCommandPool)
void VKAPI_CALL vkUnmapMemory(VkDevice device, VkDeviceMemory memory)
void VKAPI_CALL vkCmdSetPatchControlPointsEXT(VkCommandBuffer commandBuffer, uint32_t patchControlPoints)
VkResult VKAPI_CALL vkCreateImage(VkDevice device, const VkImageCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkImage *pImage)
#define VK_QUEUE_FAMILY_IGNORED
void VKAPI_CALL vkDestroyImage(VkDevice device, VkImage image, const VkAllocationCallbacks *pAllocator)
void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology)
VkFlags VkColorComponentFlags
@ VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
@ VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
@ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
@ VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
@ VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
@ VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
@ VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
@ VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
@ VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
@ VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
@ VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT
@ VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
@ VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
@ VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
@ VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_SUBMIT_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
@ VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
@ VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
@ VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
ssize_t adapter_adjust_mapped_memory(struct wined3d_adapter *adapter, ssize_t size)
@ WINED3D_BLEND_OP_SUBTRACT
@ WINED3D_BLEND_OP_REVSUBTRACT
#define WINED3DCLEAR_TARGET
@ WINED3D_PT_LINESTRIP_ADJ
@ WINED3D_PT_TRIANGLELIST_ADJ
@ WINED3D_PT_LINELIST_ADJ
@ WINED3D_PT_TRIANGLESTRIP_ADJ
@ WINED3D_PT_TRIANGLESTRIP
@ WINED3D_PT_TRIANGLELIST
static int wined3d_bit_scan(unsigned int *x)
#define WINED3D_BIND_VERTEX_BUFFER
#define WINED3DCOLORWRITEENABLE_RED
#define WINED3DCOLORWRITEENABLE_BLUE
#define WINED3D_MAX_VIEWPORTS
#define WINED3D_MAX_RENDER_TARGETS
#define WINED3D_BIND_UNORDERED_ACCESS
#define WINED3D_NO_PRIMITIVE_RESTART
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM2
@ WINED3D_QUERY_TYPE_SO_STATISTICS
@ WINED3D_QUERY_TYPE_PIPELINE_STATISTICS
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM0
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM1
@ WINED3D_QUERY_TYPE_TIMESTAMP
@ WINED3D_QUERY_TYPE_OCCLUSION
@ WINED3D_QUERY_TYPE_SO_STATISTICS_STREAM3
#define WINED3D_BIND_SHADER_RESOURCE
#define WINED3D_BIND_INDIRECT_BUFFER
@ WINED3D_PIPELINE_COMPUTE
@ WINED3D_PIPELINE_GRAPHICS
#define WINED3D_BIND_DEPTH_STENCIL
#define WINED3DCLEAR_STENCIL
@ WINED3D_CMP_GREATEREQUAL
@ WINED3D_BLEND_INVDESTCOLOR
@ WINED3D_BLEND_DESTCOLOR
@ WINED3D_BLEND_INVSRCALPHA
@ WINED3D_BLEND_INVSRCCOLOR
@ WINED3D_BLEND_INVDESTALPHA
@ WINED3D_BLEND_INVBLENDFACTOR
@ WINED3D_BLEND_INVSRC1COLOR
@ WINED3D_BLEND_SRC1ALPHA
@ WINED3D_BLEND_SRC1COLOR
@ WINED3D_BLEND_BOTHINVSRCALPHA
@ WINED3D_BLEND_BOTHSRCALPHA
@ WINED3D_BLEND_SRCALPHASAT
@ WINED3D_BLEND_BLENDFACTOR
@ WINED3D_BLEND_INVSRC1ALPHA
@ WINED3D_BLEND_DESTALPHA
#define WINED3DCLEAR_ZBUFFER
@ WINED3D_SHADER_TYPE_HULL
@ WINED3D_SHADER_TYPE_PIXEL
@ WINED3D_SHADER_TYPE_GEOMETRY
@ WINED3D_SHADER_TYPE_DOMAIN
@ WINED3D_SHADER_TYPE_COMPUTE
@ WINED3D_SHADER_TYPE_VERTEX
@ WINED3D_SHADER_TYPE_COUNT
#define WINED3D_LEGACY_DEPTH_BIAS
#define WINED3DCOLORWRITEENABLE_ALPHA
#define WINED3D_BIND_RENDER_TARGET
@ WINED3D_STENCIL_OP_INCR
@ WINED3D_STENCIL_OP_KEEP
@ WINED3D_STENCIL_OP_REPLACE
@ WINED3D_STENCIL_OP_INVERT
@ WINED3D_STENCIL_OP_DECR_SAT
@ WINED3D_STENCIL_OP_DECR
@ WINED3D_STENCIL_OP_ZERO
@ WINED3D_STENCIL_OP_INCR_SAT
#define WINED3DCOLORWRITEENABLE_GREEN
#define WINED3D_BIND_CONSTANT_BUFFER
#define WINED3D_BIND_STREAM_OUTPUT
#define WINED3D_BIND_INDEX_BUFFER
#define STATE_DEPTH_STENCIL
static bool wined3d_context_is_graphics_state_dirty(const struct wined3d_context *context, unsigned int state_id)
static bool isStateDirty(const struct wined3d_context *context, unsigned int state_id)
#define STATE_STENCIL_REF
#define STATE_CONSTANT_BUFFER(a)
static BOOL wined3d_bitmap_get_range(const uint32_t *bitmap, unsigned int bit_count, unsigned int start, struct wined3d_range *range)
static int wined3d_uint64_compare(uint64_t x, uint64_t y)
#define MAX_CONSTANT_BUFFERS
#define STATE_GRAPHICS_SHADER_RESOURCE_BINDING
#define WINED3D_SLAB_BO_MIN_OBJECT_ALIGN
static BOOL use_transform_feedback(const struct wined3d_state *state)
#define STATE_STREAM_OUTPUT
static bool wined3d_state_uses_depth_buffer(const struct wined3d_state *state)
#define WINED3D_QUERY_POOL_SIZE
#define WINED3D_ALLOCATOR_MIN_BLOCK_SIZE
#define WINED3D_LOCATION_BUFFER
#define STATE_COMPUTE_SHADER
static int wined3d_uint32_compare(uint32_t x, uint32_t y)
wined3d_shader_resource_type
@ WINED3D_SHADER_RESOURCE_BUFFER
@ WINED3D_SHADER_RESOURCE_TEXTURE_3D
@ WINED3D_SHADER_RESOURCE_TEXTURE_2D
@ WINED3D_SHADER_RESOURCE_TEXTURE_1DARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DMSARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_2DMS
@ WINED3D_SHADER_RESOURCE_TEXTURE_CUBEARRAY
@ WINED3D_SHADER_RESOURCE_TEXTURE_CUBE
@ WINED3D_SHADER_RESOURCE_TEXTURE_1D
#define STATE_COMPUTE_CONSTANT_BUFFER
#define STATE_BLEND_FACTOR
static uint32_t wined3d_mask_from_size(unsigned int size)
#define WINED3D_ALLOCATOR_CHUNK_SIZE
#define STATE_SAMPLE_MASK
#define STATE_SCISSORRECT
static bool wined3d_primitive_type_is_list(enum wined3d_primitive_type t)
static BOOL is_rasterization_disabled(const struct wined3d_shader *geometry_shader)
#define STATE_COMPUTE_SHADER_RESOURCE_BINDING
#define WINED3D_LOCATION_TEXTURE_RGB
#define STATE_COMPUTE_UNORDERED_ACCESS_VIEW_BINDING
#define WINED3D_LOCATION_CLEARED
#define WINED3D_LOCATION_DISCARDED
static bool wined3d_context_is_compute_state_dirty(const struct wined3d_context *context, unsigned int state_id)
#define STATE_GRAPHICS_CONSTANT_BUFFER(a)
#define WINED3D_RETIRED_BO_SIZE_THRESHOLD
#define STATE_INDEXBUFFER
static unsigned int wined3d_blend_state_get_writemask(const struct wined3d_blend_state *state, unsigned int index)
#define STATE_FRAMEBUFFER
#define STATE_GRAPHICS_UNORDERED_ACCESS_VIEW_BINDING
static struct wined3d_texture * texture_from_resource(struct wined3d_resource *resource)
static struct wined3d_buffer * buffer_from_resource(struct wined3d_resource *resource)
#define WINED3D_FB_ATTACHMENT_FLAG_CLEAR_Z
static void wined3d_context_vk_reference_sampler(const struct wined3d_context_vk *context_vk, struct wined3d_sampler_vk *sampler_vk)
static void wined3d_unordered_access_view_vk_barrier(struct wined3d_unordered_access_view_vk *uav_vk, struct wined3d_context_vk *context_vk, uint32_t bind_mask)
#define WINED3D_FB_ATTACHMENT_FLAG_CLEAR_C
static void wined3d_device_vk_allocator_unlock(struct wined3d_device_vk *device_vk)
static void wined3d_context_vk_reference_unordered_access_view(const struct wined3d_context_vk *context_vk, struct wined3d_unordered_access_view_vk *uav_vk)
@ WINED3D_RETIRED_QUERY_POOL_VK
@ WINED3D_RETIRED_SAMPLER_VK
@ WINED3D_RETIRED_DESCRIPTOR_POOL_VK
@ WINED3D_RETIRED_ALLOCATOR_BLOCK_VK
@ WINED3D_RETIRED_EVENT_VK
@ WINED3D_RETIRED_BUFFER_VK
@ WINED3D_RETIRED_IMAGE_VIEW_VK
@ WINED3D_RETIRED_MEMORY_VK
@ WINED3D_RETIRED_FRAMEBUFFER_VK
@ WINED3D_RETIRED_IMAGE_VK
@ WINED3D_RETIRED_BUFFER_VIEW_VK
@ WINED3D_RETIRED_BO_SLAB_SLICE_VK
@ WINED3D_RETIRED_PIPELINE_VK
@ WINED3D_RETIRED_FREE_VK
@ WINED3D_SHADER_DESCRIPTOR_TYPE_UAV
@ WINED3D_SHADER_DESCRIPTOR_TYPE_SRV
@ WINED3D_SHADER_DESCRIPTOR_TYPE_UAV_COUNTER
@ WINED3D_SHADER_DESCRIPTOR_TYPE_CBV
@ WINED3D_SHADER_DESCRIPTOR_TYPE_SAMPLER
static void wined3d_context_vk_reference_shader_resource_view(const struct wined3d_context_vk *context_vk, struct wined3d_shader_resource_view_vk *srv_vk)
static void wined3d_shader_resource_view_vk_barrier(struct wined3d_shader_resource_view_vk *srv_vk, struct wined3d_context_vk *context_vk, uint32_t bind_mask)
static void wined3d_context_vk_reference_rendertarget_view(const struct wined3d_context_vk *context_vk, struct wined3d_rendertarget_view_vk *rtv_vk)
static void wined3d_device_vk_allocator_lock(struct wined3d_device_vk *device_vk)
@ WINED3D_VK_EXT_EXTENDED_DYNAMIC_STATE
@ WINED3D_VK_EXT_HOST_QUERY_RESET
@ WINED3D_VK_EXT_TRANSFORM_FEEDBACK
static struct wined3d_device_vk * wined3d_device_vk_from_allocator(struct wined3d_allocator *allocator)
#define WINED3D_FB_ATTACHMENT_FLAG_CLEAR_S
static VkImageView wined3d_rendertarget_view_vk_get_image_view(struct wined3d_rendertarget_view_vk *rtv_vk, struct wined3d_context_vk *context_vk)
static void wined3d_context_vk_reference_bo(const struct wined3d_context_vk *context_vk, struct wined3d_bo_vk *bo)
static void wined3d_rendertarget_view_vk_barrier(struct wined3d_rendertarget_view_vk *rtv_vk, struct wined3d_context_vk *context_vk, uint32_t bind_mask)
#define WINED3D_FB_ATTACHMENT_FLAG_DISCARDED
static unsigned int block