mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-21 09:50:36 +02:00
pvr: set device features/props/extensions to Vulkan 1.0 minimums (unless implemented)
The KHR_shader_expect_assume dEQP tests use dynamic rendering without first checking that the driver supports 1.3 or the KHR_dynamic_rendering extension Signed-off-by: Simon Perretta <simon.perretta@imgtec.com> Acked-by: Frank Binns <frank.binns@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33998>
This commit is contained in:
parent
ac2460bb3c
commit
a22ad99bdd
2 changed files with 140 additions and 203 deletions
|
|
@ -464,7 +464,7 @@ Vulkan 1.2 -- all DONE: anv, hk, nvk, panvk/v10+, tu, vn
|
|||
VK_KHR_create_renderpass2 DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_depth_stencil_resolve DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_draw_indirect_count DONE (anv, dzn, hasvk, lvp, nvk, panvk/v10+, radv, tu, vn)
|
||||
VK_KHR_driver_properties DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_driver_properties DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_image_format_list DONE (anv, dzn, hasvk, lvp, nvk, panvk, pvr, radv, tu, v3dv, vn)
|
||||
VK_KHR_imageless_framebuffer DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
VK_KHR_sampler_mirror_clamp_to_edge DONE (anv, dzn, hasvk, lvp, nvk, panvk, radv, tu, v3dv, vn)
|
||||
|
|
|
|||
|
|
@ -158,7 +158,7 @@ static const struct vk_instance_extension_table pvr_instance_extensions = {
|
|||
.KHR_get_surface_capabilities2 = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_surface = PVR_USE_WSI_PLATFORM,
|
||||
#ifndef VK_USE_PLATFORM_WIN32_KHR
|
||||
.EXT_headless_surface = PVR_USE_WSI_PLATFORM,
|
||||
.EXT_headless_surface = PVR_USE_WSI_PLATFORM && false,
|
||||
#endif
|
||||
.EXT_debug_report = true,
|
||||
.EXT_debug_utils = true,
|
||||
|
|
@ -170,35 +170,30 @@ static void pvr_physical_device_get_supported_extensions(
|
|||
*extensions = (struct vk_device_extension_table){
|
||||
.KHR_bind_memory2 = true,
|
||||
.KHR_copy_commands2 = true,
|
||||
/* TODO: enable this extension when the conformance tests get
|
||||
* updated to version 1.3.6.0, the current version does not
|
||||
* include the imagination driver ID, which will make a dEQP
|
||||
* test fail
|
||||
*/
|
||||
.KHR_driver_properties = false,
|
||||
.KHR_driver_properties = true,
|
||||
.KHR_external_fence = true,
|
||||
.KHR_external_fence_fd = true,
|
||||
.KHR_external_memory = true,
|
||||
.KHR_external_memory_fd = true,
|
||||
.KHR_format_feature_flags2 = true,
|
||||
.KHR_format_feature_flags2 = false,
|
||||
.KHR_external_semaphore = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_external_semaphore_fd = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_get_memory_requirements2 = true,
|
||||
.KHR_image_format_list = true,
|
||||
.KHR_index_type_uint8 = true,
|
||||
.KHR_index_type_uint8 = false,
|
||||
.KHR_present_id2 = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_present_wait2 = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_shader_expect_assume = true,
|
||||
.KHR_shader_expect_assume = false,
|
||||
.KHR_swapchain = PVR_USE_WSI_PLATFORM,
|
||||
.KHR_timeline_semaphore = true,
|
||||
.KHR_uniform_buffer_standard_layout = true,
|
||||
.EXT_external_memory_dma_buf = true,
|
||||
.EXT_host_query_reset = true,
|
||||
.EXT_index_type_uint8 = true,
|
||||
.EXT_index_type_uint8 = false,
|
||||
.EXT_memory_budget = true,
|
||||
.EXT_private_data = true,
|
||||
.EXT_scalar_block_layout = true,
|
||||
.EXT_texel_buffer_alignment = true,
|
||||
.EXT_texel_buffer_alignment = false,
|
||||
.EXT_tooling_info = true,
|
||||
};
|
||||
}
|
||||
|
|
@ -210,22 +205,22 @@ static void pvr_physical_device_get_supported_features(
|
|||
*features = (struct vk_features){
|
||||
/* Vulkan 1.0 */
|
||||
.robustBufferAccess = true,
|
||||
.fullDrawIndexUint32 = true,
|
||||
.imageCubeArray = true,
|
||||
.fullDrawIndexUint32 = false,
|
||||
.imageCubeArray = false,
|
||||
.independentBlend = false,
|
||||
.geometryShader = false,
|
||||
.tessellationShader = false,
|
||||
.sampleRateShading = true,
|
||||
.sampleRateShading = false,
|
||||
.dualSrcBlend = false,
|
||||
.logicOp = false,
|
||||
.multiDrawIndirect = true,
|
||||
.drawIndirectFirstInstance = true,
|
||||
.depthClamp = true,
|
||||
.depthBiasClamp = true,
|
||||
.multiDrawIndirect = false,
|
||||
.drawIndirectFirstInstance = false,
|
||||
.depthClamp = false,
|
||||
.depthBiasClamp = false,
|
||||
.fillModeNonSolid = false,
|
||||
.depthBounds = false,
|
||||
.wideLines = true,
|
||||
.largePoints = true,
|
||||
.wideLines = false,
|
||||
.largePoints = false,
|
||||
.alphaToOne = false,
|
||||
.multiViewport = false,
|
||||
.samplerAnisotropy = false,
|
||||
|
|
@ -234,23 +229,23 @@ static void pvr_physical_device_get_supported_features(
|
|||
.textureCompressionBC = false,
|
||||
.occlusionQueryPrecise = false,
|
||||
.pipelineStatisticsQuery = false,
|
||||
.vertexPipelineStoresAndAtomics = true,
|
||||
.fragmentStoresAndAtomics = true,
|
||||
.vertexPipelineStoresAndAtomics = false,
|
||||
.fragmentStoresAndAtomics = false,
|
||||
.shaderTessellationAndGeometryPointSize = false,
|
||||
.shaderImageGatherExtended = false,
|
||||
.shaderStorageImageExtendedFormats = true,
|
||||
.shaderStorageImageExtendedFormats = false,
|
||||
.shaderStorageImageMultisample = false,
|
||||
.shaderStorageImageReadWithoutFormat = true,
|
||||
.shaderStorageImageReadWithoutFormat = false,
|
||||
.shaderStorageImageWriteWithoutFormat = false,
|
||||
.shaderUniformBufferArrayDynamicIndexing = true,
|
||||
.shaderSampledImageArrayDynamicIndexing = true,
|
||||
.shaderStorageBufferArrayDynamicIndexing = true,
|
||||
.shaderStorageImageArrayDynamicIndexing = true,
|
||||
.shaderUniformBufferArrayDynamicIndexing = false,
|
||||
.shaderSampledImageArrayDynamicIndexing = false,
|
||||
.shaderStorageBufferArrayDynamicIndexing = false,
|
||||
.shaderStorageImageArrayDynamicIndexing = false,
|
||||
.shaderClipDistance = false,
|
||||
.shaderCullDistance = false,
|
||||
.shaderFloat64 = false,
|
||||
.shaderInt64 = true,
|
||||
.shaderInt16 = true,
|
||||
.shaderInt64 = false,
|
||||
.shaderInt16 = false,
|
||||
.shaderResourceResidency = false,
|
||||
.shaderResourceMinLod = false,
|
||||
.sparseBinding = false,
|
||||
|
|
@ -287,7 +282,7 @@ static void pvr_physical_device_get_supported_features(
|
|||
.texelBufferAlignment = true,
|
||||
|
||||
/* VK_KHR_shader_expect_assume */
|
||||
.shaderExpectAssume = true,
|
||||
.shaderExpectAssume = false,
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -324,74 +319,11 @@ static bool pvr_physical_device_init_pipeline_cache_uuid(
|
|||
return true;
|
||||
}
|
||||
|
||||
struct pvr_descriptor_limits {
|
||||
uint32_t max_per_stage_resources;
|
||||
uint32_t max_per_stage_samplers;
|
||||
uint32_t max_per_stage_uniform_buffers;
|
||||
uint32_t max_per_stage_storage_buffers;
|
||||
uint32_t max_per_stage_sampled_images;
|
||||
uint32_t max_per_stage_storage_images;
|
||||
uint32_t max_per_stage_input_attachments;
|
||||
};
|
||||
|
||||
static const struct pvr_descriptor_limits *
|
||||
pvr_get_physical_device_descriptor_limits(
|
||||
const struct pvr_device_info *dev_info,
|
||||
const struct pvr_device_runtime_info *dev_runtime_info)
|
||||
{
|
||||
enum pvr_descriptor_cs_level {
|
||||
/* clang-format off */
|
||||
CS4096, /* 6XT and some XE cores with large CS. */
|
||||
CS2560, /* Mid range Rogue XE cores. */
|
||||
CS2048, /* Low end Rogue XE cores. */
|
||||
CS1536, /* Ultra-low-end 9XEP. */
|
||||
CS680, /* lower limits for older devices. */
|
||||
CS408, /* 7XE. */
|
||||
/* clang-format on */
|
||||
};
|
||||
|
||||
static const struct pvr_descriptor_limits descriptor_limits[] = {
|
||||
[CS4096] = { 1160U, 256U, 192U, 144U, 256U, 256U, 8U, },
|
||||
[CS2560] = { 648U, 128U, 128U, 128U, 128U, 128U, 8U, },
|
||||
[CS2048] = { 584U, 128U, 96U, 64U, 128U, 128U, 8U, },
|
||||
[CS1536] = { 456U, 64U, 96U, 64U, 128U, 64U, 8U, },
|
||||
[CS680] = { 224U, 32U, 64U, 36U, 48U, 8U, 8U, },
|
||||
[CS408] = { 128U, 16U, 40U, 28U, 16U, 8U, 8U, },
|
||||
};
|
||||
|
||||
const uint32_t common_size =
|
||||
pvr_calc_fscommon_size_and_tiles_in_flight(dev_info,
|
||||
dev_runtime_info,
|
||||
UINT32_MAX,
|
||||
1);
|
||||
enum pvr_descriptor_cs_level cs_level;
|
||||
|
||||
if (common_size >= 2048) {
|
||||
cs_level = CS2048;
|
||||
} else if (common_size >= 1526) {
|
||||
cs_level = CS1536;
|
||||
} else if (common_size >= 680) {
|
||||
cs_level = CS680;
|
||||
} else if (common_size >= 408) {
|
||||
cs_level = CS408;
|
||||
} else {
|
||||
mesa_loge("This core appears to have a very limited amount of shared "
|
||||
"register space and may not meet the Vulkan spec limits.");
|
||||
abort();
|
||||
}
|
||||
|
||||
return &descriptor_limits[cs_level];
|
||||
}
|
||||
|
||||
static bool pvr_physical_device_get_properties(
|
||||
const struct pvr_physical_device *const pdevice,
|
||||
struct vk_properties *const properties)
|
||||
{
|
||||
const struct pvr_device_info *const dev_info = &pdevice->dev_info;
|
||||
const struct pvr_device_runtime_info *const dev_runtime_info =
|
||||
&pdevice->dev_runtime_info;
|
||||
const struct pvr_descriptor_limits *descriptor_limits =
|
||||
pvr_get_physical_device_descriptor_limits(dev_info, dev_runtime_info);
|
||||
|
||||
/* Default value based on the minimum value found in all existing cores. */
|
||||
const uint32_t max_multisample =
|
||||
|
|
@ -404,14 +336,14 @@ static bool pvr_physical_device_get_properties(
|
|||
const uint32_t uvs_pba_entries =
|
||||
PVR_GET_FEATURE_VALUE(dev_info, uvs_pba_entries, 160);
|
||||
|
||||
const uint32_t sub_pixel_precision =
|
||||
UNUSED const uint32_t sub_pixel_precision =
|
||||
PVR_HAS_FEATURE(dev_info, simple_internal_parameter_format) ? 4U : 8U;
|
||||
|
||||
const uint32_t max_render_size = rogue_get_render_size_max(dev_info);
|
||||
UNUSED const uint32_t max_render_size = rogue_get_render_size_max(dev_info);
|
||||
|
||||
const uint32_t max_sample_bits = ((max_multisample << 1) - 1);
|
||||
UNUSED const uint32_t max_sample_bits = ((max_multisample << 1) - 1);
|
||||
|
||||
const uint32_t max_user_vertex_components =
|
||||
UNUSED const uint32_t max_user_vertex_components =
|
||||
((uvs_banks <= 8U) && (uvs_pba_entries == 160U)) ? 64U : 128U;
|
||||
|
||||
/* The workgroup invocations are limited by the case where we have a compute
|
||||
|
|
@ -435,7 +367,7 @@ static bool pvr_physical_device_get_properties(
|
|||
const uint32_t max_instances_per_pds_task =
|
||||
PVR_GET_FEATURE_VALUE(dev_info, max_instances_per_pds_task, 32U);
|
||||
|
||||
const uint32_t max_compute_work_group_invocations =
|
||||
UNUSED const uint32_t max_compute_work_group_invocations =
|
||||
(usc_slots * max_instances_per_pds_task >= 512U) ? 512U : 384U;
|
||||
|
||||
bool ret;
|
||||
|
|
@ -449,103 +381,99 @@ static bool pvr_physical_device_get_properties(
|
|||
.deviceType = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
|
||||
/* deviceName and pipelineCacheUUID are filled below .*/
|
||||
|
||||
.maxImageDimension1D = max_render_size,
|
||||
.maxImageDimension2D = max_render_size,
|
||||
.maxImageDimension3D = PVR_MAX_TEXTURE_EXTENT_Z,
|
||||
.maxImageDimensionCube = max_render_size,
|
||||
.maxImageArrayLayers = PVR_MAX_ARRAY_LAYERS,
|
||||
.maxImageDimension1D = 4096U,
|
||||
.maxImageDimension2D = 4096U,
|
||||
.maxImageDimension3D = 256U,
|
||||
.maxImageDimensionCube = 4096U,
|
||||
.maxImageArrayLayers = 256U,
|
||||
.maxTexelBufferElements = 64U * 1024U,
|
||||
.maxUniformBufferRange = 128U * 1024U * 1024U,
|
||||
.maxUniformBufferRange = 16U * 1024U,
|
||||
.maxStorageBufferRange = 128U * 1024U * 1024U,
|
||||
.maxPushConstantsSize = PVR_MAX_PUSH_CONSTANTS_SIZE,
|
||||
.maxMemoryAllocationCount = UINT32_MAX,
|
||||
.maxSamplerAllocationCount = UINT32_MAX,
|
||||
.maxPushConstantsSize = 128U,
|
||||
.maxMemoryAllocationCount = 4096U,
|
||||
.maxSamplerAllocationCount = 4000U,
|
||||
.bufferImageGranularity = 1U,
|
||||
.sparseAddressSpaceSize = 256ULL * 1024ULL * 1024ULL * 1024ULL,
|
||||
/* Maximum number of descriptor sets that can be bound simultaneously. */
|
||||
.maxBoundDescriptorSets = PVR_MAX_DESCRIPTOR_SETS,
|
||||
.maxPerStageResources = descriptor_limits->max_per_stage_resources,
|
||||
.maxPerStageDescriptorSamplers =
|
||||
descriptor_limits->max_per_stage_samplers,
|
||||
.maxPerStageDescriptorUniformBuffers =
|
||||
descriptor_limits->max_per_stage_uniform_buffers,
|
||||
.maxPerStageDescriptorStorageBuffers =
|
||||
descriptor_limits->max_per_stage_storage_buffers,
|
||||
.maxPerStageDescriptorSampledImages =
|
||||
descriptor_limits->max_per_stage_sampled_images,
|
||||
.maxPerStageDescriptorStorageImages =
|
||||
descriptor_limits->max_per_stage_storage_images,
|
||||
.maxPerStageDescriptorInputAttachments =
|
||||
descriptor_limits->max_per_stage_input_attachments,
|
||||
.maxDescriptorSetSamplers = 256U,
|
||||
.maxDescriptorSetUniformBuffers = 256U,
|
||||
.maxDescriptorSetUniformBuffersDynamic =
|
||||
PVR_MAX_DESCRIPTOR_SET_UNIFORM_DYNAMIC_BUFFERS,
|
||||
.maxDescriptorSetStorageBuffers = 256U,
|
||||
.maxDescriptorSetStorageBuffersDynamic =
|
||||
PVR_MAX_DESCRIPTOR_SET_STORAGE_DYNAMIC_BUFFERS,
|
||||
.maxDescriptorSetSampledImages = 256U,
|
||||
.maxDescriptorSetStorageImages = 256U,
|
||||
.maxDescriptorSetInputAttachments = 256U,
|
||||
.sparseAddressSpaceSize = 0U, /* Requires sparseBinding */
|
||||
.maxBoundDescriptorSets = 4U,
|
||||
.maxPerStageDescriptorSamplers = 16,
|
||||
.maxPerStageDescriptorUniformBuffers = 12,
|
||||
.maxPerStageDescriptorStorageBuffers = 4,
|
||||
.maxPerStageDescriptorSampledImages = 16,
|
||||
.maxPerStageDescriptorStorageImages = 4,
|
||||
.maxPerStageDescriptorInputAttachments = 4,
|
||||
.maxPerStageResources = 44,
|
||||
.maxDescriptorSetSamplers = 3U * 16U,
|
||||
.maxDescriptorSetUniformBuffers = 3U * 12U,
|
||||
.maxDescriptorSetUniformBuffersDynamic = 8U,
|
||||
.maxDescriptorSetStorageBuffers = 3U * 4U,
|
||||
.maxDescriptorSetStorageBuffersDynamic = 4U,
|
||||
.maxDescriptorSetSampledImages = 3U * 16U,
|
||||
.maxDescriptorSetStorageImages = 3U * 4U,
|
||||
.maxDescriptorSetInputAttachments = 4U,
|
||||
|
||||
/* Vertex Shader Limits */
|
||||
.maxVertexInputAttributes = PVR_MAX_VERTEX_INPUT_BINDINGS,
|
||||
.maxVertexInputBindings = PVR_MAX_VERTEX_INPUT_BINDINGS,
|
||||
.maxVertexInputAttributeOffset = 0xFFFF,
|
||||
.maxVertexInputBindingStride = 1024U * 1024U * 1024U * 2U,
|
||||
.maxVertexOutputComponents = max_user_vertex_components,
|
||||
.maxVertexInputAttributes = 16U,
|
||||
.maxVertexInputBindings = 16U,
|
||||
.maxVertexInputAttributeOffset = 2048U - 1U,
|
||||
.maxVertexInputBindingStride = 2048U,
|
||||
.maxVertexOutputComponents = 64U,
|
||||
|
||||
/* Tessellation Limits */
|
||||
.maxTessellationGenerationLevel = 0,
|
||||
.maxTessellationPatchSize = 0,
|
||||
.maxTessellationControlPerVertexInputComponents = 0,
|
||||
.maxTessellationControlPerVertexOutputComponents = 0,
|
||||
.maxTessellationControlPerPatchOutputComponents = 0,
|
||||
.maxTessellationControlTotalOutputComponents = 0,
|
||||
.maxTessellationEvaluationInputComponents = 0,
|
||||
.maxTessellationEvaluationOutputComponents = 0,
|
||||
/* Requires tessellationShader */
|
||||
.maxTessellationGenerationLevel = 0U,
|
||||
.maxTessellationPatchSize = 0U,
|
||||
.maxTessellationControlPerVertexInputComponents = 0U,
|
||||
.maxTessellationControlPerVertexOutputComponents = 0U,
|
||||
.maxTessellationControlPerPatchOutputComponents = 0U,
|
||||
.maxTessellationControlTotalOutputComponents = 0U,
|
||||
.maxTessellationEvaluationInputComponents = 0U,
|
||||
.maxTessellationEvaluationOutputComponents = 0U,
|
||||
|
||||
/* Geometry Shader Limits */
|
||||
.maxGeometryShaderInvocations = 0,
|
||||
.maxGeometryInputComponents = 0,
|
||||
.maxGeometryOutputComponents = 0,
|
||||
.maxGeometryOutputVertices = 0,
|
||||
.maxGeometryTotalOutputComponents = 0,
|
||||
/* Requires geometryShader */
|
||||
.maxGeometryShaderInvocations = 0U,
|
||||
.maxGeometryInputComponents = 0U,
|
||||
.maxGeometryOutputComponents = 0U,
|
||||
.maxGeometryOutputVertices = 0U,
|
||||
.maxGeometryTotalOutputComponents = 0U,
|
||||
|
||||
/* Fragment Shader Limits */
|
||||
.maxFragmentInputComponents = max_user_vertex_components,
|
||||
.maxFragmentOutputAttachments = PVR_MAX_COLOR_ATTACHMENTS,
|
||||
.maxFragmentDualSrcAttachments = 0,
|
||||
.maxFragmentCombinedOutputResources =
|
||||
descriptor_limits->max_per_stage_storage_buffers +
|
||||
descriptor_limits->max_per_stage_storage_images +
|
||||
PVR_MAX_COLOR_ATTACHMENTS,
|
||||
.maxFragmentInputComponents = 64U,
|
||||
.maxFragmentOutputAttachments = 4U,
|
||||
.maxFragmentDualSrcAttachments = 0U, /* Requires dualSrcBlend */
|
||||
.maxFragmentCombinedOutputResources = 4U,
|
||||
|
||||
/* Compute Shader Limits */
|
||||
.maxComputeSharedMemorySize = 16U * 1024U,
|
||||
.maxComputeWorkGroupCount = { 64U * 1024U, 64U * 1024U, 64U * 1024U },
|
||||
.maxComputeWorkGroupInvocations = max_compute_work_group_invocations,
|
||||
.maxComputeWorkGroupSize = { max_compute_work_group_invocations,
|
||||
max_compute_work_group_invocations,
|
||||
64U },
|
||||
.maxComputeWorkGroupCount = {
|
||||
[0] = (64U * 1024U) - 1,
|
||||
[1] = (64U * 1024U) - 1,
|
||||
[2] = (64U * 1024U) - 1,
|
||||
},
|
||||
.maxComputeWorkGroupInvocations = 128U,
|
||||
.maxComputeWorkGroupSize = {
|
||||
[0] = 128U,
|
||||
[1] = 128U,
|
||||
[2] = 64U,
|
||||
},
|
||||
|
||||
/* Rasterization Limits */
|
||||
.subPixelPrecisionBits = sub_pixel_precision,
|
||||
.subPixelPrecisionBits = 4U,
|
||||
.subTexelPrecisionBits = 8U,
|
||||
.mipmapPrecisionBits = 8U,
|
||||
|
||||
.maxDrawIndexedIndexValue = UINT32_MAX,
|
||||
.maxDrawIndirectCount = 2U * 1024U * 1024U * 1024U,
|
||||
.maxDrawIndexedIndexValue = (1U << 24) - 1U, /* Requires fullDrawIndexUint32 */
|
||||
.maxDrawIndirectCount = 1U, /* Requires multiDrawIndirect */
|
||||
.maxSamplerLodBias = 16.0f,
|
||||
.maxSamplerAnisotropy = 1.0f,
|
||||
.maxViewports = PVR_MAX_VIEWPORTS,
|
||||
.maxSamplerAnisotropy = 1.0f, /* Requires samplerAnisotropy */
|
||||
.maxViewports = 1U, /* Requires multiViewport */
|
||||
|
||||
.maxViewportDimensions[0] = max_render_size,
|
||||
.maxViewportDimensions[1] = max_render_size,
|
||||
.viewportBoundsRange[0] = -(int32_t)(2U * max_render_size),
|
||||
.viewportBoundsRange[1] = 2U * max_render_size,
|
||||
.maxViewportDimensions[0] = 4096U,
|
||||
.maxViewportDimensions[1] = 4096U,
|
||||
.viewportBoundsRange[0] = -8192.0f,
|
||||
.viewportBoundsRange[1] = 8191.0f,
|
||||
|
||||
.viewportSubPixelBits = 0,
|
||||
.viewportSubPixelBits = 0U,
|
||||
.minMemoryMapAlignment = pdevice->ws->page_size,
|
||||
.minTexelBufferOffsetAlignment = PVR_TEXEL_BUFFER_OFFSET_ALIGNMENT,
|
||||
.minUniformBufferOffsetAlignment = PVR_UNIFORM_BUFFER_OFFSET_ALIGNMENT,
|
||||
|
|
@ -553,26 +481,30 @@ static bool pvr_physical_device_get_properties(
|
|||
|
||||
.minTexelOffset = -8,
|
||||
.maxTexelOffset = 7U,
|
||||
.minTexelGatherOffset = -8,
|
||||
.maxTexelGatherOffset = 7,
|
||||
.minInterpolationOffset = -0.5,
|
||||
.maxInterpolationOffset = 0.5,
|
||||
.subPixelInterpolationOffsetBits = 4U,
|
||||
|
||||
.maxFramebufferWidth = max_render_size,
|
||||
.maxFramebufferHeight = max_render_size,
|
||||
.maxFramebufferLayers = PVR_MAX_FRAMEBUFFER_LAYERS,
|
||||
/* Requires shaderImageGatherExtended */
|
||||
.minTexelGatherOffset = 0,
|
||||
.maxTexelGatherOffset = 0U,
|
||||
|
||||
.framebufferColorSampleCounts = max_sample_bits,
|
||||
.framebufferDepthSampleCounts = max_sample_bits,
|
||||
.framebufferStencilSampleCounts = max_sample_bits,
|
||||
.framebufferNoAttachmentsSampleCounts = max_sample_bits,
|
||||
.maxColorAttachments = PVR_MAX_COLOR_ATTACHMENTS,
|
||||
.sampledImageColorSampleCounts = max_sample_bits,
|
||||
.sampledImageIntegerSampleCounts = max_sample_bits,
|
||||
.sampledImageDepthSampleCounts = max_sample_bits,
|
||||
.sampledImageStencilSampleCounts = max_sample_bits,
|
||||
.storageImageSampleCounts = max_sample_bits,
|
||||
/* Requires sampleRateShading */
|
||||
.minInterpolationOffset = 0.0f,
|
||||
.maxInterpolationOffset = 0.0f,
|
||||
.subPixelInterpolationOffsetBits = 0U,
|
||||
|
||||
.maxFramebufferWidth = 4096U,
|
||||
.maxFramebufferHeight = 4096U,
|
||||
.maxFramebufferLayers = 256U,
|
||||
|
||||
.framebufferColorSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.framebufferDepthSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.framebufferStencilSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.framebufferNoAttachmentsSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.maxColorAttachments = 4U,
|
||||
.sampledImageColorSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.sampledImageIntegerSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.sampledImageDepthSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.sampledImageStencilSampleCounts = VK_SAMPLE_COUNT_1_BIT | VK_SAMPLE_COUNT_4_BIT,
|
||||
.storageImageSampleCounts = VK_SAMPLE_COUNT_1_BIT, /* Requires shaderStorageImageMultisample */
|
||||
.maxSampleMaskWords = 1U,
|
||||
.timestampComputeAndGraphics = false,
|
||||
.timestampPeriod = 0.0f,
|
||||
|
|
@ -583,16 +515,21 @@ static bool pvr_physical_device_get_properties(
|
|||
.maxCombinedClipAndCullDistances = 0U,
|
||||
|
||||
.discreteQueuePriorities = 2U,
|
||||
|
||||
/* Requires largePoints */
|
||||
.pointSizeRange[0] = 1.0f,
|
||||
.pointSizeRange[1] = 511.0f,
|
||||
.pointSizeGranularity = 0.0625f,
|
||||
.lineWidthRange[0] = 1.0f / 16.0f,
|
||||
.lineWidthRange[1] = 16.0f,
|
||||
.lineWidthGranularity = 1.0f / 16.0f,
|
||||
.pointSizeRange[1] = 1.0f,
|
||||
.pointSizeGranularity = 0.0f,
|
||||
|
||||
/* Requires wideLines */
|
||||
.lineWidthRange[0] = 1.0f,
|
||||
.lineWidthRange[1] = 1.0f,
|
||||
.lineWidthGranularity = 0.0f,
|
||||
|
||||
.strictLines = false,
|
||||
.standardSampleLocations = true,
|
||||
.optimalBufferCopyOffsetAlignment = 4U,
|
||||
.optimalBufferCopyRowPitchAlignment = 4U,
|
||||
.optimalBufferCopyOffsetAlignment = PVR_STORAGE_BUFFER_OFFSET_ALIGNMENT,
|
||||
.optimalBufferCopyRowPitchAlignment = PVR_STORAGE_BUFFER_OFFSET_ALIGNMENT,
|
||||
.nonCoherentAtomSize = 1U,
|
||||
|
||||
/* Vulkan 1.2 / VK_KHR_driver_properties */
|
||||
|
|
@ -610,9 +547,9 @@ static bool pvr_physical_device_get_properties(
|
|||
.maxTimelineSemaphoreValueDifference = UINT64_MAX,
|
||||
|
||||
/* Vulkan 1.3 / VK_EXT_texel_buffer_alignment */
|
||||
.storageTexelBufferOffsetAlignmentBytes = 16,
|
||||
.storageTexelBufferOffsetAlignmentBytes = PVR_TEXEL_BUFFER_OFFSET_ALIGNMENT,
|
||||
.storageTexelBufferOffsetSingleTexelAlignment = true,
|
||||
.uniformTexelBufferOffsetAlignmentBytes = 16,
|
||||
.uniformTexelBufferOffsetAlignmentBytes = PVR_TEXEL_BUFFER_OFFSET_ALIGNMENT,
|
||||
.uniformTexelBufferOffsetSingleTexelAlignment = false,
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue