| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 Google Inc. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "GrVkCaps.h" | 8 #include "GrVkCaps.h" |
| 9 | 9 |
| 10 #include "GrVkUtil.h" | 10 #include "GrVkUtil.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 VkSampleCountFlags colorSamples = properties.limits.framebufferColorSampleCo
unts; | 105 VkSampleCountFlags colorSamples = properties.limits.framebufferColorSampleCo
unts; |
| 106 VkSampleCountFlags stencilSamples = properties.limits.framebufferStencilSamp
leCounts; | 106 VkSampleCountFlags stencilSamples = properties.limits.framebufferStencilSamp
leCounts; |
| 107 | 107 |
| 108 fMaxColorSampleCount = get_max_sample_count(colorSamples); | 108 fMaxColorSampleCount = get_max_sample_count(colorSamples); |
| 109 fMaxStencilSampleCount = get_max_sample_count(stencilSamples); | 109 fMaxStencilSampleCount = get_max_sample_count(stencilSamples); |
| 110 } | 110 } |
| 111 | 111 |
| 112 void GrVkCaps::initGrCaps(const VkPhysicalDeviceProperties& properties, | 112 void GrVkCaps::initGrCaps(const VkPhysicalDeviceProperties& properties, |
| 113 const VkPhysicalDeviceMemoryProperties& memoryProperti
es, | 113 const VkPhysicalDeviceMemoryProperties& memoryProperti
es, |
| 114 uint32_t featureFlags) { | 114 uint32_t featureFlags) { |
| 115 fMaxVertexAttributes = properties.limits.maxVertexInputAttributes; | 115 fMaxVertexAttributes = SkTMin(properties.limits.maxVertexInputAttributes, (u
int32_t)INT_MAX); |
| 116 // We could actually query and get a max size for each config, however maxIm
ageDimension2D will | 116 // We could actually query and get a max size for each config, however maxIm
ageDimension2D will |
| 117 // give the minimum max size across all configs. So for simplicity we will u
se that for now. | 117 // give the minimum max size across all configs. So for simplicity we will u
se that for now. |
| 118 fMaxRenderTargetSize = properties.limits.maxImageDimension2D; | 118 fMaxRenderTargetSize = SkTMin(properties.limits.maxImageDimension2D, (uint32
_t)INT_MAX); |
| 119 fMaxTextureSize = properties.limits.maxImageDimension2D; | 119 fMaxTextureSize = SkTMin(properties.limits.maxImageDimension2D, (uint32_t)IN
T_MAX); |
| 120 | 120 |
| 121 this->initSampleCount(properties); | 121 this->initSampleCount(properties); |
| 122 | 122 |
| 123 // Assuming since we will always map in the end to upload the data we might
as well just map | 123 // Assuming since we will always map in the end to upload the data we might
as well just map |
| 124 // from the get go. There is no hard data to suggest this is faster or slowe
r. | 124 // from the get go. There is no hard data to suggest this is faster or slowe
r. |
| 125 fBufferMapThreshold = 0; | 125 fBufferMapThreshold = 0; |
| 126 | 126 |
| 127 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; | 127 fMapBufferFlags = kCanMap_MapFlag | kSubset_MapFlag; |
| 128 | 128 |
| 129 fStencilWrapOpsSupport = true; | 129 fStencilWrapOpsSupport = true; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 auto& mediump = glslCaps->fFloatPrecisions[s][kMedium_GrSLPrecision]; | 180 auto& mediump = glslCaps->fFloatPrecisions[s][kMedium_GrSLPrecision]; |
| 181 mediump.fLogRangeLow = mediump.fLogRangeHigh = 14; | 181 mediump.fLogRangeLow = mediump.fLogRangeHigh = 14; |
| 182 mediump.fBits = 10; | 182 mediump.fBits = 10; |
| 183 | 183 |
| 184 glslCaps->fFloatPrecisions[s][kLow_GrSLPrecision] = mediump; | 184 glslCaps->fFloatPrecisions[s][kLow_GrSLPrecision] = mediump; |
| 185 } | 185 } |
| 186 glslCaps->initSamplerPrecisionTable(); | 186 glslCaps->initSamplerPrecisionTable(); |
| 187 | 187 |
| 188 glslCaps->fMaxVertexSamplers = | 188 glslCaps->fMaxVertexSamplers = |
| 189 glslCaps->fMaxGeometrySamplers = | 189 glslCaps->fMaxGeometrySamplers = |
| 190 glslCaps->fMaxFragmentSamplers = SkTMin(properties.limits.maxPerStageDescrip
torSampledImages, | 190 glslCaps->fMaxFragmentSamplers = SkTMin(SkTMin(properties.limits.maxPerStage
DescriptorSampledImages, |
| 191 properties.limits.maxPerStageDescrip
torSamplers); | 191 properties.limits.maxPerStage
DescriptorSamplers), |
| 192 glslCaps->fMaxCombinedSamplers = SkTMin(properties.limits.maxDescriptorSetSa
mpledImages, | 192 (uint32_t)INT_MAX); |
| 193 properties.limits.maxDescriptorSetSa
mplers); | 193 glslCaps->fMaxCombinedSamplers = SkTMin(SkTMin(properties.limits.maxDescript
orSetSampledImages, |
| 194 properties.limits.maxDescript
orSetSamplers), |
| 195 (uint32_t)INT_MAX); |
| 194 } | 196 } |
| 195 | 197 |
| 196 bool stencil_format_supported(const GrVkInterface* interface, | 198 bool stencil_format_supported(const GrVkInterface* interface, |
| 197 VkPhysicalDevice physDev, | 199 VkPhysicalDevice physDev, |
| 198 VkFormat format) { | 200 VkFormat format) { |
| 199 VkFormatProperties props; | 201 VkFormatProperties props; |
| 200 memset(&props, 0, sizeof(VkFormatProperties)); | 202 memset(&props, 0, sizeof(VkFormatProperties)); |
| 201 GR_VK_CALL(interface, GetPhysicalDeviceFormatProperties(physDev, format, &pr
ops)); | 203 GR_VK_CALL(interface, GetPhysicalDeviceFormatProperties(physDev, format, &pr
ops)); |
| 202 return SkToBool(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT & props.optim
alTilingFeatures); | 204 return SkToBool(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT & props.optim
alTilingFeatures); |
| 203 } | 205 } |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 | 255 |
| 254 void GrVkCaps::ConfigInfo::init(const GrVkInterface* interface, | 256 void GrVkCaps::ConfigInfo::init(const GrVkInterface* interface, |
| 255 VkPhysicalDevice physDev, | 257 VkPhysicalDevice physDev, |
| 256 VkFormat format) { | 258 VkFormat format) { |
| 257 VkFormatProperties props; | 259 VkFormatProperties props; |
| 258 memset(&props, 0, sizeof(VkFormatProperties)); | 260 memset(&props, 0, sizeof(VkFormatProperties)); |
| 259 GR_VK_CALL(interface, GetPhysicalDeviceFormatProperties(physDev, format, &pr
ops)); | 261 GR_VK_CALL(interface, GetPhysicalDeviceFormatProperties(physDev, format, &pr
ops)); |
| 260 InitConfigFlags(props.linearTilingFeatures, &fLinearFlags); | 262 InitConfigFlags(props.linearTilingFeatures, &fLinearFlags); |
| 261 InitConfigFlags(props.optimalTilingFeatures, &fOptimalFlags); | 263 InitConfigFlags(props.optimalTilingFeatures, &fOptimalFlags); |
| 262 } | 264 } |
| OLD | NEW |