mirror of
https://github.com/mupen64plus-ae/parallel-rdp-standalone.git
synced 2024-11-26 23:10:21 +00:00
Update to b3eeb49e708a215ee990415f303ce9936e55bd66
This commit is contained in:
parent
05136e3b47
commit
e79d0cb775
2
COMMIT
2
COMMIT
@ -1 +1 @@
|
||||
31ea5eb2d6fcb2d8f1df5f0951364322d09ac01a
|
||||
b3eeb49e708a215ee990415f303ce9936e55bd66
|
||||
|
101
volk/volk.c
101
volk/volk.c
@ -176,6 +176,10 @@ static void volkGenLoadInstance(void* context, PFN_vkVoidFunction (*load)(void*,
|
||||
vkGetPhysicalDeviceQueueFamilyProperties2 = (PFN_vkGetPhysicalDeviceQueueFamilyProperties2)load(context, "vkGetPhysicalDeviceQueueFamilyProperties2");
|
||||
vkGetPhysicalDeviceSparseImageFormatProperties2 = (PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)load(context, "vkGetPhysicalDeviceSparseImageFormatProperties2");
|
||||
#endif /* defined(VK_VERSION_1_1) */
|
||||
#if defined(VK_EXT_acquire_drm_display)
|
||||
vkAcquireDrmDisplayEXT = (PFN_vkAcquireDrmDisplayEXT)load(context, "vkAcquireDrmDisplayEXT");
|
||||
vkGetDrmDisplayEXT = (PFN_vkGetDrmDisplayEXT)load(context, "vkGetDrmDisplayEXT");
|
||||
#endif /* defined(VK_EXT_acquire_drm_display) */
|
||||
#if defined(VK_EXT_acquire_xlib_display)
|
||||
vkAcquireXlibDisplayEXT = (PFN_vkAcquireXlibDisplayEXT)load(context, "vkAcquireXlibDisplayEXT");
|
||||
vkGetRandROutputDisplayEXT = (PFN_vkGetRandROutputDisplayEXT)load(context, "vkGetRandROutputDisplayEXT");
|
||||
@ -559,6 +563,13 @@ static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, c
|
||||
vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)load(context, "vkCmdSetStencilTestEnableEXT");
|
||||
vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)load(context, "vkCmdSetViewportWithCountEXT");
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state) */
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)load(context, "vkCmdSetDepthBiasEnableEXT");
|
||||
vkCmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)load(context, "vkCmdSetLogicOpEXT");
|
||||
vkCmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)load(context, "vkCmdSetPatchControlPointsEXT");
|
||||
vkCmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)load(context, "vkCmdSetPrimitiveRestartEnableEXT");
|
||||
vkCmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)load(context, "vkCmdSetRasterizerDiscardEnableEXT");
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state2) */
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)load(context, "vkGetMemoryHostPointerPropertiesEXT");
|
||||
#endif /* defined(VK_EXT_external_memory_host) */
|
||||
@ -578,6 +589,10 @@ static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, c
|
||||
#if defined(VK_EXT_line_rasterization)
|
||||
vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)load(context, "vkCmdSetLineStippleEXT");
|
||||
#endif /* defined(VK_EXT_line_rasterization) */
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
vkCmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)load(context, "vkCmdDrawMultiEXT");
|
||||
vkCmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)load(context, "vkCmdDrawMultiIndexedEXT");
|
||||
#endif /* defined(VK_EXT_multi_draw) */
|
||||
#if defined(VK_EXT_private_data)
|
||||
vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)load(context, "vkCreatePrivateDataSlotEXT");
|
||||
vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)load(context, "vkDestroyPrivateDataSlotEXT");
|
||||
@ -616,6 +631,13 @@ static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, c
|
||||
vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)load(context, "vkGetPastPresentationTimingGOOGLE");
|
||||
vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)load(context, "vkGetRefreshCycleDurationGOOGLE");
|
||||
#endif /* defined(VK_GOOGLE_display_timing) */
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
vkCmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)load(context, "vkCmdBindInvocationMaskHUAWEI");
|
||||
#endif /* defined(VK_HUAWEI_invocation_mask) */
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
vkCmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)load(context, "vkCmdSubpassShadingHUAWEI");
|
||||
vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)load(context, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
|
||||
#endif /* defined(VK_HUAWEI_subpass_shading) */
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)load(context, "vkAcquirePerformanceConfigurationINTEL");
|
||||
vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)load(context, "vkCmdSetPerformanceMarkerINTEL");
|
||||
@ -739,6 +761,9 @@ static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, c
|
||||
vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)load(context, "vkGetPipelineExecutablePropertiesKHR");
|
||||
vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)load(context, "vkGetPipelineExecutableStatisticsKHR");
|
||||
#endif /* defined(VK_KHR_pipeline_executable_properties) */
|
||||
#if defined(VK_KHR_present_wait)
|
||||
vkWaitForPresentKHR = (PFN_vkWaitForPresentKHR)load(context, "vkWaitForPresentKHR");
|
||||
#endif /* defined(VK_KHR_present_wait) */
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)load(context, "vkCmdPushDescriptorSetKHR");
|
||||
#endif /* defined(VK_KHR_push_descriptor) */
|
||||
@ -802,6 +827,13 @@ static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, c
|
||||
vkGetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)load(context, "vkGetVideoSessionMemoryRequirementsKHR");
|
||||
vkUpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)load(context, "vkUpdateVideoSessionParametersKHR");
|
||||
#endif /* defined(VK_KHR_video_queue) */
|
||||
#if defined(VK_NVX_binary_import)
|
||||
vkCmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)load(context, "vkCmdCuLaunchKernelNVX");
|
||||
vkCreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)load(context, "vkCreateCuFunctionNVX");
|
||||
vkCreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)load(context, "vkCreateCuModuleNVX");
|
||||
vkDestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)load(context, "vkDestroyCuFunctionNVX");
|
||||
vkDestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)load(context, "vkDestroyCuModuleNVX");
|
||||
#endif /* defined(VK_NVX_binary_import) */
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)load(context, "vkGetImageViewAddressNVX");
|
||||
vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)load(context, "vkGetImageViewHandleNVX");
|
||||
@ -821,6 +853,9 @@ static void volkGenLoadDevice(void* context, PFN_vkVoidFunction (*load)(void*, c
|
||||
vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)load(context, "vkDestroyIndirectCommandsLayoutNV");
|
||||
vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)load(context, "vkGetGeneratedCommandsMemoryRequirementsNV");
|
||||
#endif /* defined(VK_NV_device_generated_commands) */
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
vkGetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)load(context, "vkGetMemoryRemoteAddressNV");
|
||||
#endif /* defined(VK_NV_external_memory_rdma) */
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)load(context, "vkGetMemoryWin32HandleNV");
|
||||
#endif /* defined(VK_NV_external_memory_win32) */
|
||||
@ -1088,6 +1123,13 @@ static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context,
|
||||
table->vkCmdSetStencilTestEnableEXT = (PFN_vkCmdSetStencilTestEnableEXT)load(context, "vkCmdSetStencilTestEnableEXT");
|
||||
table->vkCmdSetViewportWithCountEXT = (PFN_vkCmdSetViewportWithCountEXT)load(context, "vkCmdSetViewportWithCountEXT");
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state) */
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
table->vkCmdSetDepthBiasEnableEXT = (PFN_vkCmdSetDepthBiasEnableEXT)load(context, "vkCmdSetDepthBiasEnableEXT");
|
||||
table->vkCmdSetLogicOpEXT = (PFN_vkCmdSetLogicOpEXT)load(context, "vkCmdSetLogicOpEXT");
|
||||
table->vkCmdSetPatchControlPointsEXT = (PFN_vkCmdSetPatchControlPointsEXT)load(context, "vkCmdSetPatchControlPointsEXT");
|
||||
table->vkCmdSetPrimitiveRestartEnableEXT = (PFN_vkCmdSetPrimitiveRestartEnableEXT)load(context, "vkCmdSetPrimitiveRestartEnableEXT");
|
||||
table->vkCmdSetRasterizerDiscardEnableEXT = (PFN_vkCmdSetRasterizerDiscardEnableEXT)load(context, "vkCmdSetRasterizerDiscardEnableEXT");
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state2) */
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
table->vkGetMemoryHostPointerPropertiesEXT = (PFN_vkGetMemoryHostPointerPropertiesEXT)load(context, "vkGetMemoryHostPointerPropertiesEXT");
|
||||
#endif /* defined(VK_EXT_external_memory_host) */
|
||||
@ -1107,6 +1149,10 @@ static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context,
|
||||
#if defined(VK_EXT_line_rasterization)
|
||||
table->vkCmdSetLineStippleEXT = (PFN_vkCmdSetLineStippleEXT)load(context, "vkCmdSetLineStippleEXT");
|
||||
#endif /* defined(VK_EXT_line_rasterization) */
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
table->vkCmdDrawMultiEXT = (PFN_vkCmdDrawMultiEXT)load(context, "vkCmdDrawMultiEXT");
|
||||
table->vkCmdDrawMultiIndexedEXT = (PFN_vkCmdDrawMultiIndexedEXT)load(context, "vkCmdDrawMultiIndexedEXT");
|
||||
#endif /* defined(VK_EXT_multi_draw) */
|
||||
#if defined(VK_EXT_private_data)
|
||||
table->vkCreatePrivateDataSlotEXT = (PFN_vkCreatePrivateDataSlotEXT)load(context, "vkCreatePrivateDataSlotEXT");
|
||||
table->vkDestroyPrivateDataSlotEXT = (PFN_vkDestroyPrivateDataSlotEXT)load(context, "vkDestroyPrivateDataSlotEXT");
|
||||
@ -1145,6 +1191,13 @@ static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context,
|
||||
table->vkGetPastPresentationTimingGOOGLE = (PFN_vkGetPastPresentationTimingGOOGLE)load(context, "vkGetPastPresentationTimingGOOGLE");
|
||||
table->vkGetRefreshCycleDurationGOOGLE = (PFN_vkGetRefreshCycleDurationGOOGLE)load(context, "vkGetRefreshCycleDurationGOOGLE");
|
||||
#endif /* defined(VK_GOOGLE_display_timing) */
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
table->vkCmdBindInvocationMaskHUAWEI = (PFN_vkCmdBindInvocationMaskHUAWEI)load(context, "vkCmdBindInvocationMaskHUAWEI");
|
||||
#endif /* defined(VK_HUAWEI_invocation_mask) */
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
table->vkCmdSubpassShadingHUAWEI = (PFN_vkCmdSubpassShadingHUAWEI)load(context, "vkCmdSubpassShadingHUAWEI");
|
||||
table->vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI = (PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)load(context, "vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI");
|
||||
#endif /* defined(VK_HUAWEI_subpass_shading) */
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
table->vkAcquirePerformanceConfigurationINTEL = (PFN_vkAcquirePerformanceConfigurationINTEL)load(context, "vkAcquirePerformanceConfigurationINTEL");
|
||||
table->vkCmdSetPerformanceMarkerINTEL = (PFN_vkCmdSetPerformanceMarkerINTEL)load(context, "vkCmdSetPerformanceMarkerINTEL");
|
||||
@ -1268,6 +1321,9 @@ static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context,
|
||||
table->vkGetPipelineExecutablePropertiesKHR = (PFN_vkGetPipelineExecutablePropertiesKHR)load(context, "vkGetPipelineExecutablePropertiesKHR");
|
||||
table->vkGetPipelineExecutableStatisticsKHR = (PFN_vkGetPipelineExecutableStatisticsKHR)load(context, "vkGetPipelineExecutableStatisticsKHR");
|
||||
#endif /* defined(VK_KHR_pipeline_executable_properties) */
|
||||
#if defined(VK_KHR_present_wait)
|
||||
table->vkWaitForPresentKHR = (PFN_vkWaitForPresentKHR)load(context, "vkWaitForPresentKHR");
|
||||
#endif /* defined(VK_KHR_present_wait) */
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
table->vkCmdPushDescriptorSetKHR = (PFN_vkCmdPushDescriptorSetKHR)load(context, "vkCmdPushDescriptorSetKHR");
|
||||
#endif /* defined(VK_KHR_push_descriptor) */
|
||||
@ -1331,6 +1387,13 @@ static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context,
|
||||
table->vkGetVideoSessionMemoryRequirementsKHR = (PFN_vkGetVideoSessionMemoryRequirementsKHR)load(context, "vkGetVideoSessionMemoryRequirementsKHR");
|
||||
table->vkUpdateVideoSessionParametersKHR = (PFN_vkUpdateVideoSessionParametersKHR)load(context, "vkUpdateVideoSessionParametersKHR");
|
||||
#endif /* defined(VK_KHR_video_queue) */
|
||||
#if defined(VK_NVX_binary_import)
|
||||
table->vkCmdCuLaunchKernelNVX = (PFN_vkCmdCuLaunchKernelNVX)load(context, "vkCmdCuLaunchKernelNVX");
|
||||
table->vkCreateCuFunctionNVX = (PFN_vkCreateCuFunctionNVX)load(context, "vkCreateCuFunctionNVX");
|
||||
table->vkCreateCuModuleNVX = (PFN_vkCreateCuModuleNVX)load(context, "vkCreateCuModuleNVX");
|
||||
table->vkDestroyCuFunctionNVX = (PFN_vkDestroyCuFunctionNVX)load(context, "vkDestroyCuFunctionNVX");
|
||||
table->vkDestroyCuModuleNVX = (PFN_vkDestroyCuModuleNVX)load(context, "vkDestroyCuModuleNVX");
|
||||
#endif /* defined(VK_NVX_binary_import) */
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
table->vkGetImageViewAddressNVX = (PFN_vkGetImageViewAddressNVX)load(context, "vkGetImageViewAddressNVX");
|
||||
table->vkGetImageViewHandleNVX = (PFN_vkGetImageViewHandleNVX)load(context, "vkGetImageViewHandleNVX");
|
||||
@ -1350,6 +1413,9 @@ static void volkGenLoadDeviceTable(struct VolkDeviceTable* table, void* context,
|
||||
table->vkDestroyIndirectCommandsLayoutNV = (PFN_vkDestroyIndirectCommandsLayoutNV)load(context, "vkDestroyIndirectCommandsLayoutNV");
|
||||
table->vkGetGeneratedCommandsMemoryRequirementsNV = (PFN_vkGetGeneratedCommandsMemoryRequirementsNV)load(context, "vkGetGeneratedCommandsMemoryRequirementsNV");
|
||||
#endif /* defined(VK_NV_device_generated_commands) */
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
table->vkGetMemoryRemoteAddressNV = (PFN_vkGetMemoryRemoteAddressNV)load(context, "vkGetMemoryRemoteAddressNV");
|
||||
#endif /* defined(VK_NV_external_memory_rdma) */
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
table->vkGetMemoryWin32HandleNV = (PFN_vkGetMemoryWin32HandleNV)load(context, "vkGetMemoryWin32HandleNV");
|
||||
#endif /* defined(VK_NV_external_memory_win32) */
|
||||
@ -1609,6 +1675,10 @@ PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
|
||||
PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */
|
||||
#if defined(VK_EXT_acquire_drm_display)
|
||||
PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;
|
||||
PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;
|
||||
#endif /* defined(VK_EXT_acquire_drm_display) */
|
||||
#if defined(VK_EXT_acquire_xlib_display)
|
||||
PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;
|
||||
PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;
|
||||
@ -1685,6 +1755,13 @@ PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;
|
||||
PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;
|
||||
PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state) */
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;
|
||||
PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;
|
||||
PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;
|
||||
PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;
|
||||
PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state2) */
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
|
||||
#endif /* defined(VK_EXT_external_memory_host) */
|
||||
@ -1711,6 +1788,10 @@ PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
|
||||
#if defined(VK_EXT_metal_surface)
|
||||
PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
|
||||
#endif /* defined(VK_EXT_metal_surface) */
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;
|
||||
PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;
|
||||
#endif /* defined(VK_EXT_multi_draw) */
|
||||
#if defined(VK_EXT_private_data)
|
||||
PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;
|
||||
PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;
|
||||
@ -1759,6 +1840,13 @@ PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP;
|
||||
PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
|
||||
PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
|
||||
#endif /* defined(VK_GOOGLE_display_timing) */
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;
|
||||
#endif /* defined(VK_HUAWEI_invocation_mask) */
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;
|
||||
PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
|
||||
#endif /* defined(VK_HUAWEI_subpass_shading) */
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
|
||||
PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
|
||||
@ -1928,6 +2016,9 @@ PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInt
|
||||
PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
|
||||
PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
|
||||
#endif /* defined(VK_KHR_pipeline_executable_properties) */
|
||||
#if defined(VK_KHR_present_wait)
|
||||
PFN_vkWaitForPresentKHR vkWaitForPresentKHR;
|
||||
#endif /* defined(VK_KHR_present_wait) */
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
|
||||
#endif /* defined(VK_KHR_push_descriptor) */
|
||||
@ -2025,6 +2116,13 @@ PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;
|
||||
#if defined(VK_NN_vi_surface)
|
||||
PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;
|
||||
#endif /* defined(VK_NN_vi_surface) */
|
||||
#if defined(VK_NVX_binary_import)
|
||||
PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;
|
||||
PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;
|
||||
PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;
|
||||
PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;
|
||||
PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;
|
||||
#endif /* defined(VK_NVX_binary_import) */
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;
|
||||
PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
|
||||
@ -2057,6 +2155,9 @@ PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequi
|
||||
#if defined(VK_NV_external_memory_capabilities)
|
||||
PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
#endif /* defined(VK_NV_external_memory_capabilities) */
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;
|
||||
#endif /* defined(VK_NV_external_memory_rdma) */
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
|
||||
#endif /* defined(VK_NV_external_memory_win32) */
|
||||
|
73
volk/volk.h
73
volk/volk.h
@ -15,7 +15,7 @@
|
||||
#endif
|
||||
|
||||
/* VOLK_GENERATE_VERSION_DEFINE */
|
||||
#define VOLK_HEADER_VERSION 175
|
||||
#define VOLK_HEADER_VERSION 185
|
||||
/* VOLK_GENERATE_VERSION_DEFINE */
|
||||
|
||||
#ifndef VK_NO_PROTOTYPES
|
||||
@ -51,10 +51,13 @@
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/* Disable VK_NVX_image_view_handle because SDK 140 introduced a change that can't be used with prior versions */
|
||||
/* Disable several extensions on earlier SDKs because later SDKs introduce a backwards incompatible change to function signatures */
|
||||
#if VK_HEADER_VERSION < 140
|
||||
# undef VK_NVX_image_view_handle
|
||||
#endif
|
||||
#if VK_HEADER_VERSION < 184
|
||||
# undef VK_HUAWEI_subpass_shading
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -342,6 +345,13 @@ struct VolkDeviceTable
|
||||
PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;
|
||||
PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state) */
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;
|
||||
PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;
|
||||
PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;
|
||||
PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;
|
||||
PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state2) */
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
|
||||
#endif /* defined(VK_EXT_external_memory_host) */
|
||||
@ -361,6 +371,10 @@ struct VolkDeviceTable
|
||||
#if defined(VK_EXT_line_rasterization)
|
||||
PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
|
||||
#endif /* defined(VK_EXT_line_rasterization) */
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;
|
||||
PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;
|
||||
#endif /* defined(VK_EXT_multi_draw) */
|
||||
#if defined(VK_EXT_private_data)
|
||||
PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;
|
||||
PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;
|
||||
@ -399,6 +413,13 @@ struct VolkDeviceTable
|
||||
PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
|
||||
PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
|
||||
#endif /* defined(VK_GOOGLE_display_timing) */
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;
|
||||
#endif /* defined(VK_HUAWEI_invocation_mask) */
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;
|
||||
PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
|
||||
#endif /* defined(VK_HUAWEI_subpass_shading) */
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
|
||||
PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
|
||||
@ -522,6 +543,9 @@ struct VolkDeviceTable
|
||||
PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
|
||||
PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
|
||||
#endif /* defined(VK_KHR_pipeline_executable_properties) */
|
||||
#if defined(VK_KHR_present_wait)
|
||||
PFN_vkWaitForPresentKHR vkWaitForPresentKHR;
|
||||
#endif /* defined(VK_KHR_present_wait) */
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
|
||||
#endif /* defined(VK_KHR_push_descriptor) */
|
||||
@ -585,6 +609,13 @@ struct VolkDeviceTable
|
||||
PFN_vkGetVideoSessionMemoryRequirementsKHR vkGetVideoSessionMemoryRequirementsKHR;
|
||||
PFN_vkUpdateVideoSessionParametersKHR vkUpdateVideoSessionParametersKHR;
|
||||
#endif /* defined(VK_KHR_video_queue) */
|
||||
#if defined(VK_NVX_binary_import)
|
||||
PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;
|
||||
PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;
|
||||
PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;
|
||||
PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;
|
||||
PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;
|
||||
#endif /* defined(VK_NVX_binary_import) */
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;
|
||||
PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
|
||||
@ -604,6 +635,9 @@ struct VolkDeviceTable
|
||||
PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV;
|
||||
PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV;
|
||||
#endif /* defined(VK_NV_device_generated_commands) */
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;
|
||||
#endif /* defined(VK_NV_external_memory_rdma) */
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
|
||||
#endif /* defined(VK_NV_external_memory_win32) */
|
||||
@ -855,6 +889,10 @@ extern PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD;
|
||||
extern PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID;
|
||||
extern PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID;
|
||||
#endif /* defined(VK_ANDROID_external_memory_android_hardware_buffer) */
|
||||
#if defined(VK_EXT_acquire_drm_display)
|
||||
extern PFN_vkAcquireDrmDisplayEXT vkAcquireDrmDisplayEXT;
|
||||
extern PFN_vkGetDrmDisplayEXT vkGetDrmDisplayEXT;
|
||||
#endif /* defined(VK_EXT_acquire_drm_display) */
|
||||
#if defined(VK_EXT_acquire_xlib_display)
|
||||
extern PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT;
|
||||
extern PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT;
|
||||
@ -931,6 +969,13 @@ extern PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT;
|
||||
extern PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT;
|
||||
extern PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT;
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state) */
|
||||
#if defined(VK_EXT_extended_dynamic_state2)
|
||||
extern PFN_vkCmdSetDepthBiasEnableEXT vkCmdSetDepthBiasEnableEXT;
|
||||
extern PFN_vkCmdSetLogicOpEXT vkCmdSetLogicOpEXT;
|
||||
extern PFN_vkCmdSetPatchControlPointsEXT vkCmdSetPatchControlPointsEXT;
|
||||
extern PFN_vkCmdSetPrimitiveRestartEnableEXT vkCmdSetPrimitiveRestartEnableEXT;
|
||||
extern PFN_vkCmdSetRasterizerDiscardEnableEXT vkCmdSetRasterizerDiscardEnableEXT;
|
||||
#endif /* defined(VK_EXT_extended_dynamic_state2) */
|
||||
#if defined(VK_EXT_external_memory_host)
|
||||
extern PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT;
|
||||
#endif /* defined(VK_EXT_external_memory_host) */
|
||||
@ -957,6 +1002,10 @@ extern PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT;
|
||||
#if defined(VK_EXT_metal_surface)
|
||||
extern PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT;
|
||||
#endif /* defined(VK_EXT_metal_surface) */
|
||||
#if defined(VK_EXT_multi_draw)
|
||||
extern PFN_vkCmdDrawMultiEXT vkCmdDrawMultiEXT;
|
||||
extern PFN_vkCmdDrawMultiIndexedEXT vkCmdDrawMultiIndexedEXT;
|
||||
#endif /* defined(VK_EXT_multi_draw) */
|
||||
#if defined(VK_EXT_private_data)
|
||||
extern PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT;
|
||||
extern PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT;
|
||||
@ -1005,6 +1054,13 @@ extern PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP
|
||||
extern PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE;
|
||||
extern PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE;
|
||||
#endif /* defined(VK_GOOGLE_display_timing) */
|
||||
#if defined(VK_HUAWEI_invocation_mask)
|
||||
extern PFN_vkCmdBindInvocationMaskHUAWEI vkCmdBindInvocationMaskHUAWEI;
|
||||
#endif /* defined(VK_HUAWEI_invocation_mask) */
|
||||
#if defined(VK_HUAWEI_subpass_shading)
|
||||
extern PFN_vkCmdSubpassShadingHUAWEI vkCmdSubpassShadingHUAWEI;
|
||||
extern PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI;
|
||||
#endif /* defined(VK_HUAWEI_subpass_shading) */
|
||||
#if defined(VK_INTEL_performance_query)
|
||||
extern PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL;
|
||||
extern PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL;
|
||||
@ -1174,6 +1230,9 @@ extern PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecut
|
||||
extern PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR;
|
||||
extern PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR;
|
||||
#endif /* defined(VK_KHR_pipeline_executable_properties) */
|
||||
#if defined(VK_KHR_present_wait)
|
||||
extern PFN_vkWaitForPresentKHR vkWaitForPresentKHR;
|
||||
#endif /* defined(VK_KHR_present_wait) */
|
||||
#if defined(VK_KHR_push_descriptor)
|
||||
extern PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR;
|
||||
#endif /* defined(VK_KHR_push_descriptor) */
|
||||
@ -1271,6 +1330,13 @@ extern PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK;
|
||||
#if defined(VK_NN_vi_surface)
|
||||
extern PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN;
|
||||
#endif /* defined(VK_NN_vi_surface) */
|
||||
#if defined(VK_NVX_binary_import)
|
||||
extern PFN_vkCmdCuLaunchKernelNVX vkCmdCuLaunchKernelNVX;
|
||||
extern PFN_vkCreateCuFunctionNVX vkCreateCuFunctionNVX;
|
||||
extern PFN_vkCreateCuModuleNVX vkCreateCuModuleNVX;
|
||||
extern PFN_vkDestroyCuFunctionNVX vkDestroyCuFunctionNVX;
|
||||
extern PFN_vkDestroyCuModuleNVX vkDestroyCuModuleNVX;
|
||||
#endif /* defined(VK_NVX_binary_import) */
|
||||
#if defined(VK_NVX_image_view_handle)
|
||||
extern PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX;
|
||||
extern PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX;
|
||||
@ -1303,6 +1369,9 @@ extern PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemo
|
||||
#if defined(VK_NV_external_memory_capabilities)
|
||||
extern PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV;
|
||||
#endif /* defined(VK_NV_external_memory_capabilities) */
|
||||
#if defined(VK_NV_external_memory_rdma)
|
||||
extern PFN_vkGetMemoryRemoteAddressNV vkGetMemoryRemoteAddressNV;
|
||||
#endif /* defined(VK_NV_external_memory_rdma) */
|
||||
#if defined(VK_NV_external_memory_win32)
|
||||
extern PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV;
|
||||
#endif /* defined(VK_NV_external_memory_win32) */
|
||||
|
@ -85,7 +85,6 @@
|
||||
#include "vulkan_screen.h"
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef VK_ENABLE_BETA_EXTENSIONS
|
||||
#include "vulkan_beta.h"
|
||||
#endif
|
||||
|
@ -22,7 +22,7 @@ extern "C" {
|
||||
#define VK_KHR_video_queue 1
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
|
||||
VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
|
||||
#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 1
|
||||
#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION 2
|
||||
#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
|
||||
|
||||
typedef enum VkQueryResultStatusKHR {
|
||||
@ -66,12 +66,12 @@ typedef enum VkVideoComponentBitDepthFlagBitsKHR {
|
||||
} VkVideoComponentBitDepthFlagBitsKHR;
|
||||
typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
|
||||
|
||||
typedef enum VkVideoCapabilitiesFlagBitsKHR {
|
||||
VK_VIDEO_CAPABILITIES_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
|
||||
VK_VIDEO_CAPABILITIES_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
|
||||
VK_VIDEO_CAPABILITIES_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkVideoCapabilitiesFlagBitsKHR;
|
||||
typedef VkFlags VkVideoCapabilitiesFlagsKHR;
|
||||
typedef enum VkVideoCapabilityFlagBitsKHR {
|
||||
VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
|
||||
VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
|
||||
VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
|
||||
} VkVideoCapabilityFlagBitsKHR;
|
||||
typedef VkFlags VkVideoCapabilityFlagsKHR;
|
||||
|
||||
typedef enum VkVideoSessionCreateFlagBitsKHR {
|
||||
VK_VIDEO_SESSION_CREATE_DEFAULT_KHR = 0,
|
||||
@ -120,21 +120,21 @@ typedef struct VkVideoProfilesKHR {
|
||||
} VkVideoProfilesKHR;
|
||||
|
||||
typedef struct VkVideoCapabilitiesKHR {
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkVideoCapabilitiesFlagsKHR capabilityFlags;
|
||||
VkDeviceSize minBitstreamBufferOffsetAlignment;
|
||||
VkDeviceSize minBitstreamBufferSizeAlignment;
|
||||
VkExtent2D videoPictureExtentGranularity;
|
||||
VkExtent2D minExtent;
|
||||
VkExtent2D maxExtent;
|
||||
uint32_t maxReferencePicturesSlotsCount;
|
||||
uint32_t maxReferencePicturesActiveCount;
|
||||
VkStructureType sType;
|
||||
void* pNext;
|
||||
VkVideoCapabilityFlagsKHR capabilityFlags;
|
||||
VkDeviceSize minBitstreamBufferOffsetAlignment;
|
||||
VkDeviceSize minBitstreamBufferSizeAlignment;
|
||||
VkExtent2D videoPictureExtentGranularity;
|
||||
VkExtent2D minExtent;
|
||||
VkExtent2D maxExtent;
|
||||
uint32_t maxReferencePicturesSlotsCount;
|
||||
uint32_t maxReferencePicturesActiveCount;
|
||||
} VkVideoCapabilitiesKHR;
|
||||
|
||||
typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
void* pNext;
|
||||
VkImageUsageFlags imageUsage;
|
||||
const VkVideoProfilesKHR* pVideoProfiles;
|
||||
} VkPhysicalDeviceVideoFormatInfoKHR;
|
||||
@ -433,10 +433,10 @@ VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
|
||||
#define VK_EXT_video_encode_h264 1
|
||||
#include "vk_video/vulkan_video_codec_h264std.h"
|
||||
#include "vk_video/vulkan_video_codec_h264std_encode.h"
|
||||
#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 1
|
||||
#define VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION 2
|
||||
#define VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_EXT_video_encode_h264"
|
||||
|
||||
typedef enum VkVideoEncodeH264CapabilitiesFlagBitsEXT {
|
||||
typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT = 0x00000001,
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT = 0x00000002,
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BI_PRED_IMPLICIT_BIT_EXT = 0x00000004,
|
||||
@ -448,9 +448,9 @@ typedef enum VkVideoEncodeH264CapabilitiesFlagBitsEXT {
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT = 0x00000100,
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT = 0x00000200,
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_EVENLY_DISTRIBUTED_SLICE_SIZE_BIT_EXT = 0x00000400,
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITIES_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkVideoEncodeH264CapabilitiesFlagBitsEXT;
|
||||
typedef VkFlags VkVideoEncodeH264CapabilitiesFlagsEXT;
|
||||
VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkVideoEncodeH264CapabilityFlagBitsEXT;
|
||||
typedef VkFlags VkVideoEncodeH264CapabilityFlagsEXT;
|
||||
|
||||
typedef enum VkVideoEncodeH264InputModeFlagBitsEXT {
|
||||
VK_VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXT = 0x00000001,
|
||||
@ -475,19 +475,19 @@ typedef enum VkVideoEncodeH264CreateFlagBitsEXT {
|
||||
} VkVideoEncodeH264CreateFlagBitsEXT;
|
||||
typedef VkFlags VkVideoEncodeH264CreateFlagsEXT;
|
||||
typedef struct VkVideoEncodeH264CapabilitiesEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkVideoEncodeH264CapabilitiesFlagsEXT flags;
|
||||
VkVideoEncodeH264InputModeFlagsEXT inputModeFlags;
|
||||
VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags;
|
||||
VkExtent2D minPictureSizeInMbs;
|
||||
VkExtent2D maxPictureSizeInMbs;
|
||||
VkExtent2D inputImageDataAlignment;
|
||||
uint8_t maxNumL0ReferenceForP;
|
||||
uint8_t maxNumL0ReferenceForB;
|
||||
uint8_t maxNumL1Reference;
|
||||
uint8_t qualityLevelCount;
|
||||
VkExtensionProperties stdExtensionVersion;
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
VkVideoEncodeH264CapabilityFlagsEXT flags;
|
||||
VkVideoEncodeH264InputModeFlagsEXT inputModeFlags;
|
||||
VkVideoEncodeH264OutputModeFlagsEXT outputModeFlags;
|
||||
VkExtent2D minPictureSizeInMbs;
|
||||
VkExtent2D maxPictureSizeInMbs;
|
||||
VkExtent2D inputImageDataAlignment;
|
||||
uint8_t maxNumL0ReferenceForP;
|
||||
uint8_t maxNumL0ReferenceForB;
|
||||
uint8_t maxNumL1Reference;
|
||||
uint8_t qualityLevelCount;
|
||||
VkExtensionProperties stdExtensionVersion;
|
||||
} VkVideoEncodeH264CapabilitiesEXT;
|
||||
|
||||
typedef struct VkVideoEncodeH264SessionCreateInfoEXT {
|
||||
@ -567,22 +567,22 @@ typedef struct VkVideoEncodeH264ProfileEXT {
|
||||
|
||||
#define VK_EXT_video_decode_h264 1
|
||||
#include "vk_video/vulkan_video_codec_h264std_decode.h"
|
||||
#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 1
|
||||
#define VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION 3
|
||||
#define VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME "VK_EXT_video_decode_h264"
|
||||
|
||||
typedef enum VkVideoDecodeH264FieldLayoutFlagBitsEXT {
|
||||
VK_VIDEO_DECODE_H264_PROGRESSIVE_PICTURES_ONLY_EXT = 0,
|
||||
VK_VIDEO_DECODE_H264_FIELD_LAYOUT_LINE_INTERLACED_PLANE_BIT_EXT = 0x00000001,
|
||||
VK_VIDEO_DECODE_H264_FIELD_LAYOUT_SEPARATE_INTERLACED_PLANE_BIT_EXT = 0x00000002,
|
||||
VK_VIDEO_DECODE_H264_FIELD_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkVideoDecodeH264FieldLayoutFlagBitsEXT;
|
||||
typedef VkFlags VkVideoDecodeH264FieldLayoutFlagsEXT;
|
||||
typedef enum VkVideoDecodeH264PictureLayoutFlagBitsEXT {
|
||||
VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_EXT = 0,
|
||||
VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_EXT = 0x00000001,
|
||||
VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_EXT = 0x00000002,
|
||||
VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
|
||||
} VkVideoDecodeH264PictureLayoutFlagBitsEXT;
|
||||
typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsEXT;
|
||||
typedef VkFlags VkVideoDecodeH264CreateFlagsEXT;
|
||||
typedef struct VkVideoDecodeH264ProfileEXT {
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
StdVideoH264ProfileIdc stdProfileIdc;
|
||||
VkVideoDecodeH264FieldLayoutFlagsEXT fieldLayout;
|
||||
VkStructureType sType;
|
||||
const void* pNext;
|
||||
StdVideoH264ProfileIdc stdProfileIdc;
|
||||
VkVideoDecodeH264PictureLayoutFlagsEXT pictureLayout;
|
||||
} VkVideoDecodeH264ProfileEXT;
|
||||
|
||||
typedef struct VkVideoDecodeH264CapabilitiesEXT {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -911,6 +911,8 @@ bool Context::create_device(VkPhysicalDevice gpu_, VkSurfaceKHR surface, const c
|
||||
ext.astc_decode_features = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT };
|
||||
ext.astc_hdr_features = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT };
|
||||
ext.sync2_features = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR };
|
||||
ext.present_id_features = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR };
|
||||
ext.present_wait_features = { VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR };
|
||||
void **ppNext = &features.pNext;
|
||||
|
||||
bool has_pdf2 = ext.supports_physical_device_properties2 ||
|
||||
@ -1055,6 +1057,32 @@ bool Context::create_device(VkPhysicalDevice gpu_, VkSurfaceKHR surface, const c
|
||||
*ppNext = &ext.sync2_features;
|
||||
ppNext = &ext.sync2_features.pNext;
|
||||
}
|
||||
|
||||
// Validation layers don't fully support present_id/wait yet.
|
||||
// Ignore this extension for now.
|
||||
#ifndef VULKAN_DEBUG
|
||||
for (unsigned i = 0; i < num_required_device_extensions; i++)
|
||||
{
|
||||
if (strcmp(required_device_extensions[i], VK_KHR_SWAPCHAIN_EXTENSION_NAME) == 0)
|
||||
{
|
||||
if (has_extension(VK_KHR_PRESENT_ID_EXTENSION_NAME))
|
||||
{
|
||||
enabled_extensions.push_back(VK_KHR_PRESENT_ID_EXTENSION_NAME);
|
||||
*ppNext = &ext.present_id_features;
|
||||
ppNext = &ext.present_id_features.pNext;
|
||||
}
|
||||
|
||||
if (has_extension(VK_KHR_PRESENT_WAIT_EXTENSION_NAME))
|
||||
{
|
||||
enabled_extensions.push_back(VK_KHR_PRESENT_WAIT_EXTENSION_NAME);
|
||||
*ppNext = &ext.present_wait_features;
|
||||
ppNext = &ext.present_wait_features.pNext;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (ext.supports_vulkan_11_device && ext.supports_vulkan_11_instance)
|
||||
|
@ -99,6 +99,8 @@ struct DeviceFeatures
|
||||
VkPhysicalDeviceASTCDecodeFeaturesEXT astc_decode_features = {};
|
||||
VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT astc_hdr_features = {};
|
||||
VkPhysicalDeviceSynchronization2FeaturesKHR sync2_features = {};
|
||||
VkPhysicalDevicePresentIdFeaturesKHR present_id_features = {};
|
||||
VkPhysicalDevicePresentWaitFeaturesKHR present_wait_features = {};
|
||||
};
|
||||
|
||||
enum VendorID
|
||||
|
@ -4147,7 +4147,7 @@ BufferHandle Device::create_imported_host_buffer(const BufferCreateInfo &create_
|
||||
}
|
||||
|
||||
VkExternalMemoryBufferCreateInfo external_info = { VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR };
|
||||
external_info.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT;
|
||||
external_info.handleTypes = type;
|
||||
|
||||
VkMemoryHostPointerPropertiesEXT host_pointer_props = { VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT };
|
||||
if (table->vkGetMemoryHostPointerPropertiesEXT(device, type, host_buffer, &host_pointer_props) != VK_SUCCESS)
|
||||
@ -4175,6 +4175,8 @@ BufferHandle Device::create_imported_host_buffer(const BufferCreateInfo &create_
|
||||
// Weird workaround for latest AMD Windows drivers which sets memoryTypeBits to 0 when using the external handle type.
|
||||
if (!reqs.memoryTypeBits)
|
||||
reqs.memoryTypeBits = ~0u;
|
||||
|
||||
auto plain_reqs = reqs;
|
||||
reqs.memoryTypeBits &= host_pointer_props.memoryTypeBits;
|
||||
|
||||
if (reqs.memoryTypeBits == 0)
|
||||
@ -4185,6 +4187,19 @@ BufferHandle Device::create_imported_host_buffer(const BufferCreateInfo &create_
|
||||
}
|
||||
|
||||
uint32_t memory_type = find_memory_type(create_info.domain, reqs.memoryTypeBits);
|
||||
|
||||
if (memory_type == UINT32_MAX)
|
||||
{
|
||||
// Weird workaround for Intel Windows where the only memory type is DEVICE_LOCAL
|
||||
// with no HOST_VISIBLE (!?!?!).
|
||||
// However, it appears to work just fine to allocate with other memory types as well ...
|
||||
// Oh well.
|
||||
|
||||
// Ignore host_pointer_props.
|
||||
reqs = plain_reqs;
|
||||
memory_type = find_memory_type(create_info.domain, reqs.memoryTypeBits);
|
||||
}
|
||||
|
||||
if (memory_type == UINT32_MAX)
|
||||
{
|
||||
LOGE("Failed to find memory type.\n");
|
||||
|
@ -38,6 +38,20 @@ WSI::WSI()
|
||||
if (!frame_limiter.begin_interval_ns(1000000ull * period_ms))
|
||||
LOGE("Failed to begin timer.\n");
|
||||
}
|
||||
|
||||
// With frame latency of 1, we get the ideal latency where
|
||||
// we present, and then wait for the previous present to complete.
|
||||
// Once this unblocks, it means that the present we just queued up is scheduled to complete next vblank,
|
||||
// and the next frame to be recorded will have to be ready in 2 frames.
|
||||
// This is ideal, since worst case for full performance, we will have a pipeline of CPU -> GPU,
|
||||
// where CPU can spend 1 frame's worth of time, and GPU can spend one frame's worth of time.
|
||||
// For mobile, opt for 2 frames of latency, since TBDR likes deeper pipelines and we can absorb more
|
||||
// surfaceflinger jank.
|
||||
#ifdef ANDROID
|
||||
present_frame_latency = 2;
|
||||
#else
|
||||
present_frame_latency = 1;
|
||||
#endif
|
||||
}
|
||||
|
||||
void WSIPlatform::set_window_title(const string &)
|
||||
@ -224,9 +238,15 @@ void WSI::tear_down_swapchain()
|
||||
drain_swapchain();
|
||||
|
||||
if (swapchain != VK_NULL_HANDLE)
|
||||
{
|
||||
if (device->get_device_features().present_wait_features.presentWait)
|
||||
table->vkWaitForPresentKHR(context->get_device(), swapchain, present_last_id, UINT64_MAX);
|
||||
table->vkDestroySwapchainKHR(context->get_device(), swapchain, nullptr);
|
||||
}
|
||||
swapchain = VK_NULL_HANDLE;
|
||||
has_acquired_swapchain_index = false;
|
||||
present_id = 0;
|
||||
present_last_id = 0;
|
||||
}
|
||||
|
||||
void WSI::deinit_surface_and_swapchain()
|
||||
@ -452,14 +472,25 @@ bool WSI::end_frame()
|
||||
|
||||
VkPresentTimeGOOGLE present_time;
|
||||
VkPresentTimesInfoGOOGLE present_timing = { VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE };
|
||||
present_timing.swapchainCount = 1;
|
||||
present_timing.pTimes = &present_time;
|
||||
|
||||
if (using_display_timing && timing.fill_present_info_timing(present_time))
|
||||
{
|
||||
present_timing.swapchainCount = 1;
|
||||
present_timing.pTimes = &present_time;
|
||||
present_timing.pNext = info.pNext;
|
||||
info.pNext = &present_timing;
|
||||
}
|
||||
|
||||
VkPresentIdKHR present_id_info = { VK_STRUCTURE_TYPE_PRESENT_ID_KHR };
|
||||
if (device->get_device_features().present_id_features.presentId)
|
||||
{
|
||||
present_id_info.swapchainCount = 1;
|
||||
present_id_info.pPresentIds = &present_id;
|
||||
present_id++;
|
||||
present_id_info.pNext = info.pNext;
|
||||
info.pNext = &present_id_info;
|
||||
}
|
||||
|
||||
#ifdef VULKAN_WSI_TIMING_DEBUG
|
||||
auto present_start = Util::get_current_time_nsecs();
|
||||
#endif
|
||||
@ -488,6 +519,33 @@ bool WSI::end_frame()
|
||||
LOGI("vkQueuePresentKHR took %.3f ms.\n", (present_end - present_start) * 1e-6);
|
||||
#endif
|
||||
|
||||
// The presentID only seems to get updated if QueuePresent returns success.
|
||||
// This makes sense I guess. Record the latest present ID which was successfully presented
|
||||
// so we don't risk deadlock.
|
||||
if ((result == VK_SUCCESS || result == VK_SUBOPTIMAL_KHR) &&
|
||||
present_id > present_frame_latency &&
|
||||
device->get_device_features().present_wait_features.presentWait)
|
||||
{
|
||||
present_last_id = present_id;
|
||||
uint64_t target = present_id - present_frame_latency;
|
||||
if (present_last_id < target)
|
||||
target = present_last_id;
|
||||
#ifdef VULKAN_WSI_TIMING_DEBUG
|
||||
auto begin_wait = Util::get_current_time_nsecs();
|
||||
#endif
|
||||
auto wait_ts = device->write_calibrated_timestamp();
|
||||
VkResult wait_result = table->vkWaitForPresentKHR(context->get_device(), swapchain,
|
||||
target, UINT64_MAX);
|
||||
device->register_time_interval("WSI", std::move(wait_ts),
|
||||
device->write_calibrated_timestamp(), "wait_frame_latency");
|
||||
if (wait_result != VK_SUCCESS)
|
||||
LOGE("vkWaitForPresentKHR failed, vr %d.\n", wait_result);
|
||||
#ifdef VULKAN_WSI_TIMING_DEBUG
|
||||
auto end_wait = Util::get_current_time_nsecs();
|
||||
LOGI("WaitForPresentKHR took %.3f ms.\n", 1e-6 * double(end_wait - begin_wait));
|
||||
#endif
|
||||
}
|
||||
|
||||
if (overall == VK_SUBOPTIMAL_KHR || result == VK_SUBOPTIMAL_KHR)
|
||||
{
|
||||
#ifdef VULKAN_DEBUG
|
||||
@ -1006,6 +1064,9 @@ WSI::SwapchainError WSI::init_swapchain(unsigned width, unsigned height)
|
||||
info.clipped = VK_TRUE;
|
||||
info.oldSwapchain = old_swapchain;
|
||||
|
||||
if (device->get_device_features().present_wait_features.presentWait && old_swapchain != VK_NULL_HANDLE)
|
||||
table->vkWaitForPresentKHR(context->get_device(), old_swapchain, present_last_id, UINT64_MAX);
|
||||
|
||||
#ifdef _WIN32
|
||||
if (device->get_device_features().supports_full_screen_exclusive)
|
||||
info.pNext = &exclusive_info;
|
||||
@ -1015,6 +1076,8 @@ WSI::SwapchainError WSI::init_swapchain(unsigned width, unsigned height)
|
||||
if (old_swapchain != VK_NULL_HANDLE)
|
||||
table->vkDestroySwapchainKHR(context->get_device(), old_swapchain, nullptr);
|
||||
has_acquired_swapchain_index = false;
|
||||
present_id = 0;
|
||||
present_last_id = 0;
|
||||
|
||||
#ifdef _WIN32
|
||||
if (use_application_controlled_exclusive_fullscreen)
|
||||
|
@ -234,6 +234,10 @@ private:
|
||||
double smooth_frame_time = 0.0;
|
||||
double smooth_elapsed_time = 0.0;
|
||||
|
||||
uint64_t present_id = 0;
|
||||
uint64_t present_last_id = 0;
|
||||
unsigned present_frame_latency = 0;
|
||||
|
||||
WSITiming timing;
|
||||
Util::FrameLimiter frame_limiter;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user