diff --git a/src/gallium/drivers/zink/zink_context.c b/src/gallium/drivers/zink/zink_context.c index 19c0ac0d456..62159a5a84e 100644 --- a/src/gallium/drivers/zink/zink_context.c +++ b/src/gallium/drivers/zink/zink_context.c @@ -3331,7 +3331,7 @@ zink_emit_string_marker(struct pipe_context *pctx, string, { 0 } }; - screen->vk_CmdInsertDebugUtilsLabelEXT(batch->state->cmdbuf, &label); + screen->vk.CmdInsertDebugUtilsLabelEXT(batch->state->cmdbuf, &label); free(temp); } diff --git a/src/gallium/drivers/zink/zink_descriptors.c b/src/gallium/drivers/zink/zink_descriptors.c index bd3a4aa651d..3999739f793 100644 --- a/src/gallium/drivers/zink/zink_descriptors.c +++ b/src/gallium/drivers/zink/zink_descriptors.c @@ -296,8 +296,8 @@ descriptor_layout_create(struct zink_screen *screen, enum zink_descriptor_type t supp.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT; supp.pNext = NULL; supp.supported = VK_FALSE; - if (screen->vk_GetDescriptorSetLayoutSupport) { - screen->vk_GetDescriptorSetLayoutSupport(screen->dev, &dcslci, &supp); + if (screen->vk.GetDescriptorSetLayoutSupport) { + screen->vk.GetDescriptorSetLayoutSupport(screen->dev, &dcslci, &supp); if (supp.supported == VK_FALSE) { debug_printf("vkGetDescriptorSetLayoutSupport claims layout is unsupported\n"); return VK_NULL_HANDLE; diff --git a/src/gallium/drivers/zink/zink_descriptors_lazy.c b/src/gallium/drivers/zink/zink_descriptors_lazy.c index 9e9d5326e30..f27bee32a45 100644 --- a/src/gallium/drivers/zink/zink_descriptors_lazy.c +++ b/src/gallium/drivers/zink/zink_descriptors_lazy.c @@ -254,7 +254,7 @@ zink_descriptor_program_init_lazy(struct zink_context *ctx, struct zink_program template[i].pipelineBindPoint = pg->is_compute ? VK_PIPELINE_BIND_POINT_COMPUTE : VK_PIPELINE_BIND_POINT_GRAPHICS; template[i].pipelineLayout = pg->layout; template[i].set = i; - if (screen->vk_CreateDescriptorUpdateTemplate(screen->dev, &template[i], NULL, &pg->dd->templates[i]) != VK_SUCCESS) + if (screen->vk.CreateDescriptorUpdateTemplate(screen->dev, &template[i], NULL, &pg->dd->templates[i]) != VK_SUCCESS) return false; } return true; @@ -267,7 +267,7 @@ zink_descriptor_program_deinit_lazy(struct zink_screen *screen, struct zink_prog return; for (unsigned i = 0; i < 1 + !!pg->dd->push_usage; i++) { if (pg->dd->templates[i]) - screen->vk_DestroyDescriptorUpdateTemplate(screen->dev, pg->dd->templates[i], NULL); + screen->vk.DestroyDescriptorUpdateTemplate(screen->dev, pg->dd->templates[i], NULL); } ralloc_free(pg->dd); } @@ -355,7 +355,7 @@ zink_descriptors_update_lazy(struct zink_context *ctx, bool is_compute) batch_changed |= bs->dd->pg[is_compute] != pg; assert(pg->dd->layout_key->num_descriptors); - screen->vk_UpdateDescriptorSetWithTemplate(screen->dev, desc_set, pg->dd->templates[0], ctx); + screen->vk.UpdateDescriptorSetWithTemplate(screen->dev, desc_set, pg->dd->templates[0], ctx); if (pg->dd->layout_key) vkCmdBindDescriptorSets(batch->state->cmdbuf, is_compute ? VK_PIPELINE_BIND_POINT_COMPUTE : VK_PIPELINE_BIND_POINT_GRAPHICS, @@ -372,13 +372,13 @@ zink_descriptors_update_lazy(struct zink_context *ctx, bool is_compute) 0, NULL); } if (screen->info.have_KHR_push_descriptor) - screen->vk_CmdPushDescriptorSetWithTemplateKHR(batch->state->cmdbuf, pg->dd->templates[1], + screen->vk.CmdPushDescriptorSetWithTemplateKHR(batch->state->cmdbuf, pg->dd->templates[1], pg->layout, 1, ctx); else { struct zink_descriptor_pool *pool = bs->dd->push_pool[is_compute]; VkDescriptorSet desc_set = get_descriptor_set_lazy(ctx, NULL, pool, is_compute); bs = ctx->batch.state; - screen->vk_UpdateDescriptorSetWithTemplate(screen->dev, desc_set, pg->dd->templates[1], ctx); + screen->vk.UpdateDescriptorSetWithTemplate(screen->dev, desc_set, pg->dd->templates[1], ctx); vkCmdBindDescriptorSets(batch->state->cmdbuf, is_compute ? VK_PIPELINE_BIND_POINT_COMPUTE : VK_PIPELINE_BIND_POINT_GRAPHICS, pg->layout, 1, 1, &desc_set, diff --git a/src/gallium/drivers/zink/zink_device_info.py b/src/gallium/drivers/zink/zink_device_info.py index 21481544996..1c34799f562 100644 --- a/src/gallium/drivers/zink/zink_device_info.py +++ b/src/gallium/drivers/zink/zink_device_info.py @@ -341,7 +341,7 @@ zink_get_physical_device_info(struct zink_screen *screen) } // get device features - if (screen->vk_GetPhysicalDeviceFeatures2) { + if (screen->vk.GetPhysicalDeviceFeatures2) { // check for device extension features info->feats.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2; @@ -366,13 +366,13 @@ zink_get_physical_device_info(struct zink_screen *screen) %endif %endfor - screen->vk_GetPhysicalDeviceFeatures2(screen->pdev, &info->feats); + screen->vk.GetPhysicalDeviceFeatures2(screen->pdev, &info->feats); } else { vkGetPhysicalDeviceFeatures(screen->pdev, &info->feats.features); } // check for device properties - if (screen->vk_GetPhysicalDeviceProperties2) { + if (screen->vk.GetPhysicalDeviceProperties2) { VkPhysicalDeviceProperties2 props = {}; props.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; @@ -397,11 +397,11 @@ zink_get_physical_device_info(struct zink_screen *screen) %endfor // note: setting up local VkPhysicalDeviceProperties2. - screen->vk_GetPhysicalDeviceProperties2(screen->pdev, &props); + screen->vk.GetPhysicalDeviceProperties2(screen->pdev, &props); } // enable the extensions if they match the conditions given by ext.enable_conds - if (screen->vk_GetPhysicalDeviceProperties2) { + if (screen->vk.GetPhysicalDeviceProperties2) { %for ext in extensions: <%helpers:guard ext="${ext}"> <% diff --git a/src/gallium/drivers/zink/zink_draw.c b/src/gallium/drivers/zink/zink_draw.c index 989ae837b93..2111498be2e 100644 --- a/src/gallium/drivers/zink/zink_draw.c +++ b/src/gallium/drivers/zink/zink_draw.c @@ -95,7 +95,7 @@ zink_emit_stream_output_targets(struct pipe_context *pctx) t->base.buffer_offset + t->base.buffer_size); } - screen->vk_CmdBindTransformFeedbackBuffersEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, + screen->vk.CmdBindTransformFeedbackBuffersEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, buffers, buffer_offsets, buffer_sizes); ctx->dirty_so_targets = false; @@ -151,7 +151,7 @@ zink_bind_vertex_buffers(struct zink_batch *batch, struct zink_context *ctx) } if (screen->info.have_EXT_extended_dynamic_state) - screen->vk_CmdBindVertexBuffers2EXT(batch->state->cmdbuf, 0, + screen->vk.CmdBindVertexBuffers2EXT(batch->state->cmdbuf, 0, elems->hw_state.num_bindings, buffers, buffer_offsets, NULL, buffer_strides); else @@ -559,7 +559,7 @@ zink_draw_vbo(struct pipe_context *pctx, viewports[i] = viewport; } if (screen->info.have_EXT_extended_dynamic_state) - screen->vk_CmdSetViewportWithCountEXT(batch->state->cmdbuf, ctx->vp_state.num_viewports, viewports); + screen->vk.CmdSetViewportWithCountEXT(batch->state->cmdbuf, ctx->vp_state.num_viewports, viewports); else vkCmdSetViewport(batch->state->cmdbuf, 0, ctx->vp_state.num_viewports, viewports); } @@ -581,7 +581,7 @@ zink_draw_vbo(struct pipe_context *pctx, } } if (screen->info.have_EXT_extended_dynamic_state) - screen->vk_CmdSetScissorWithCountEXT(batch->state->cmdbuf, ctx->vp_state.num_viewports, scissors); + screen->vk.CmdSetScissorWithCountEXT(batch->state->cmdbuf, ctx->vp_state.num_viewports, scissors); else vkCmdSetScissor(batch->state->cmdbuf, 0, ctx->vp_state.num_viewports, scissors); } @@ -608,23 +608,23 @@ zink_draw_vbo(struct pipe_context *pctx, } if (screen->info.have_EXT_extended_dynamic_state) { - screen->vk_CmdSetDepthBoundsTestEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_bounds_test); + screen->vk.CmdSetDepthBoundsTestEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_bounds_test); if (dsa_state->hw_state.depth_bounds_test) vkCmdSetDepthBounds(batch->state->cmdbuf, dsa_state->hw_state.min_depth_bounds, dsa_state->hw_state.max_depth_bounds); - screen->vk_CmdSetDepthTestEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_test); + screen->vk.CmdSetDepthTestEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_test); if (dsa_state->hw_state.depth_test) - screen->vk_CmdSetDepthCompareOpEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_compare_op); - screen->vk_CmdSetDepthWriteEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_write); - screen->vk_CmdSetStencilTestEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.stencil_test); + screen->vk.CmdSetDepthCompareOpEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_compare_op); + screen->vk.CmdSetDepthWriteEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.depth_write); + screen->vk.CmdSetStencilTestEnableEXT(batch->state->cmdbuf, dsa_state->hw_state.stencil_test); if (dsa_state->hw_state.stencil_test) { - screen->vk_CmdSetStencilOpEXT(batch->state->cmdbuf, VK_STENCIL_FACE_FRONT_BIT, + screen->vk.CmdSetStencilOpEXT(batch->state->cmdbuf, VK_STENCIL_FACE_FRONT_BIT, dsa_state->hw_state.stencil_front.failOp, dsa_state->hw_state.stencil_front.passOp, dsa_state->hw_state.stencil_front.depthFailOp, dsa_state->hw_state.stencil_front.compareOp); - screen->vk_CmdSetStencilOpEXT(batch->state->cmdbuf, VK_STENCIL_FACE_BACK_BIT, + screen->vk.CmdSetStencilOpEXT(batch->state->cmdbuf, VK_STENCIL_FACE_BACK_BIT, dsa_state->hw_state.stencil_back.failOp, dsa_state->hw_state.stencil_back.passOp, dsa_state->hw_state.stencil_back.depthFailOp, @@ -641,12 +641,12 @@ zink_draw_vbo(struct pipe_context *pctx, vkCmdSetStencilCompareMask(batch->state->cmdbuf, VK_STENCIL_FACE_FRONT_AND_BACK, dsa_state->hw_state.stencil_front.compareMask); } } - screen->vk_CmdSetFrontFaceEXT(batch->state->cmdbuf, ctx->gfx_pipeline_state.front_face); + screen->vk.CmdSetFrontFaceEXT(batch->state->cmdbuf, ctx->gfx_pipeline_state.front_face); if (ctx->sample_locations_changed) { VkSampleLocationsInfoEXT loc; zink_init_vk_sample_locations(ctx, &loc); - screen->vk_CmdSetSampleLocationsEXT(batch->state->cmdbuf, &loc); + screen->vk.CmdSetSampleLocationsEXT(batch->state->cmdbuf, &loc); } ctx->sample_locations_changed = false; } @@ -688,7 +688,7 @@ zink_draw_vbo(struct pipe_context *pctx, } } } - screen->vk_CmdBeginTransformFeedbackEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, counter_buffers, counter_buffer_offsets); + screen->vk.CmdBeginTransformFeedbackEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, counter_buffers, counter_buffer_offsets); } ctx->pipeline_changed[0] = false; @@ -728,7 +728,7 @@ zink_draw_vbo(struct pipe_context *pctx, if (dindirect->indirect_draw_count) { struct zink_resource *indirect_draw_count = zink_resource(dindirect->indirect_draw_count); zink_batch_reference_resource_rw(batch, indirect_draw_count, false); - screen->vk_CmdDrawIndexedIndirectCount(batch->state->cmdbuf, indirect->obj->buffer, dindirect->offset, + screen->vk.CmdDrawIndexedIndirectCount(batch->state->cmdbuf, indirect->obj->buffer, dindirect->offset, indirect_draw_count->obj->buffer, dindirect->indirect_draw_count_offset, dindirect->draw_count, dindirect->stride); } else @@ -745,7 +745,7 @@ zink_draw_vbo(struct pipe_context *pctx, update_drawid(ctx, draw_id); zink_batch_reference_resource_rw(batch, zink_resource(so_target->base.buffer), false); zink_batch_reference_resource_rw(batch, zink_resource(so_target->counter_buffer), true); - screen->vk_CmdDrawIndirectByteCountEXT(batch->state->cmdbuf, dinfo->instance_count, dinfo->start_instance, + screen->vk.CmdDrawIndirectByteCountEXT(batch->state->cmdbuf, dinfo->instance_count, dinfo->start_instance, zink_resource(so_target->counter_buffer)->obj->buffer, so_target->counter_buffer_offset, 0, MIN2(so_target->stride, screen->info.tf_props.maxTransformFeedbackBufferDataStride)); } else if (dindirect && dindirect->buffer) { @@ -757,7 +757,7 @@ zink_draw_vbo(struct pipe_context *pctx, if (dindirect->indirect_draw_count) { struct zink_resource *indirect_draw_count = zink_resource(dindirect->indirect_draw_count); zink_batch_reference_resource_rw(batch, indirect_draw_count, false); - screen->vk_CmdDrawIndirectCount(batch->state->cmdbuf, indirect->obj->buffer, dindirect->offset, + screen->vk.CmdDrawIndirectCount(batch->state->cmdbuf, indirect->obj->buffer, dindirect->offset, indirect_draw_count->obj->buffer, dindirect->indirect_draw_count_offset, dindirect->draw_count, dindirect->stride); } else @@ -779,7 +779,7 @@ zink_draw_vbo(struct pipe_context *pctx, t->counter_buffer_valid = true; } } - screen->vk_CmdEndTransformFeedbackEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, counter_buffers, counter_buffer_offsets); + screen->vk.CmdEndTransformFeedbackEXT(batch->state->cmdbuf, 0, ctx->num_so_targets, counter_buffers, counter_buffer_offsets); } batch->has_work = true; /* check memory usage and flush/stall as needed to avoid oom */ diff --git a/src/gallium/drivers/zink/zink_extensions.py b/src/gallium/drivers/zink/zink_extensions.py index 64fea666735..2a084a9881f 100644 --- a/src/gallium/drivers/zink/zink_extensions.py +++ b/src/gallium/drivers/zink/zink_extensions.py @@ -151,7 +151,6 @@ class ExtensionRegistryEntry: # the version in which the extension is promoted to core VK promoted_in : Version = None # functions added by the extension are referred to as "commands" in the registry - commands : List[str] = None device_commands : List[str] = None pdevice_commands : List[str] = None instance_commands : List[str] = None diff --git a/src/gallium/drivers/zink/zink_instance.py b/src/gallium/drivers/zink/zink_instance.py index 26b14240bad..73f983ab323 100644 --- a/src/gallium/drivers/zink/zink_instance.py +++ b/src/gallium/drivers/zink/zink_instance.py @@ -95,9 +95,6 @@ struct zink_instance_info { VkInstance zink_create_instance(struct zink_instance_info *instance_info); -bool -zink_load_instance_extensions(struct zink_screen *screen); - bool zink_verify_instance_extensions(struct zink_screen *screen); @@ -220,41 +217,6 @@ zink_create_instance(struct zink_instance_info *instance_info) return instance; } -bool -zink_load_instance_extensions(struct zink_screen *screen) -{ - if (zink_debug & ZINK_DEBUG_VALIDATION) { - printf("zink: Loader %d.%d.%d \\n", VK_VERSION_MAJOR(screen->instance_info.loader_version), VK_VERSION_MINOR(screen->instance_info.loader_version), VK_VERSION_PATCH(screen->instance_info.loader_version)); - } - -%for ext in extensions: -%if bool(ext.instance_funcs) and not ext.core_since: - if (screen->instance_info.have_${ext.name_with_vendor()}) { - %for func in ext.instance_funcs: - GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, ${func}${ext.vendor()}); - screen->vk_${func} = vk_${func}${ext.vendor()}; - %endfor - } -%elif bool(ext.instance_funcs): - if (screen->instance_info.have_${ext.name_with_vendor()}) { - if (screen->vk_version < ${ext.core_since.version()}) { - %for func in ext.instance_funcs: - GET_PROC_ADDR_INSTANCE_LOCAL(screen->instance, ${func}${ext.vendor()}); - screen->vk_${func} = vk_${func}${ext.vendor()}; - if (!screen->vk_${func}) return false; - %endfor - } else { - %for func in ext.instance_funcs: - GET_PROC_ADDR_INSTANCE(${func}); - %endfor - } - } -%endif -%endfor - - return true; -} - bool zink_verify_instance_extensions(struct zink_screen *screen) { diff --git a/src/gallium/drivers/zink/zink_query.c b/src/gallium/drivers/zink/zink_query.c index f6cda574724..9dcc1381e2b 100644 --- a/src/gallium/drivers/zink/zink_query.c +++ b/src/gallium/drivers/zink/zink_query.c @@ -659,20 +659,20 @@ begin_query(struct zink_context *ctx, struct zink_batch *batch, struct zink_quer if (q->type == PIPE_QUERY_PRIMITIVES_EMITTED || q->type == PIPE_QUERY_PRIMITIVES_GENERATED || q->type == PIPE_QUERY_SO_OVERFLOW_PREDICATE) { - zink_screen(ctx->base.screen)->vk_CmdBeginQueryIndexedEXT(batch->state->cmdbuf, + zink_screen(ctx->base.screen)->vk.CmdBeginQueryIndexedEXT(batch->state->cmdbuf, q->xfb_query_pool[0] ? q->xfb_query_pool[0] : q->query_pool, q->curr_query, flags, q->index); q->xfb_running = true; } else if (q->type == PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE) { - zink_screen(ctx->base.screen)->vk_CmdBeginQueryIndexedEXT(batch->state->cmdbuf, + zink_screen(ctx->base.screen)->vk.CmdBeginQueryIndexedEXT(batch->state->cmdbuf, q->query_pool, q->curr_query, flags, 0); for (unsigned i = 0; i < ARRAY_SIZE(q->xfb_query_pool); i++) - zink_screen(ctx->base.screen)->vk_CmdBeginQueryIndexedEXT(batch->state->cmdbuf, + zink_screen(ctx->base.screen)->vk.CmdBeginQueryIndexedEXT(batch->state->cmdbuf, q->xfb_query_pool[i], q->curr_query, flags, @@ -722,15 +722,15 @@ end_query(struct zink_context *ctx, struct zink_batch *batch, struct zink_query } else if (q->type == PIPE_QUERY_PRIMITIVES_EMITTED || q->type == PIPE_QUERY_PRIMITIVES_GENERATED || q->type == PIPE_QUERY_SO_OVERFLOW_PREDICATE) { - screen->vk_CmdEndQueryIndexedEXT(batch->state->cmdbuf, q->xfb_query_pool[0] ? q->xfb_query_pool[0] : + screen->vk.CmdEndQueryIndexedEXT(batch->state->cmdbuf, q->xfb_query_pool[0] ? q->xfb_query_pool[0] : q->query_pool, q->curr_query, q->index); } else if (q->type == PIPE_QUERY_SO_OVERFLOW_ANY_PREDICATE) { - screen->vk_CmdEndQueryIndexedEXT(batch->state->cmdbuf, q->query_pool, q->curr_query, 0); + screen->vk.CmdEndQueryIndexedEXT(batch->state->cmdbuf, q->query_pool, q->curr_query, 0); for (unsigned i = 0; i < ARRAY_SIZE(q->xfb_query_pool); i++) { - screen->vk_CmdEndQueryIndexedEXT(batch->state->cmdbuf, q->xfb_query_pool[i], q->curr_query, i + 1); + screen->vk.CmdEndQueryIndexedEXT(batch->state->cmdbuf, q->xfb_query_pool[i], q->curr_query, i + 1); } } if (q->vkqtype != VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT && !is_time_query(q)) @@ -857,7 +857,7 @@ zink_start_conditional_render(struct zink_context *ctx) begin_info.sType = VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT; begin_info.buffer = ctx->render_condition.query->predicate->obj->buffer; begin_info.flags = begin_flags; - screen->vk_CmdBeginConditionalRenderingEXT(batch->state->cmdbuf, &begin_info); + screen->vk.CmdBeginConditionalRenderingEXT(batch->state->cmdbuf, &begin_info); zink_batch_reference_resource_rw(batch, ctx->render_condition.query->predicate, false); } @@ -867,7 +867,7 @@ zink_stop_conditional_render(struct zink_context *ctx) struct zink_batch *batch = &ctx->batch; struct zink_screen *screen = zink_screen(ctx->base.screen); zink_clear_apply_conditionals(ctx); - screen->vk_CmdEndConditionalRenderingEXT(batch->state->cmdbuf); + screen->vk.CmdEndConditionalRenderingEXT(batch->state->cmdbuf); } static void @@ -1005,7 +1005,7 @@ zink_get_timestamp(struct pipe_context *pctx) VkCalibratedTimestampInfoEXT cti = {}; cti.sType = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT; cti.timeDomain = VK_TIME_DOMAIN_DEVICE_EXT; - screen->vk_GetCalibratedTimestampsEXT(screen->dev, 1, &cti, ×tamp, &deviation); + screen->vk.GetCalibratedTimestampsEXT(screen->dev, 1, &cti, ×tamp, &deviation); timestamp_to_nanoseconds(screen, ×tamp); return timestamp; } diff --git a/src/gallium/drivers/zink/zink_resource.c b/src/gallium/drivers/zink/zink_resource.c index 8e5b04ad9ef..d37a93bbe49 100644 --- a/src/gallium/drivers/zink/zink_resource.c +++ b/src/gallium/drivers/zink/zink_resource.c @@ -301,7 +301,7 @@ check_ici(struct zink_screen *screen, VkImageCreateInfo *ici) { VkImageFormatProperties image_props; VkResult ret; - if (screen->vk_GetPhysicalDeviceImageFormatProperties2) { + if (screen->vk.GetPhysicalDeviceImageFormatProperties2) { VkImageFormatProperties2 props2 = {}; props2.sType = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2; VkPhysicalDeviceImageFormatInfo2 info = {}; @@ -311,7 +311,7 @@ check_ici(struct zink_screen *screen, VkImageCreateInfo *ici) info.tiling = ici->tiling; info.usage = ici->usage; info.flags = ici->flags; - ret = screen->vk_GetPhysicalDeviceImageFormatProperties2(screen->pdev, &info, &props2); + ret = screen->vk.GetPhysicalDeviceImageFormatProperties2(screen->pdev, &info, &props2); image_props = props2.imageFormatProperties; } else ret = vkGetPhysicalDeviceImageFormatProperties(screen->pdev, ici->format, ici->imageType, @@ -691,7 +691,7 @@ zink_resource_get_handle(struct pipe_screen *pscreen, //TODO: remove for wsi fd_info.memory = obj->mem; fd_info.handleType = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT; - VkResult result = (*screen->vk_GetMemoryFdKHR)(screen->dev, &fd_info, &fd); + VkResult result = (*screen->vk.GetMemoryFdKHR)(screen->dev, &fd_info, &fd); if (result != VK_SUCCESS) return false; whandle->handle = fd; diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 641f7426752..44f4409dc4f 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -962,7 +962,7 @@ zink_destroy_screen(struct pipe_screen *pscreen) struct zink_screen *screen = zink_screen(pscreen); if (VK_NULL_HANDLE != screen->debugUtilsCallbackHandle) { - screen->vk_DestroyDebugUtilsMessengerEXT(screen->instance, screen->debugUtilsCallbackHandle, NULL); + screen->vk.DestroyDebugUtilsMessengerEXT(screen->instance, screen->debugUtilsCallbackHandle, NULL); } hash_table_foreach(&screen->surface_cache, entry) { @@ -1225,11 +1225,11 @@ static bool check_have_device_time(struct zink_screen *screen) { uint32_t num_domains = 0; - screen->vk_GetPhysicalDeviceCalibrateableTimeDomainsEXT(screen->pdev, &num_domains, NULL); + screen->vk.GetPhysicalDeviceCalibrateableTimeDomainsEXT(screen->pdev, &num_domains, NULL); assert(num_domains > 0); VkTimeDomainEXT *domains = malloc(sizeof(VkTimeDomainEXT) * num_domains); - screen->vk_GetPhysicalDeviceCalibrateableTimeDomainsEXT(screen->pdev, &num_domains, domains); + screen->vk.GetPhysicalDeviceCalibrateableTimeDomainsEXT(screen->pdev, &num_domains, domains); /* VK_TIME_DOMAIN_DEVICE_EXT is used for the ctx->get_timestamp hook and is the only one we really need */ for (unsigned i = 0; i < num_domains; i++) { @@ -1242,80 +1242,6 @@ check_have_device_time(struct zink_screen *screen) return false; } -static bool -load_device_extensions(struct zink_screen *screen) -{ - if (screen->info.have_EXT_transform_feedback) { - GET_PROC_ADDR(CmdBindTransformFeedbackBuffersEXT); - GET_PROC_ADDR(CmdBeginTransformFeedbackEXT); - GET_PROC_ADDR(CmdEndTransformFeedbackEXT); - GET_PROC_ADDR(CmdBeginQueryIndexedEXT); - GET_PROC_ADDR(CmdEndQueryIndexedEXT); - GET_PROC_ADDR(CmdDrawIndirectByteCountEXT); - } - if (screen->info.have_KHR_external_memory_fd) - GET_PROC_ADDR(GetMemoryFdKHR); - - if (screen->info.have_EXT_conditional_rendering) { - GET_PROC_ADDR(CmdBeginConditionalRenderingEXT); - GET_PROC_ADDR(CmdEndConditionalRenderingEXT); - } - - if (screen->info.have_KHR_draw_indirect_count) { - GET_PROC_ADDR_KHR(CmdDrawIndexedIndirectCount); - GET_PROC_ADDR_KHR(CmdDrawIndirectCount); - } - - if (screen->info.have_EXT_calibrated_timestamps) { - GET_PROC_ADDR_INSTANCE(GetPhysicalDeviceCalibrateableTimeDomainsEXT); - GET_PROC_ADDR(GetCalibratedTimestampsEXT); - } - if (screen->info.have_EXT_extended_dynamic_state) { - GET_PROC_ADDR(CmdSetViewportWithCountEXT); - GET_PROC_ADDR(CmdSetScissorWithCountEXT); - GET_PROC_ADDR(CmdSetDepthBoundsTestEnableEXT); - GET_PROC_ADDR(CmdSetDepthCompareOpEXT); - GET_PROC_ADDR(CmdSetDepthTestEnableEXT); - GET_PROC_ADDR(CmdSetDepthWriteEnableEXT); - GET_PROC_ADDR(CmdSetStencilOpEXT); - GET_PROC_ADDR(CmdSetStencilTestEnableEXT); - GET_PROC_ADDR(CmdBindVertexBuffers2EXT); - GET_PROC_ADDR(CmdSetFrontFaceEXT); - } - - if (screen->info.have_EXT_image_drm_format_modifier) - GET_PROC_ADDR(GetImageDrmFormatModifierPropertiesEXT); - - if (screen->info.have_KHR_timeline_semaphore) - GET_PROC_ADDR_KHR(WaitSemaphores); - - if (screen->info.have_KHR_maintenance3) - GET_PROC_ADDR_KHR(GetDescriptorSetLayoutSupport); - - if (screen->info.have_KHR_push_descriptor) { - GET_PROC_ADDR(CmdPushDescriptorSetKHR); - GET_PROC_ADDR(CmdPushDescriptorSetWithTemplateKHR); - } - - if (screen->info.have_KHR_descriptor_update_template) { - GET_PROC_ADDR_KHR(CreateDescriptorUpdateTemplate); - GET_PROC_ADDR_KHR(DestroyDescriptorUpdateTemplate); - GET_PROC_ADDR_KHR(UpdateDescriptorSetWithTemplate); - } - - if (screen->info.have_KHR_swapchain) { - GET_PROC_ADDR(CreateSwapchainKHR); - GET_PROC_ADDR(DestroySwapchainKHR); - } - - if (screen->info.have_EXT_sample_locations) { - GET_PROC_ADDR(CmdSetSampleLocationsEXT); - GET_PROC_ADDR_INSTANCE(GetPhysicalDeviceMultisamplePropertiesEXT); - } - - return true; -} - static VKAPI_ATTR VkBool32 VKAPI_CALL zink_debug_util_callback( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, @@ -1342,10 +1268,6 @@ zink_debug_util_callback( static bool create_debug(struct zink_screen *screen) { - GET_PROC_ADDR_INSTANCE(CreateDebugUtilsMessengerEXT); - GET_PROC_ADDR_INSTANCE(DestroyDebugUtilsMessengerEXT); - GET_PROC_ADDR_INSTANCE(CmdInsertDebugUtilsLabelEXT); - VkDebugUtilsMessengerCreateInfoEXT vkDebugUtilsMessengerCreateInfoEXT = { VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT, NULL, @@ -1363,7 +1285,7 @@ create_debug(struct zink_screen *screen) VkDebugUtilsMessengerEXT vkDebugUtilsCallbackEXT = VK_NULL_HANDLE; - screen->vk_CreateDebugUtilsMessengerEXT( + screen->vk.CreateDebugUtilsMessengerEXT( screen->instance, &vkDebugUtilsMessengerCreateInfoEXT, NULL, @@ -1390,25 +1312,25 @@ zink_internal_setup_moltenvk(struct zink_screen *screen) GET_PROC_ADDR_INSTANCE(UseIOSurfaceMVK); GET_PROC_ADDR_INSTANCE(GetIOSurfaceMVK); - if (screen->vk_GetVersionStringsMVK) { + if (screen->vk.GetVersionStringsMVK) { char molten_version[64] = {0}; char vulkan_version[64] = {0}; - (*screen->vk_GetVersionStringsMVK)(molten_version, sizeof(molten_version) - 1, vulkan_version, sizeof(vulkan_version) - 1); + (*screen->vk.GetVersionStringsMVK)(molten_version, sizeof(molten_version) - 1, vulkan_version, sizeof(vulkan_version) - 1); printf("zink: MoltenVK %s Vulkan %s \n", molten_version, vulkan_version); } - if (screen->vk_GetMoltenVKConfigurationMVK && screen->vk_SetMoltenVKConfigurationMVK) { + if (screen->vk.GetMoltenVKConfigurationMVK && screen->vk.SetMoltenVKConfigurationMVK) { MVKConfiguration molten_config = {0}; size_t molten_config_size = sizeof(molten_config); - VkResult res = (*screen->vk_GetMoltenVKConfigurationMVK)(screen->instance, &molten_config, &molten_config_size); + VkResult res = (*screen->vk.GetMoltenVKConfigurationMVK)(screen->instance, &molten_config, &molten_config_size); if (res == VK_SUCCESS || res == VK_INCOMPLETE) { // Needed to allow MoltenVK to accept VkImageView swizzles. // Encountered when using VK_FORMAT_R8G8_UNORM molten_config.fullImageViewSwizzle = VK_TRUE; - (*screen->vk_SetMoltenVKConfigurationMVK)(screen->instance, &molten_config, &molten_config_size); + (*screen->vk.SetMoltenVKConfigurationMVK)(screen->instance, &molten_config, &molten_config_size); } } #endif // MVK_VERSION @@ -1439,10 +1361,10 @@ populate_format_props(struct zink_screen *screen) VkFormat format = zink_get_format(screen, i); if (!format) continue; - if (screen->vk_GetPhysicalDeviceFormatProperties2) { + if (screen->vk.GetPhysicalDeviceFormatProperties2) { VkFormatProperties2 props = {}; props.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2; - screen->vk_GetPhysicalDeviceFormatProperties2(screen->pdev, format, &props); + screen->vk.GetPhysicalDeviceFormatProperties2(screen->pdev, format, &props); screen->format_props[i] = props.formatProperties; } else vkGetPhysicalDeviceFormatProperties(screen->pdev, format, &screen->format_props[i]); @@ -1487,7 +1409,7 @@ zink_screen_timeline_wait(struct zink_screen *screen, uint32_t batch_id, uint64_ bool success = false; if (screen->device_lost) return true; - VkResult ret = screen->vk_WaitSemaphores(screen->dev, &wi, timeout); + VkResult ret = screen->vk.WaitSemaphores(screen->dev, &wi, timeout); success = zink_screen_handle_vkresult(screen, ret); if (success) @@ -1519,14 +1441,14 @@ zink_query_memory_info(struct pipe_screen *pscreen, struct pipe_memory_info *inf { struct zink_screen *screen = zink_screen(pscreen); memset(info, 0, sizeof(struct pipe_memory_info)); - if (screen->info.have_EXT_memory_budget && screen->vk_GetPhysicalDeviceMemoryProperties2) { + if (screen->info.have_EXT_memory_budget && screen->vk.GetPhysicalDeviceMemoryProperties2) { VkPhysicalDeviceMemoryProperties2 mem = {}; mem.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2; VkPhysicalDeviceMemoryBudgetPropertiesEXT budget = {}; budget.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT; mem.pNext = &budget; - screen->vk_GetPhysicalDeviceMemoryProperties2(screen->pdev, &mem); + screen->vk.GetPhysicalDeviceMemoryProperties2(screen->pdev, &mem); for (unsigned i = 0; i < mem.memoryProperties.memoryHeapCount; i++) { if (mem.memoryProperties.memoryHeaps[i].flags == VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT) { @@ -1663,9 +1585,6 @@ zink_internal_create_screen(const struct pipe_screen_config *config) vk_instance_dispatch_table_load(&screen->vk.instance, &vkGetInstanceProcAddr, screen->instance); vk_physical_device_dispatch_table_load(&screen->vk.physical_device, &vkGetInstanceProcAddr, screen->instance); - if (!zink_load_instance_extensions(screen)) - goto fail; - if (!zink_verify_instance_extensions(screen)) goto fail; @@ -1706,9 +1625,6 @@ zink_internal_create_screen(const struct pipe_screen_config *config) /* this has bad perf on AMD */ screen->info.have_KHR_push_descriptor = false; - if (!load_device_extensions(screen)) - goto fail; - vk_device_dispatch_table_load(&screen->vk.device, &vkGetDeviceProcAddr, screen->dev); if (!zink_verify_device_extensions(screen)) @@ -1748,7 +1664,7 @@ zink_internal_create_screen(const struct pipe_screen_config *config) prop.pNext = NULL; for (unsigned i = 0; i < ARRAY_SIZE(screen->maxSampleLocationGridSize); i++) { if (screen->info.sample_locations_props.sampleLocationSampleCounts & (1 << i)) { - screen->vk_GetPhysicalDeviceMultisamplePropertiesEXT(screen->pdev, 1 << i, &prop); + screen->vk.GetPhysicalDeviceMultisamplePropertiesEXT(screen->pdev, 1 << i, &prop); screen->maxSampleLocationGridSize[i] = prop.maxSampleLocationGridSize; } } diff --git a/src/gallium/drivers/zink/zink_screen.h b/src/gallium/drivers/zink/zink_screen.h index aeb6e3c3262..d03bb9dd3c2 100644 --- a/src/gallium/drivers/zink/zink_screen.h +++ b/src/gallium/drivers/zink/zink_screen.h @@ -117,23 +117,6 @@ struct zink_screen { struct vk_dispatch_table vk; - PFN_vkGetPhysicalDeviceFeatures2 vk_GetPhysicalDeviceFeatures2; - PFN_vkGetPhysicalDeviceProperties2 vk_GetPhysicalDeviceProperties2; - PFN_vkGetPhysicalDeviceFormatProperties2 vk_GetPhysicalDeviceFormatProperties2; - PFN_vkGetPhysicalDeviceImageFormatProperties2 vk_GetPhysicalDeviceImageFormatProperties2; - PFN_vkGetPhysicalDeviceMemoryProperties2 vk_GetPhysicalDeviceMemoryProperties2; - - PFN_vkCmdDrawIndirectCount vk_CmdDrawIndirectCount; - PFN_vkCmdDrawIndexedIndirectCount vk_CmdDrawIndexedIndirectCount; - - PFN_vkWaitSemaphores vk_WaitSemaphores; - - PFN_vkGetDescriptorSetLayoutSupport vk_GetDescriptorSetLayoutSupport; - PFN_vkCmdPushDescriptorSetKHR vk_CmdPushDescriptorSetKHR; - PFN_vkCreateDescriptorUpdateTemplate vk_CreateDescriptorUpdateTemplate; - PFN_vkDestroyDescriptorUpdateTemplate vk_DestroyDescriptorUpdateTemplate; - PFN_vkUpdateDescriptorSetWithTemplate vk_UpdateDescriptorSetWithTemplate; - PFN_vkCmdPushDescriptorSetWithTemplateKHR vk_CmdPushDescriptorSetWithTemplateKHR; bool (*descriptor_program_init)(struct zink_context *ctx, struct zink_program *pg); void (*descriptor_program_deinit)(struct zink_screen *screen, struct zink_program *pg); void (*descriptors_update)(struct zink_context *ctx, bool is_compute); @@ -148,35 +131,6 @@ struct zink_screen { void (*descriptors_deinit)(struct zink_context *ctx); bool lazy_descriptors; - PFN_vkGetMemoryFdKHR vk_GetMemoryFdKHR; - PFN_vkCmdBeginConditionalRenderingEXT vk_CmdBeginConditionalRenderingEXT; - PFN_vkCmdEndConditionalRenderingEXT vk_CmdEndConditionalRenderingEXT; - - PFN_vkCmdBindTransformFeedbackBuffersEXT vk_CmdBindTransformFeedbackBuffersEXT; - PFN_vkCmdBeginTransformFeedbackEXT vk_CmdBeginTransformFeedbackEXT; - PFN_vkCmdEndTransformFeedbackEXT vk_CmdEndTransformFeedbackEXT; - PFN_vkCmdBeginQueryIndexedEXT vk_CmdBeginQueryIndexedEXT; - PFN_vkCmdEndQueryIndexedEXT vk_CmdEndQueryIndexedEXT; - PFN_vkCmdDrawIndirectByteCountEXT vk_CmdDrawIndirectByteCountEXT; - - PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vk_GetPhysicalDeviceCalibrateableTimeDomainsEXT; - PFN_vkGetCalibratedTimestampsEXT vk_GetCalibratedTimestampsEXT; - - PFN_vkCmdSetViewportWithCountEXT vk_CmdSetViewportWithCountEXT; - PFN_vkCmdSetScissorWithCountEXT vk_CmdSetScissorWithCountEXT; - PFN_vkCmdSetDepthBoundsTestEnableEXT vk_CmdSetDepthBoundsTestEnableEXT; - PFN_vkCmdSetDepthCompareOpEXT vk_CmdSetDepthCompareOpEXT; - PFN_vkCmdSetDepthTestEnableEXT vk_CmdSetDepthTestEnableEXT; - PFN_vkCmdSetDepthWriteEnableEXT vk_CmdSetDepthWriteEnableEXT; - PFN_vkCmdSetStencilTestEnableEXT vk_CmdSetStencilTestEnableEXT; - PFN_vkCmdSetStencilOpEXT vk_CmdSetStencilOpEXT; - PFN_vkCmdBindVertexBuffers2EXT vk_CmdBindVertexBuffers2EXT; - PFN_vkCmdSetFrontFaceEXT vk_CmdSetFrontFaceEXT; - - PFN_vkCreateDebugUtilsMessengerEXT vk_CreateDebugUtilsMessengerEXT; - PFN_vkDestroyDebugUtilsMessengerEXT vk_DestroyDebugUtilsMessengerEXT; - PFN_vkCmdInsertDebugUtilsLabelEXT vk_CmdInsertDebugUtilsLabelEXT; - #if defined(MVK_VERSION) PFN_vkGetMoltenVKConfigurationMVK vk_GetMoltenVKConfigurationMVK; PFN_vkSetMoltenVKConfigurationMVK vk_SetMoltenVKConfigurationMVK; @@ -187,16 +141,11 @@ struct zink_screen { PFN_vkGetIOSurfaceMVK vk_GetIOSurfaceMVK; #endif - PFN_vkCreateSwapchainKHR vk_CreateSwapchainKHR; - PFN_vkDestroySwapchainKHR vk_DestroySwapchainKHR; - struct { bool dual_color_blend_by_location; bool inline_uniforms; } driconf; - PFN_vkGetImageDrmFormatModifierPropertiesEXT vk_GetImageDrmFormatModifierPropertiesEXT; - VkFormatProperties format_props[PIPE_FORMAT_COUNT]; struct { uint32_t image_view;