mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-03-25 15:31:38 +01:00
nvk: Advertise VK_KHR_fragment_shading_rate
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31585>
This commit is contained in:
parent
e45effe555
commit
2fb4aed9d8
4 changed files with 33 additions and 1 deletions
|
|
@ -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_fd DONE (anv, dzn, hasvk, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_external_semaphore_win32 DONE (dzn)
|
VK_KHR_external_semaphore_win32 DONE (dzn)
|
||||||
VK_KHR_fragment_shader_barycentric DONE (nvk/Turing+, radv/gfx10.3+)
|
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_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_get_surface_capabilities2 DONE (anv, lvp, nvk, pvr, radv, tu, v3dv, vn)
|
||||||
VK_KHR_global_priority DONE (anv, radv, tu)
|
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
|
VK_KHR_shader_quad_control on nvk
|
||||||
GL_EXT_draw_buffers2 on etnaviv/HALTI5+
|
GL_EXT_draw_buffers2 on etnaviv/HALTI5+
|
||||||
GL_ARB_draw_buffers_blend 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)
|
p_format == PIPE_FORMAT_R64_UINT || p_format == PIPE_FORMAT_R64_SINT)
|
||||||
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT;
|
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) {
|
if (features != 0) {
|
||||||
features |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT;
|
features |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT;
|
||||||
features |= VK_FORMAT_FEATURE_2_TRANSFER_DST_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:
|
case VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT:
|
||||||
return VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT |
|
return VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT |
|
||||||
VK_FORMAT_FEATURE_2_DEPTH_STENCIL_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:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@
|
||||||
#include "clc3c0.h"
|
#include "clc3c0.h"
|
||||||
#include "clc597.h"
|
#include "clc597.h"
|
||||||
#include "clc5c0.h"
|
#include "clc5c0.h"
|
||||||
|
#include "clc797.h"
|
||||||
#include "clc997.h"
|
#include "clc997.h"
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
|
|
@ -108,6 +109,7 @@ nvk_get_device_extensions(const struct nvk_instance *instance,
|
||||||
.KHR_format_feature_flags2 = true,
|
.KHR_format_feature_flags2 = true,
|
||||||
.KHR_fragment_shader_barycentric = info->cls_eng3d >= TURING_A &&
|
.KHR_fragment_shader_barycentric = info->cls_eng3d >= TURING_A &&
|
||||||
(nvk_nak_stages(info) & VK_SHADER_STAGE_FRAGMENT_BIT) != 0,
|
(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_get_memory_requirements2 = true,
|
||||||
.KHR_image_format_list = true,
|
.KHR_image_format_list = true,
|
||||||
.KHR_imageless_framebuffer = 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 &&
|
.fragmentShaderBarycentric = info->cls_eng3d >= TURING_A &&
|
||||||
(nvk_nak_stages(info) & VK_SHADER_STAGE_FRAGMENT_BIT) != 0,
|
(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 */
|
/* VK_KHR_index_type_uint8 */
|
||||||
.indexTypeUint8 = true,
|
.indexTypeUint8 = true,
|
||||||
|
|
||||||
|
|
@ -1100,6 +1107,25 @@ nvk_get_device_properties(const struct nvk_instance *instance,
|
||||||
/* VK_KHR_fragment_shader_barycentric */
|
/* VK_KHR_fragment_shader_barycentric */
|
||||||
.triStripVertexOrderIndependentOfProvokingVertex = false,
|
.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 */
|
/* VK_NV_shader_sm_builtins */
|
||||||
.shaderSMCount = (uint32_t)info->tpc_count * info->mp_per_tpc,
|
.shaderSMCount = (uint32_t)info->tpc_count * info->mp_per_tpc,
|
||||||
.shaderWarpsPerSM = info->max_warps_per_mp,
|
.shaderWarpsPerSM = info->max_warps_per_mp,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue