dzn: Support basic subgroups

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20777>
This commit is contained in:
Jesse Natalie 2023-01-18 14:15:54 -08:00 committed by Marge Bot
parent 33f59578fa
commit bfd891fe66
3 changed files with 12 additions and 0 deletions

View file

@ -520,6 +520,7 @@ dzn_physical_device_cache_caps(struct dzn_physical_device *pdev)
ID3D12Device1_CheckFeatureSupport(pdev->dev, D3D12_FEATURE_ARCHITECTURE1, &pdev->architecture, sizeof(pdev->architecture));
ID3D12Device1_CheckFeatureSupport(pdev->dev, D3D12_FEATURE_D3D12_OPTIONS, &pdev->options, sizeof(pdev->options));
ID3D12Device1_CheckFeatureSupport(pdev->dev, D3D12_FEATURE_D3D12_OPTIONS1, &pdev->options1, sizeof(pdev->options1));
ID3D12Device1_CheckFeatureSupport(pdev->dev, D3D12_FEATURE_D3D12_OPTIONS2, &pdev->options2, sizeof(pdev->options2));
ID3D12Device1_CheckFeatureSupport(pdev->dev, D3D12_FEATURE_D3D12_OPTIONS3, &pdev->options3, sizeof(pdev->options3));
ID3D12Device1_CheckFeatureSupport(pdev->dev, D3D12_FEATURE_D3D12_OPTIONS12, &pdev->options12, sizeof(pdev->options12));
@ -1708,6 +1709,10 @@ dzn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
pdevice->desc.dedicated_system_memory +
pdevice->desc.shared_system_memory) / 4,
128ull * 1024 * 1024, 2ull * 1024 * 1024 * 1024),
.subgroupSupportedOperations = VK_SUBGROUP_FEATURE_BASIC_BIT,
.subgroupSupportedStages = VK_SHADER_STAGE_FRAGMENT_BIT | VK_SHADER_STAGE_COMPUTE_BIT |
VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_GEOMETRY_BIT,
.subgroupSize = pdevice->options1.WaveOps ? pdevice->options1.WaveLaneCountMin : 1,
};
memcpy(core_1_1.driverUUID, pdevice->driver_uuid, VK_UUID_SIZE);
memcpy(core_1_1.deviceUUID, pdevice->device_uuid, VK_UUID_SIZE);
@ -1783,6 +1788,11 @@ dzn_GetPhysicalDeviceProperties2(VkPhysicalDevice physicalDevice,
const VkPhysicalDeviceVulkan13Properties core_1_3 = {
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES,
.minSubgroupSize = pdevice->options1.WaveOps ? pdevice->options1.WaveLaneCountMin : 1,
.minSubgroupSize = pdevice->options1.WaveOps ? pdevice->options1.WaveLaneCountMax : 1,
.maxComputeWorkgroupSubgroups = D3D12_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP /
(pdevice->options1.WaveOps ? pdevice->options1.WaveLaneCountMin : 1),
.requiredSubgroupSizeStages = 0,
};
vk_foreach_struct(ext, pProperties->pNext) {

View file

@ -219,6 +219,7 @@ dzn_pipeline_get_nir_shader(struct dzn_device *device,
.caps = {
.draw_parameters = true,
.multiview = true,
.subgroup_basic = true,
},
.ubo_addr_format = nir_address_format_32bit_index_offset,
.ssbo_addr_format = nir_address_format_32bit_index_offset,

View file

@ -207,6 +207,7 @@ struct dzn_physical_device {
D3D_ROOT_SIGNATURE_VERSION root_sig_version;
D3D12_FEATURE_DATA_ARCHITECTURE1 architecture;
D3D12_FEATURE_DATA_D3D12_OPTIONS options;
D3D12_FEATURE_DATA_D3D12_OPTIONS1 options1;
D3D12_FEATURE_DATA_D3D12_OPTIONS2 options2;
D3D12_FEATURE_DATA_D3D12_OPTIONS3 options3;
D3D12_FEATURE_DATA_D3D12_OPTIONS12 options12;