浏览代码

vulkan: Squelch MoltenVK warnings about primitive restart enable

rdb 1 月之前
父节点
当前提交
9292d23cc8
共有 1 个文件被更改,包括 11 次插入0 次删除
  1. 11 0
      panda/src/vulkandisplay/vulkanGraphicsStateGuardian.cxx

+ 11 - 0
panda/src/vulkandisplay/vulkanGraphicsStateGuardian.cxx

@@ -4530,7 +4530,9 @@ do_draw_primitive_with_topology(const GeomPrimitivePipelineReader *reader,
 
   if (_supports_extended_dynamic_state2) {
     _vkCmdSetPrimitiveTopology(_render_cmd, topology);
+#ifndef __APPLE__
     _vkCmdSetPrimitiveRestartEnable(_render_cmd, primitive_restart_enable && reader->is_indexed());
+#endif
   } else {
     VkPipeline pipeline = _current_sc->get_pipeline(this, _state_rs, _format, topology, 0, _fb_config);
     nassertr(pipeline != VK_NULL_HANDLE, false);
@@ -5148,6 +5150,10 @@ make_pipeline(VulkanShaderContext *sc,
   assembly_info.pNext = nullptr;
   assembly_info.flags = 0;
   assembly_info.topology = key._topology;
+#ifdef __APPLE__
+  // MoltenVK doesn't support disabling primitive restart, squelch warning.
+  assembly_info.primitiveRestartEnable = VK_TRUE;
+#else
   if (_supports_extended_dynamic_state2) {
     // This is enabled dynamically if needed.
     assembly_info.primitiveRestartEnable = VK_FALSE;
@@ -5159,6 +5165,7 @@ make_pipeline(VulkanShaderContext *sc,
       key._topology == VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY ||
       key._topology == VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY);
   }
+#endif
 
   VkPipelineTessellationStateCreateInfo tess_info;
   tess_info.sType = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO;
@@ -5349,8 +5356,12 @@ make_pipeline(VulkanShaderContext *sc,
   else if (key._topology != VK_PRIMITIVE_TOPOLOGY_POINT_LIST &&
            _supports_extended_dynamic_state2) {
     dynamic_states[2] = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT;
+#ifdef __APPLE__
+    num_dynamic_states = 3;
+#else
     dynamic_states[3] = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT;
     num_dynamic_states = 4;
+#endif
   }
 
   VkPipelineDynamicStateCreateInfo dynamic_info;