venus: add support for VK_EXT_primitive_topology_list_restart

See:
virgl/virglrenderer!902
olv/venus-protocol!46

Test:
./deqp-vk -n dEQP-VK.pipeline.monolithic.input_assembly.primitive_restart.*

Test run totals:
  Passed:        55/55 (100.0%)
  Failed:        0/55 (0.0%)
  Not supported: 0/55 (0.0%)
  Warnings:      0/55 (0.0%)
  Waived:        0/55 (0.0%)

Signed-off-by: Juston Li <justonli@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18283>
This commit is contained in:
Juston Li 2022-08-26 15:50:10 -07:00
parent 46509e8060
commit c1871cfde4
2 changed files with 11 additions and 0 deletions

View file

@ -163,6 +163,9 @@ vn_physical_device_init_features(struct vn_physical_device *physical_dev)
VN_ADD_EXT_TO_PNEXT(exts->EXT_line_rasterization,
feats->line_rasterization,
LINE_RASTERIZATION_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, features2);
VN_ADD_EXT_TO_PNEXT(exts->EXT_provoking_vertex, feats->provoking_vertex,
PROVOKING_VERTEX_FEATURES_EXT, features2);
VN_ADD_EXT_TO_PNEXT(exts->EXT_robustness2, feats->robustness_2,
@ -1059,6 +1062,7 @@ vn_physical_device_get_passthrough_extensions(
.EXT_image_view_min_lod = true,
.EXT_index_type_uint8 = true,
.EXT_line_rasterization = true,
.EXT_primitive_topology_list_restart = true,
.EXT_provoking_vertex = true,
.EXT_queue_family_foreign = true,
.EXT_robustness2 = true,
@ -1686,6 +1690,8 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
VkPhysicalDeviceDepthClipEnableFeaturesEXT *depth_clip_enable;
VkPhysicalDeviceIndexTypeUint8FeaturesEXT *index_type_uint8;
VkPhysicalDeviceLineRasterizationFeaturesEXT *line_rasterization;
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
*primitive_topology_list_restart;
VkPhysicalDeviceProvokingVertexFeaturesEXT *provoking_vertex;
VkPhysicalDeviceRobustness2FeaturesEXT *robustness_2;
VkPhysicalDeviceTransformFeedbackFeaturesEXT *transform_feedback;
@ -1898,6 +1904,9 @@ vn_GetPhysicalDeviceFeatures2(VkPhysicalDevice physicalDevice,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT:
*u.line_rasterization = feats->line_rasterization;
break;
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT:
*u.primitive_topology_list_restart = feats->primitive_topology_list_restart;
break;
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT:
*u.provoking_vertex = feats->provoking_vertex;
break;

View file

@ -44,6 +44,8 @@ struct vn_physical_device_features {
VkPhysicalDeviceImageViewMinLodFeaturesEXT image_view_min_lod;
VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8;
VkPhysicalDeviceLineRasterizationFeaturesEXT line_rasterization;
VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT
primitive_topology_list_restart;
VkPhysicalDeviceProvokingVertexFeaturesEXT provoking_vertex;
VkPhysicalDeviceRobustness2FeaturesEXT robustness_2;
VkPhysicalDeviceTransformFeedbackFeaturesEXT transform_feedback;