| @@ -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) { | |||