vk/0.210.0: Rework device features and limits
This commit is contained in:
parent
74c4c4acb6
commit
d689745303
|
@ -1123,29 +1123,31 @@ typedef struct VkPhysicalDeviceFeatures {
|
|||
VkBool32 geometryShader;
|
||||
VkBool32 tessellationShader;
|
||||
VkBool32 sampleRateShading;
|
||||
VkBool32 dualSourceBlend;
|
||||
VkBool32 dualSrcBlend;
|
||||
VkBool32 logicOp;
|
||||
VkBool32 multiDrawIndirect;
|
||||
VkBool32 depthClip;
|
||||
VkBool32 depthClamp;
|
||||
VkBool32 depthBiasClamp;
|
||||
VkBool32 fillModeNonSolid;
|
||||
VkBool32 depthBounds;
|
||||
VkBool32 wideLines;
|
||||
VkBool32 largePoints;
|
||||
VkBool32 alphaToOne;
|
||||
VkBool32 multiViewport;
|
||||
VkBool32 samplerAnisotropy;
|
||||
VkBool32 textureCompressionETC2;
|
||||
VkBool32 textureCompressionASTC_LDR;
|
||||
VkBool32 textureCompressionBC;
|
||||
VkBool32 occlusionQueryNonConservative;
|
||||
VkBool32 occlusionQueryPrecise;
|
||||
VkBool32 pipelineStatisticsQuery;
|
||||
VkBool32 vertexSideEffects;
|
||||
VkBool32 tessellationSideEffects;
|
||||
VkBool32 geometrySideEffects;
|
||||
VkBool32 fragmentSideEffects;
|
||||
VkBool32 shaderTessellationPointSize;
|
||||
VkBool32 shaderGeometryPointSize;
|
||||
VkBool32 vertexPipelineStoresAndAtomics;
|
||||
VkBool32 fragmentStoresAndAtomics;
|
||||
VkBool32 shaderTessellationAndGeometryPointSize;
|
||||
VkBool32 shaderImageGatherExtended;
|
||||
VkBool32 shaderStorageImageExtendedFormats;
|
||||
VkBool32 shaderStorageImageMultisample;
|
||||
VkBool32 shaderStorageImageReadWithoutFormat;
|
||||
VkBool32 shaderStorageImageWriteWithoutFormat;
|
||||
VkBool32 shaderUniformBufferArrayDynamicIndexing;
|
||||
VkBool32 shaderSampledImageArrayDynamicIndexing;
|
||||
VkBool32 shaderStorageBufferArrayDynamicIndexing;
|
||||
|
@ -1156,8 +1158,7 @@ typedef struct VkPhysicalDeviceFeatures {
|
|||
VkBool32 shaderInt64;
|
||||
VkBool32 shaderInt16;
|
||||
VkBool32 shaderResourceResidency;
|
||||
VkBool32 shaderResourceMinLOD;
|
||||
VkBool32 alphaToOne;
|
||||
VkBool32 shaderResourceMinLod;
|
||||
VkBool32 sparseBinding;
|
||||
VkBool32 sparseResidencyBuffer;
|
||||
VkBool32 sparseResidencyImage2D;
|
||||
|
@ -1167,6 +1168,7 @@ typedef struct VkPhysicalDeviceFeatures {
|
|||
VkBool32 sparseResidency8Samples;
|
||||
VkBool32 sparseResidency16Samples;
|
||||
VkBool32 sparseResidencyAliased;
|
||||
VkBool32 variableMultisampleRate;
|
||||
} VkPhysicalDeviceFeatures;
|
||||
|
||||
typedef struct VkFormatProperties {
|
||||
|
@ -1195,21 +1197,22 @@ typedef struct VkPhysicalDeviceLimits {
|
|||
uint32_t maxImageDimension3D;
|
||||
uint32_t maxImageDimensionCube;
|
||||
uint32_t maxImageArrayLayers;
|
||||
VkSampleCountFlags sampleCounts;
|
||||
uint32_t maxTexelBufferSize;
|
||||
uint32_t maxUniformBufferSize;
|
||||
uint32_t maxStorageBufferSize;
|
||||
uint32_t maxTexelBufferElements;
|
||||
uint32_t maxUniformBufferRange;
|
||||
uint32_t maxStorageBufferRange;
|
||||
uint32_t maxPushConstantsSize;
|
||||
uint32_t maxMemoryAllocationCount;
|
||||
uint32_t maxSamplerAllocationCount;
|
||||
VkDeviceSize bufferImageGranularity;
|
||||
VkDeviceSize sparseAddressSpaceSize;
|
||||
uint32_t maxBoundDescriptorSets;
|
||||
uint32_t maxDescriptorSets;
|
||||
uint32_t maxPerStageDescriptorSamplers;
|
||||
uint32_t maxPerStageDescriptorUniformBuffers;
|
||||
uint32_t maxPerStageDescriptorStorageBuffers;
|
||||
uint32_t maxPerStageDescriptorSampledImages;
|
||||
uint32_t maxPerStageDescriptorStorageImages;
|
||||
uint32_t maxPerStageDescriptorInputAttachments;
|
||||
uint32_t maxPerStageResources;
|
||||
uint32_t maxDescriptorSetSamplers;
|
||||
uint32_t maxDescriptorSetUniformBuffers;
|
||||
uint32_t maxDescriptorSetUniformBuffersDynamic;
|
||||
|
@ -1217,27 +1220,28 @@ typedef struct VkPhysicalDeviceLimits {
|
|||
uint32_t maxDescriptorSetStorageBuffersDynamic;
|
||||
uint32_t maxDescriptorSetSampledImages;
|
||||
uint32_t maxDescriptorSetStorageImages;
|
||||
uint32_t maxDescriptorSetInputAttachments;
|
||||
uint32_t maxVertexInputAttributes;
|
||||
uint32_t maxVertexInputBindings;
|
||||
uint32_t maxVertexInputAttributeOffset;
|
||||
uint32_t maxVertexInputBindingStride;
|
||||
uint32_t maxVertexOutputComponents;
|
||||
uint32_t maxTessGenLevel;
|
||||
uint32_t maxTessPatchSize;
|
||||
uint32_t maxTessControlPerVertexInputComponents;
|
||||
uint32_t maxTessControlPerVertexOutputComponents;
|
||||
uint32_t maxTessControlPerPatchOutputComponents;
|
||||
uint32_t maxTessControlTotalOutputComponents;
|
||||
uint32_t maxTessEvaluationInputComponents;
|
||||
uint32_t maxTessEvaluationOutputComponents;
|
||||
uint32_t maxTessellationGenerationLevel;
|
||||
uint32_t maxTessellationPatchSize;
|
||||
uint32_t maxTessellationControlPerVertexInputComponents;
|
||||
uint32_t maxTessellationControlPerVertexOutputComponents;
|
||||
uint32_t maxTessellationControlPerPatchOutputComponents;
|
||||
uint32_t maxTessellationControlTotalOutputComponents;
|
||||
uint32_t maxTessellationEvaluationInputComponents;
|
||||
uint32_t maxTessellationEvaluationOutputComponents;
|
||||
uint32_t maxGeometryShaderInvocations;
|
||||
uint32_t maxGeometryInputComponents;
|
||||
uint32_t maxGeometryOutputComponents;
|
||||
uint32_t maxGeometryOutputVertices;
|
||||
uint32_t maxGeometryTotalOutputComponents;
|
||||
uint32_t maxFragmentInputComponents;
|
||||
uint32_t maxFragmentOutputBuffers;
|
||||
uint32_t maxFragmentDualSourceBuffers;
|
||||
uint32_t maxFragmentOutputAttachments;
|
||||
uint32_t maxFragmentDualSrcAttachments;
|
||||
uint32_t maxFragmentCombinedOutputResources;
|
||||
uint32_t maxComputeSharedMemorySize;
|
||||
uint32_t maxComputeWorkGroupCount[3];
|
||||
|
@ -1247,21 +1251,20 @@ typedef struct VkPhysicalDeviceLimits {
|
|||
uint32_t subTexelPrecisionBits;
|
||||
uint32_t mipmapPrecisionBits;
|
||||
uint32_t maxDrawIndexedIndexValue;
|
||||
uint32_t maxDrawIndirectInstanceCount;
|
||||
VkBool32 primitiveRestartForPatches;
|
||||
uint32_t maxDrawIndirectCount;
|
||||
float maxSamplerLodBias;
|
||||
float maxSamplerAnisotropy;
|
||||
uint32_t maxViewports;
|
||||
uint32_t maxViewportDimensions[2];
|
||||
float viewportBoundsRange[2];
|
||||
uint32_t viewportSubPixelBits;
|
||||
uint32_t minMemoryMapAlignment;
|
||||
uint32_t minTexelBufferOffsetAlignment;
|
||||
uint32_t minUniformBufferOffsetAlignment;
|
||||
uint32_t minStorageBufferOffsetAlignment;
|
||||
uint32_t minTexelOffset;
|
||||
size_t minMemoryMapAlignment;
|
||||
VkDeviceSize minTexelBufferOffsetAlignment;
|
||||
VkDeviceSize minUniformBufferOffsetAlignment;
|
||||
VkDeviceSize minStorageBufferOffsetAlignment;
|
||||
int32_t minTexelOffset;
|
||||
uint32_t maxTexelOffset;
|
||||
uint32_t minTexelGatherOffset;
|
||||
int32_t minTexelGatherOffset;
|
||||
uint32_t maxTexelGatherOffset;
|
||||
float minInterpolationOffset;
|
||||
float maxInterpolationOffset;
|
||||
|
@ -1269,23 +1272,31 @@ typedef struct VkPhysicalDeviceLimits {
|
|||
uint32_t maxFramebufferWidth;
|
||||
uint32_t maxFramebufferHeight;
|
||||
uint32_t maxFramebufferLayers;
|
||||
uint32_t maxFramebufferColorSamples;
|
||||
uint32_t maxFramebufferDepthSamples;
|
||||
uint32_t maxFramebufferStencilSamples;
|
||||
VkSampleCountFlags framebufferColorSampleCounts;
|
||||
VkSampleCountFlags framebufferDepthSampleCounts;
|
||||
VkSampleCountFlags framebufferStencilSampleCounts;
|
||||
VkSampleCountFlags framebufferNoAttachmentsSampleCounts;
|
||||
uint32_t maxColorAttachments;
|
||||
uint32_t maxSampledImageColorSamples;
|
||||
uint32_t maxSampledImageDepthSamples;
|
||||
uint32_t maxSampledImageIntegerSamples;
|
||||
uint32_t maxStorageImageSamples;
|
||||
VkSampleCountFlags sampledImageColorSampleCounts;
|
||||
VkSampleCountFlags sampledImageIntegerSampleCounts;
|
||||
VkSampleCountFlags sampledImageDepthSampleCounts;
|
||||
VkSampleCountFlags sampledImageStencilSampleCounts;
|
||||
VkSampleCountFlags storageImageSampleCounts;
|
||||
uint32_t maxSampleMaskWords;
|
||||
uint64_t timestampFrequency;
|
||||
float timestampPeriod;
|
||||
uint32_t maxClipDistances;
|
||||
uint32_t maxCullDistances;
|
||||
uint32_t maxCombinedClipAndCullDistances;
|
||||
uint32_t discreteQueuePriorities;
|
||||
float pointSizeRange[2];
|
||||
float lineWidthRange[2];
|
||||
float pointSizeGranularity;
|
||||
float lineWidthGranularity;
|
||||
VkBool32 strictLines;
|
||||
VkBool32 standardSampleLocations;
|
||||
VkDeviceSize optimalBufferCopyOffsetAlignment;
|
||||
VkDeviceSize optimalBufferCopyRowPitchAlignment;
|
||||
VkDeviceSize nonCoherentAtomSize;
|
||||
} VkPhysicalDeviceLimits;
|
||||
|
||||
typedef struct VkPhysicalDeviceSparseProperties {
|
||||
|
|
|
@ -324,26 +324,26 @@ void anv_GetPhysicalDeviceFeatures(
|
|||
.geometryShader = true,
|
||||
.tessellationShader = false,
|
||||
.sampleRateShading = false,
|
||||
.dualSourceBlend = true,
|
||||
.dualSrcBlend = true,
|
||||
.logicOp = true,
|
||||
.multiDrawIndirect = true,
|
||||
.depthClip = false,
|
||||
.depthClamp = false,
|
||||
.depthBiasClamp = false,
|
||||
.fillModeNonSolid = true,
|
||||
.depthBounds = false,
|
||||
.wideLines = true,
|
||||
.largePoints = true,
|
||||
.alphaToOne = true,
|
||||
.multiViewport = true,
|
||||
.samplerAnisotropy = false, /* FINISHME */
|
||||
.textureCompressionETC2 = true,
|
||||
.textureCompressionASTC_LDR = true,
|
||||
.textureCompressionBC = true,
|
||||
.occlusionQueryNonConservative = false, /* FINISHME */
|
||||
.occlusionQueryPrecise = false, /* FINISHME */
|
||||
.pipelineStatisticsQuery = true,
|
||||
.vertexSideEffects = false,
|
||||
.tessellationSideEffects = false,
|
||||
.geometrySideEffects = false,
|
||||
.fragmentSideEffects = false,
|
||||
.shaderTessellationPointSize = false,
|
||||
.shaderGeometryPointSize = true,
|
||||
.vertexPipelineStoresAndAtomics = false,
|
||||
.fragmentStoresAndAtomics = true,
|
||||
.shaderTessellationAndGeometryPointSize = true,
|
||||
.shaderImageGatherExtended = true,
|
||||
.shaderStorageImageExtendedFormats = false,
|
||||
.shaderStorageImageMultisample = false,
|
||||
|
@ -351,12 +351,15 @@ void anv_GetPhysicalDeviceFeatures(
|
|||
.shaderSampledImageArrayDynamicIndexing = false,
|
||||
.shaderStorageBufferArrayDynamicIndexing = false,
|
||||
.shaderStorageImageArrayDynamicIndexing = false,
|
||||
.shaderStorageImageReadWithoutFormat = false,
|
||||
.shaderStorageImageWriteWithoutFormat = true,
|
||||
.shaderClipDistance = false,
|
||||
.shaderCullDistance = false,
|
||||
.shaderFloat64 = false,
|
||||
.shaderInt64 = false,
|
||||
.shaderInt16 = false,
|
||||
.alphaToOne = true,
|
||||
.variableMultisampleRate = false,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -369,30 +372,34 @@ void anv_GetPhysicalDeviceProperties(
|
|||
|
||||
anv_finishme("Get correct values for VkPhysicalDeviceLimits");
|
||||
|
||||
VkSampleCountFlags sample_counts =
|
||||
VK_SAMPLE_COUNT_1_BIT |
|
||||
VK_SAMPLE_COUNT_2_BIT |
|
||||
VK_SAMPLE_COUNT_4_BIT |
|
||||
VK_SAMPLE_COUNT_8_BIT;
|
||||
|
||||
VkPhysicalDeviceLimits limits = {
|
||||
.maxImageDimension1D = (1 << 14),
|
||||
.maxImageDimension2D = (1 << 14),
|
||||
.maxImageDimension3D = (1 << 10),
|
||||
.maxImageDimensionCube = (1 << 14),
|
||||
.maxImageArrayLayers = (1 << 10),
|
||||
|
||||
/* Broadwell supports 1, 2, 4, and 8 samples. */
|
||||
.sampleCounts = 4,
|
||||
|
||||
.maxTexelBufferSize = (1 << 14),
|
||||
.maxUniformBufferSize = UINT32_MAX,
|
||||
.maxStorageBufferSize = UINT32_MAX,
|
||||
.maxTexelBufferElements = (1 << 14),
|
||||
.maxUniformBufferRange = UINT32_MAX,
|
||||
.maxStorageBufferRange = UINT32_MAX,
|
||||
.maxPushConstantsSize = MAX_PUSH_CONSTANTS_SIZE,
|
||||
.maxMemoryAllocationCount = UINT32_MAX,
|
||||
.maxSamplerAllocationCount = UINT32_MAX,
|
||||
.bufferImageGranularity = 64, /* A cache line */
|
||||
.sparseAddressSpaceSize = 0,
|
||||
.maxBoundDescriptorSets = MAX_SETS,
|
||||
.maxDescriptorSets = UINT32_MAX,
|
||||
.maxPerStageDescriptorSamplers = 64,
|
||||
.maxPerStageDescriptorUniformBuffers = 64,
|
||||
.maxPerStageDescriptorStorageBuffers = 64,
|
||||
.maxPerStageDescriptorSampledImages = 64,
|
||||
.maxPerStageDescriptorStorageImages = 64,
|
||||
.maxPerStageDescriptorInputAttachments = 64,
|
||||
.maxPerStageResources = 128,
|
||||
.maxDescriptorSetSamplers = 256,
|
||||
.maxDescriptorSetUniformBuffers = 256,
|
||||
.maxDescriptorSetUniformBuffersDynamic = 256,
|
||||
|
@ -400,27 +407,28 @@ void anv_GetPhysicalDeviceProperties(
|
|||
.maxDescriptorSetStorageBuffersDynamic = 256,
|
||||
.maxDescriptorSetSampledImages = 256,
|
||||
.maxDescriptorSetStorageImages = 256,
|
||||
.maxDescriptorSetInputAttachments = 256,
|
||||
.maxVertexInputAttributes = 32,
|
||||
.maxVertexInputBindings = 32,
|
||||
.maxVertexInputAttributeOffset = 256,
|
||||
.maxVertexInputBindingStride = 256,
|
||||
.maxVertexOutputComponents = 32,
|
||||
.maxTessGenLevel = 0,
|
||||
.maxTessPatchSize = 0,
|
||||
.maxTessControlPerVertexInputComponents = 0,
|
||||
.maxTessControlPerVertexOutputComponents = 0,
|
||||
.maxTessControlPerPatchOutputComponents = 0,
|
||||
.maxTessControlTotalOutputComponents = 0,
|
||||
.maxTessEvaluationInputComponents = 0,
|
||||
.maxTessEvaluationOutputComponents = 0,
|
||||
.maxTessellationGenerationLevel = 0,
|
||||
.maxTessellationPatchSize = 0,
|
||||
.maxTessellationControlPerVertexInputComponents = 0,
|
||||
.maxTessellationControlPerVertexOutputComponents = 0,
|
||||
.maxTessellationControlPerPatchOutputComponents = 0,
|
||||
.maxTessellationControlTotalOutputComponents = 0,
|
||||
.maxTessellationEvaluationInputComponents = 0,
|
||||
.maxTessellationEvaluationOutputComponents = 0,
|
||||
.maxGeometryShaderInvocations = 6,
|
||||
.maxGeometryInputComponents = 16,
|
||||
.maxGeometryOutputComponents = 16,
|
||||
.maxGeometryOutputVertices = 16,
|
||||
.maxGeometryTotalOutputComponents = 16,
|
||||
.maxFragmentInputComponents = 16,
|
||||
.maxFragmentOutputBuffers = 8,
|
||||
.maxFragmentDualSourceBuffers = 2,
|
||||
.maxFragmentOutputAttachments = 8,
|
||||
.maxFragmentDualSrcAttachments = 2,
|
||||
.maxFragmentCombinedOutputResources = 8,
|
||||
.maxComputeSharedMemorySize = 1024,
|
||||
.maxComputeWorkGroupCount = {
|
||||
|
@ -438,8 +446,7 @@ void anv_GetPhysicalDeviceProperties(
|
|||
.subTexelPrecisionBits = 4 /* FIXME */,
|
||||
.mipmapPrecisionBits = 4 /* FIXME */,
|
||||
.maxDrawIndexedIndexValue = UINT32_MAX,
|
||||
.maxDrawIndirectInstanceCount = UINT32_MAX,
|
||||
.primitiveRestartForPatches = UINT32_MAX,
|
||||
.maxDrawIndirectCount = UINT32_MAX,
|
||||
.maxSamplerLodBias = 16,
|
||||
.maxSamplerAnisotropy = 16,
|
||||
.maxViewports = MAX_VIEWPORTS,
|
||||
|
@ -460,23 +467,31 @@ void anv_GetPhysicalDeviceProperties(
|
|||
.maxFramebufferWidth = (1 << 14),
|
||||
.maxFramebufferHeight = (1 << 14),
|
||||
.maxFramebufferLayers = (1 << 10),
|
||||
.maxFramebufferColorSamples = 8,
|
||||
.maxFramebufferDepthSamples = 8,
|
||||
.maxFramebufferStencilSamples = 8,
|
||||
.framebufferColorSampleCounts = sample_counts,
|
||||
.framebufferDepthSampleCounts = sample_counts,
|
||||
.framebufferStencilSampleCounts = sample_counts,
|
||||
.framebufferNoAttachmentsSampleCounts = sample_counts,
|
||||
.maxColorAttachments = MAX_RTS,
|
||||
.maxSampledImageColorSamples = 8,
|
||||
.maxSampledImageDepthSamples = 8,
|
||||
.maxSampledImageIntegerSamples = 1,
|
||||
.maxStorageImageSamples = 1,
|
||||
.sampledImageColorSampleCounts = sample_counts,
|
||||
.sampledImageIntegerSampleCounts = VK_SAMPLE_COUNT_1_BIT,
|
||||
.sampledImageDepthSampleCounts = sample_counts,
|
||||
.sampledImageStencilSampleCounts = sample_counts,
|
||||
.storageImageSampleCounts = VK_SAMPLE_COUNT_1_BIT,
|
||||
.maxSampleMaskWords = 1,
|
||||
.timestampFrequency = 1000 * 1000 * 1000 / 80,
|
||||
.timestampPeriod = 80.0 / (1000 * 1000 * 1000),
|
||||
.maxClipDistances = 0 /* FIXME */,
|
||||
.maxCullDistances = 0 /* FIXME */,
|
||||
.maxCombinedClipAndCullDistances = 0 /* FIXME */,
|
||||
.discreteQueuePriorities = 1,
|
||||
.pointSizeRange = { 0.125, 255.875 },
|
||||
.lineWidthRange = { 0.0, 7.9921875 },
|
||||
.pointSizeGranularity = (1.0 / 8.0),
|
||||
.lineWidthGranularity = (1.0 / 128.0),
|
||||
.strictLines = false, /* FINISHME */
|
||||
.standardSampleLocations = true, /* FINISHME */
|
||||
.optimalBufferCopyOffsetAlignment = 128,
|
||||
.optimalBufferCopyRowPitchAlignment = 128,
|
||||
.nonCoherentAtomSize = 64,
|
||||
};
|
||||
|
||||
*pProperties = (VkPhysicalDeviceProperties) {
|
||||
|
|
Loading…
Reference in New Issue