{
VN_CMD_ENQUEUE(vkCmdEndConditionalRenderingEXT, commandBuffer);
}
+
+void
+vn_CmdDrawMultiEXT(VkCommandBuffer commandBuffer,
+ uint32_t drawCount,
+ const VkMultiDrawInfoEXT *pVertexInfo,
+ uint32_t instanceCount,
+ uint32_t firstInstance,
+ uint32_t stride)
+{
+ VN_CMD_ENQUEUE(vkCmdDrawMultiEXT, commandBuffer, drawCount, pVertexInfo,
+ instanceCount, firstInstance, stride);
+
+ vn_cmd_count_draw_and_submit_on_batch_limit(
+ vn_command_buffer_from_handle(commandBuffer));
+}
+
+void
+vn_CmdDrawMultiIndexedEXT(VkCommandBuffer commandBuffer,
+ uint32_t drawCount,
+ const VkMultiDrawIndexedInfoEXT *pIndexInfo,
+ uint32_t instanceCount,
+ uint32_t firstInstance,
+ uint32_t stride,
+ const int32_t *pVertexOffset)
+{
+ VN_CMD_ENQUEUE(vkCmdDrawMultiIndexedEXT, commandBuffer, drawCount,
+ pIndexInfo, instanceCount, firstInstance, stride,
+ pVertexOffset);
+
+ vn_cmd_count_draw_and_submit_on_batch_limit(
+ vn_command_buffer_from_handle(commandBuffer));
+}
VN_ADD_EXT_TO_PNEXT(exts->EXT_line_rasterization,
feats->line_rasterization,
LINE_RASTERIZATION_FEATURES_EXT, features2);
+ VN_ADD_EXT_TO_PNEXT(exts->EXT_multi_draw, feats->multi_draw,
+ MULTI_DRAW_FEATURES_EXT, features2);
VN_ADD_EXT_TO_PNEXT(exts->EXT_primitive_topology_list_restart,
feats->primitive_topology_list_restart,
PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT,
VN_ADD_EXT_TO_PNEXT(exts->EXT_line_rasterization,
props->line_rasterization,
LINE_RASTERIZATION_PROPERTIES_EXT, properties2);
+ VN_ADD_EXT_TO_PNEXT(exts->EXT_multi_draw, props->multi_draw,
+ MULTI_DRAW_PROPERTIES_EXT, properties2);
VN_ADD_EXT_TO_PNEXT(exts->EXT_provoking_vertex, props->provoking_vertex,
PROVOKING_VERTEX_PROPERTIES_EXT, properties2);
VN_ADD_EXT_TO_PNEXT(exts->EXT_robustness2, props->robustness_2,
.EXT_image_view_min_lod = true,
.EXT_index_type_uint8 = true,
.EXT_line_rasterization = true,
+ .EXT_multi_draw = true,
.EXT_primitive_topology_list_restart = true,
/* TODO(VK_EXT_private_data): Support natively.
*
CASE(DEPTH_CLIP_ENABLE_FEATURES_EXT, depth_clip_enable);
CASE(INDEX_TYPE_UINT8_FEATURES_EXT, index_type_uint8);
CASE(LINE_RASTERIZATION_FEATURES_EXT, line_rasterization);
+ CASE(MULTI_DRAW_FEATURES_EXT, multi_draw);
CASE(PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT, primitive_topology_list_restart);
CASE(PROVOKING_VERTEX_FEATURES_EXT, provoking_vertex);
CASE(ROBUSTNESS_2_FEATURES_EXT, robustness_2);
CASE(CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT, conservative_rasterization);
CASE(CUSTOM_BORDER_COLOR_PROPERTIES_EXT, custom_border_color);
CASE(LINE_RASTERIZATION_PROPERTIES_EXT, line_rasterization);
+ CASE(MULTI_DRAW_PROPERTIES_EXT, multi_draw);
CASE(MAINTENANCE_4_PROPERTIES, maintenance4);
CASE(PROVOKING_VERTEX_PROPERTIES_EXT, provoking_vertex);
CASE(ROBUSTNESS_2_PROPERTIES_EXT, robustness_2);
VkPhysicalDeviceImageViewMinLodFeaturesEXT image_view_min_lod;
VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8;
VkPhysicalDeviceLineRasterizationFeaturesEXT line_rasterization;
+ VkPhysicalDeviceMultiDrawFeaturesEXT multi_draw;
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
primitive_topology_list_restart;
VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex;
conservative_rasterization;
VkPhysicalDeviceCustomBorderColorPropertiesEXT custom_border_color;
VkPhysicalDeviceLineRasterizationPropertiesEXT line_rasterization;
+ VkPhysicalDeviceMultiDrawPropertiesEXT multi_draw;
VkPhysicalDeviceProvokingVertexPropertiesEXT provoking_vertex;
VkPhysicalDeviceRobustness2PropertiesEXT robustness_2;
VkPhysicalDeviceTransformFeedbackPropertiesEXT transform_feedback;