diff options
author | Yiwei Zhang <zzyiwei@chromium.org> | 2024-03-01 20:49:54 -0800 |
---|---|---|
committer | Yiwei Zhang <zzyiwei@chromium.org> | 2024-03-04 10:16:36 -0800 |
commit | 082915db782569efcf90f89fb844e42850034992 (patch) | |
tree | d735a7a1cdb260361d0ff50ec39eab023516dd6f | |
parent | d0dd98ad80c8b627bceeb28c1dc6a0eb5475a8f2 (diff) | |
download | virglrenderer-082915db782569efcf90f89fb844e42850034992.tar.gz |
vkr: add VK_KHR_fragment_shading_rate support
Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
Part-of: <https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1343>
-rw-r--r-- | src/venus/vkr_command_buffer.c | 13 | ||||
-rw-r--r-- | src/venus/vkr_common.c | 1 | ||||
-rw-r--r-- | src/venus/vkr_physical_device.c | 18 |
3 files changed, 32 insertions, 0 deletions
diff --git a/src/venus/vkr_command_buffer.c b/src/venus/vkr_command_buffer.c index e413405d..afff258b 100644 --- a/src/venus/vkr_command_buffer.c +++ b/src/venus/vkr_command_buffer.c @@ -1047,6 +1047,15 @@ vkr_dispatch_vkCmdSetTessellationDomainOriginEXT( VKR_CMD_CALL(CmdSetTessellationDomainOriginEXT, args, args->domainOrigin); } +static void +vkr_dispatch_vkCmdSetFragmentShadingRateKHR( + UNUSED struct vn_dispatch_context *dispatch, + struct vn_command_vkCmdSetFragmentShadingRateKHR *args) +{ + VKR_CMD_CALL(CmdSetFragmentShadingRateKHR, args, args->pFragmentSize, + args->combinerOps); +} + void vkr_context_init_command_pool_dispatch(struct vkr_context *ctx) { @@ -1238,4 +1247,8 @@ vkr_context_init_command_buffer_dispatch(struct vkr_context *ctx) dispatch->dispatch_vkCmdSetSampleMaskEXT = vkr_dispatch_vkCmdSetSampleMaskEXT; dispatch->dispatch_vkCmdSetTessellationDomainOriginEXT = vkr_dispatch_vkCmdSetTessellationDomainOriginEXT; + + /* VK_KHR_fragment_shading_rate */ + dispatch->dispatch_vkCmdSetFragmentShadingRateKHR = + vkr_dispatch_vkCmdSetFragmentShadingRateKHR; } diff --git a/src/venus/vkr_common.c b/src/venus/vkr_common.c index d9860977..bce43b3d 100644 --- a/src/venus/vkr_common.c +++ b/src/venus/vkr_common.c @@ -96,6 +96,7 @@ static const struct vn_info_extension_table vkr_extension_table = { .KHR_external_fence_fd = true, .KHR_external_memory_fd = true, .KHR_external_semaphore_fd = true, + .KHR_fragment_shading_rate = true, .KHR_pipeline_library = true, .KHR_push_descriptor = true, .KHR_shader_clock = true, diff --git a/src/venus/vkr_physical_device.c b/src/venus/vkr_physical_device.c index c463064b..e6670f23 100644 --- a/src/venus/vkr_physical_device.c +++ b/src/venus/vkr_physical_device.c @@ -681,6 +681,20 @@ vkr_dispatch_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( args->physicalDevice, args->pTimeDomainCount, args->pTimeDomains); } +static void +vkr_dispatch_vkGetPhysicalDeviceFragmentShadingRatesKHR( + UNUSED struct vn_dispatch_context *ctx, + struct vn_command_vkGetPhysicalDeviceFragmentShadingRatesKHR *args) +{ + struct vkr_physical_device *physical_dev = + vkr_physical_device_from_handle(args->physicalDevice); + struct vn_physical_device_proc_table *vk = &physical_dev->proc_table; + + vn_replace_vkGetPhysicalDeviceFragmentShadingRatesKHR_args_handle(args); + args->ret = vk->GetPhysicalDeviceFragmentShadingRatesKHR( + args->physicalDevice, args->pFragmentShadingRateCount, args->pFragmentShadingRates); +} + void vkr_context_init_physical_device_dispatch(struct vkr_context *ctx) { @@ -732,4 +746,8 @@ vkr_context_init_physical_device_dispatch(struct vkr_context *ctx) vkr_dispatch_vkGetPhysicalDeviceExternalFenceProperties; dispatch->dispatch_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = vkr_dispatch_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT; + + /* VK_KHR_fragment_shading_rate */ + dispatch->dispatch_vkGetPhysicalDeviceFragmentShadingRatesKHR = + vkr_dispatch_vkGetPhysicalDeviceFragmentShadingRatesKHR; } |