nvk: Enable subgroups features

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998>
This commit is contained in:
Faith Ekstrand 2023-10-23 09:10:56 -05:00 committed by Marge Bot
parent 4bd9c99ca0
commit c7c73d6d17
3 changed files with 15 additions and 4 deletions

View file

@ -533,6 +533,12 @@ nvk_get_device_properties(const struct nvk_instance *instance,
.sparseResidencyNonResidentStrict = true,
/* Vulkan 1.1 properties */
.subgroupSize = 32,
.subgroupSupportedStages = nvk_nak_stages(),
.subgroupSupportedOperations = VK_SUBGROUP_FEATURE_BALLOT_BIT |
VK_SUBGROUP_FEATURE_BASIC_BIT |
VK_SUBGROUP_FEATURE_VOTE_BIT,
.subgroupQuadOperationsInAllStages = false,
.pointClippingBehavior = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
.maxMultiviewViewCount = NVK_MAX_MULTIVIEW_VIEW_COUNT,
.maxMultiviewInstanceIndex = UINT32_MAX,

View file

@ -79,8 +79,8 @@ get_prog_optimize(void)
return debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
}
static uint32_t
get_nak_stages(void)
VkShaderStageFlags
nvk_nak_stages(void)
{
const struct debug_control flags[] = {
{ "vs", BITFIELD64_BIT(MESA_SHADER_VERTEX) },
@ -99,7 +99,7 @@ get_nak_stages(void)
static bool
use_nak(gl_shader_stage stage)
{
return get_nak_stages() & BITFIELD64_BIT(stage);
return nvk_nak_stages() & BITFIELD64_BIT(stage);
}
uint64_t
@ -107,7 +107,7 @@ nvk_physical_device_compiler_flags(const struct nvk_physical_device *pdev)
{
uint64_t prog_debug = get_prog_debug();
uint64_t prog_optimize = get_prog_optimize();
uint64_t nak_stages = get_nak_stages();
uint64_t nak_stages = nvk_nak_stages();
uint64_t nak_flags = nak_debug_flags(pdev->nak);
assert(prog_debug <= UINT8_MAX);
@ -153,6 +153,9 @@ nvk_physical_device_spirv_options(const struct nvk_physical_device *pdev,
.runtime_descriptor_array = true,
.shader_clock = true,
.shader_viewport_index_layer = true,
.subgroup_ballot = true,
.subgroup_basic = true,
.subgroup_vote = true,
.tessellation = true,
.transform_feedback = true,
.variable_pointers = true,

View file

@ -96,6 +96,8 @@ nvk_shader_address(const struct nvk_shader *shader)
return shader->upload_addr + shader->upload_padding;
}
VkShaderStageFlags nvk_nak_stages(void);
uint64_t
nvk_physical_device_compiler_flags(const struct nvk_physical_device *pdev);