mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 13:20:14 +01:00
nvk: Enable subgroups features
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24998>
This commit is contained in:
parent
4bd9c99ca0
commit
c7c73d6d17
3 changed files with 15 additions and 4 deletions
|
|
@ -533,6 +533,12 @@ nvk_get_device_properties(const struct nvk_instance *instance,
|
||||||
.sparseResidencyNonResidentStrict = true,
|
.sparseResidencyNonResidentStrict = true,
|
||||||
|
|
||||||
/* Vulkan 1.1 properties */
|
/* 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,
|
.pointClippingBehavior = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
|
||||||
.maxMultiviewViewCount = NVK_MAX_MULTIVIEW_VIEW_COUNT,
|
.maxMultiviewViewCount = NVK_MAX_MULTIVIEW_VIEW_COUNT,
|
||||||
.maxMultiviewInstanceIndex = UINT32_MAX,
|
.maxMultiviewInstanceIndex = UINT32_MAX,
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,8 @@ get_prog_optimize(void)
|
||||||
return debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
|
return debug_get_num_option("NV50_PROG_OPTIMIZE", 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t
|
VkShaderStageFlags
|
||||||
get_nak_stages(void)
|
nvk_nak_stages(void)
|
||||||
{
|
{
|
||||||
const struct debug_control flags[] = {
|
const struct debug_control flags[] = {
|
||||||
{ "vs", BITFIELD64_BIT(MESA_SHADER_VERTEX) },
|
{ "vs", BITFIELD64_BIT(MESA_SHADER_VERTEX) },
|
||||||
|
|
@ -99,7 +99,7 @@ get_nak_stages(void)
|
||||||
static bool
|
static bool
|
||||||
use_nak(gl_shader_stage stage)
|
use_nak(gl_shader_stage stage)
|
||||||
{
|
{
|
||||||
return get_nak_stages() & BITFIELD64_BIT(stage);
|
return nvk_nak_stages() & BITFIELD64_BIT(stage);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t
|
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_debug = get_prog_debug();
|
||||||
uint64_t prog_optimize = get_prog_optimize();
|
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);
|
uint64_t nak_flags = nak_debug_flags(pdev->nak);
|
||||||
|
|
||||||
assert(prog_debug <= UINT8_MAX);
|
assert(prog_debug <= UINT8_MAX);
|
||||||
|
|
@ -153,6 +153,9 @@ nvk_physical_device_spirv_options(const struct nvk_physical_device *pdev,
|
||||||
.runtime_descriptor_array = true,
|
.runtime_descriptor_array = true,
|
||||||
.shader_clock = true,
|
.shader_clock = true,
|
||||||
.shader_viewport_index_layer = true,
|
.shader_viewport_index_layer = true,
|
||||||
|
.subgroup_ballot = true,
|
||||||
|
.subgroup_basic = true,
|
||||||
|
.subgroup_vote = true,
|
||||||
.tessellation = true,
|
.tessellation = true,
|
||||||
.transform_feedback = true,
|
.transform_feedback = true,
|
||||||
.variable_pointers = true,
|
.variable_pointers = true,
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,8 @@ nvk_shader_address(const struct nvk_shader *shader)
|
||||||
return shader->upload_addr + shader->upload_padding;
|
return shader->upload_addr + shader->upload_padding;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VkShaderStageFlags nvk_nak_stages(void);
|
||||||
|
|
||||||
uint64_t
|
uint64_t
|
||||||
nvk_physical_device_compiler_flags(const struct nvk_physical_device *pdev);
|
nvk_physical_device_compiler_flags(const struct nvk_physical_device *pdev);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue