nvk: Advertise VK_KHR_fragment_shading_rate
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31585>
This commit is contained in:

committed by
Marge Bot

parent
e45effe555
commit
2fb4aed9d8
@@ -523,7 +523,7 @@ Khronos extensions that are not part of any Vulkan version:
|
||||
VK_KHR_external_semaphore_fd DONE (anv, dzn, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_external_semaphore_win32 DONE (dzn)
|
||||
VK_KHR_fragment_shader_barycentric DONE (nvk/Turing+, radv/gfx10.3+)
|
||||
VK_KHR_fragment_shading_rate DONE (anv/gen11+, radv/gfx10.3+, vn)
|
||||
VK_KHR_fragment_shading_rate DONE (anv/gen11+, nvk/Turing+, radv/gfx10.3+, vn)
|
||||
VK_KHR_get_display_properties2 DONE (anv, nvk, pvr, radv, tu, v3dv)
|
||||
VK_KHR_get_surface_capabilities2 DONE (anv, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_global_priority DONE (anv, radv, tu)
|
||||
|
@@ -23,3 +23,4 @@ VK_EXT_depth_clamp_control on anv, hasvk, nvk, radv
|
||||
VK_KHR_shader_quad_control on nvk
|
||||
GL_EXT_draw_buffers2 on etnaviv/HALTI5+
|
||||
GL_ARB_draw_buffers_blend on etnaviv/HALTI5+
|
||||
VK_KHR_fragment_shading_rate on NVK
|
||||
|
@@ -85,6 +85,9 @@ nvk_get_image_plane_format_features(struct nvk_physical_device *pdev,
|
||||
p_format == PIPE_FORMAT_R64_UINT || p_format == PIPE_FORMAT_R64_SINT)
|
||||
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT;
|
||||
|
||||
if (p_format == PIPE_FORMAT_R8_UINT && tiling == VK_IMAGE_TILING_OPTIMAL)
|
||||
features |= VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
|
||||
|
||||
if (features != 0) {
|
||||
features |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT;
|
||||
features |= VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT;
|
||||
@@ -273,6 +276,8 @@ vk_image_usage_to_format_features(VkImageUsageFlagBits usage_flag)
|
||||
case VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT:
|
||||
return VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT |
|
||||
VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT;
|
||||
case VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR:
|
||||
return VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
@@ -45,6 +45,7 @@
|
||||
#include "clc3c0.h"
|
||||
#include "clc597.h"
|
||||
#include "clc5c0.h"
|
||||
#include "clc797.h"
|
||||
#include "clc997.h"
|
||||
|
||||
static bool
|
||||
@@ -108,6 +109,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance,
|
||||
.KHR_format_feature_flags2 = true,
|
||||
.KHR_fragment_shader_barycentric = info->cls_eng3d >= TURING_A &&
|
||||
(nvk_nak_stages(info) & VK_SHADER_STAGE_FRAGMENT_BIT) != 0,
|
||||
.KHR_fragment_shading_rate = info->cls_eng3d >= TURING_A,
|
||||
.KHR_get_memory_requirements2 = true,
|
||||
.KHR_image_format_list = true,
|
||||
.KHR_imageless_framebuffer = true,
|
||||
@@ -421,6 +423,11 @@ nvk_get_device_features(const struct nv_device_info *info,
|
||||
.fragmentShaderBarycentric = info->cls_eng3d >= TURING_A &&
|
||||
(nvk_nak_stages(info) & VK_SHADER_STAGE_FRAGMENT_BIT) != 0,
|
||||
|
||||
/* VK_KHR_fragment_shading_rate */
|
||||
.pipelineFragmentShadingRate = info->cls_eng3d >= TURING_A,
|
||||
.primitiveFragmentShadingRate = info->cls_eng3d >= TURING_A,
|
||||
.attachmentFragmentShadingRate = info->cls_eng3d >= TURING_A,
|
||||
|
||||
/* VK_KHR_index_type_uint8 */
|
||||
.indexTypeUint8 = true,
|
||||
|
||||
@@ -1100,6 +1107,25 @@ nvk_get_device_properties(const struct nvk_instance *instance,
|
||||
/* VK_KHR_fragment_shader_barycentric */
|
||||
.triStripVertexOrderIndependentOfProvokingVertex = false,
|
||||
|
||||
/* VK_KHR_fragment_shading_rate */
|
||||
.minFragmentShadingRateAttachmentTexelSize = { 16, 16 },
|
||||
.maxFragmentShadingRateAttachmentTexelSize = { 16, 16 },
|
||||
.maxFragmentShadingRateAttachmentTexelSizeAspectRatio = 1,
|
||||
.primitiveFragmentShadingRateWithMultipleViewports = info->cls_eng3d >= AMPERE_B,
|
||||
.layeredShadingRateAttachments = true,
|
||||
.fragmentShadingRateNonTrivialCombinerOps = true,
|
||||
.maxFragmentSize = { 4, 4 },
|
||||
.maxFragmentSizeAspectRatio = 2,
|
||||
.maxFragmentShadingRateCoverageSamples = 16,
|
||||
.maxFragmentShadingRateRasterizationSamples = 16,
|
||||
.fragmentShadingRateWithShaderDepthStencilWrites = true,
|
||||
.fragmentShadingRateWithSampleMask = true,
|
||||
.fragmentShadingRateWithShaderSampleMask = true,
|
||||
.fragmentShadingRateWithConservativeRasterization = true,
|
||||
//.fragmentShadingRateWithFragmentShaderInterlock = true,
|
||||
.fragmentShadingRateWithCustomSampleLocations = true,
|
||||
.fragmentShadingRateStrictMultiplyCombiner = true,
|
||||
|
||||
/* VK_NV_shader_sm_builtins */
|
||||
.shaderSMCount = (uint32_t)info->tpc_count * info->mp_per_tpc,
|
||||
.shaderWarpsPerSM = info->max_warps_per_mp,
|
||||
|
Reference in New Issue
Block a user