diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-30 01:07:03 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2021-06-30 01:07:03 +0000 |
commit | 9324b5e46869bd833f87722242b1e78a53f9323a (patch) | |
tree | 89d5a41d8a9c2eb0a6d03437e5784749968817ef | |
parent | 5a4ca993b4238d3f839c145be0f5e96a5c22403f (diff) | |
parent | 57caf0895f596a617fd1d9b56068e7fc08e70476 (diff) | |
download | skia-android12-security-release.tar.gz |
Snap for 7506386 from 57caf0895f596a617fd1d9b56068e7fc08e70476 to sc-releaseandroid-vts-12.0_r9android-vts-12.0_r8android-vts-12.0_r7android-vts-12.0_r6android-vts-12.0_r5android-vts-12.0_r4android-vts-12.0_r3android-vts-12.0_r2android-vts-12.0_r12android-vts-12.0_r11android-vts-12.0_r10android-vts-12.0_r1android-security-12.0.0_r60android-security-12.0.0_r59android-security-12.0.0_r58android-security-12.0.0_r57android-security-12.0.0_r56android-security-12.0.0_r55android-security-12.0.0_r54android-security-12.0.0_r53android-security-12.0.0_r52android-security-12.0.0_r51android-security-12.0.0_r50android-security-12.0.0_r49android-security-12.0.0_r48android-security-12.0.0_r47android-security-12.0.0_r46android-security-12.0.0_r45android-security-12.0.0_r44android-security-12.0.0_r43android-security-12.0.0_r42android-security-12.0.0_r41android-security-12.0.0_r40android-security-12.0.0_r39android-security-12.0.0_r38android-security-12.0.0_r37android-security-12.0.0_r36android-security-12.0.0_r35android-security-12.0.0_r34android-platform-12.0.0_r1android-cts-12.0_r9android-cts-12.0_r8android-cts-12.0_r7android-cts-12.0_r6android-cts-12.0_r5android-cts-12.0_r4android-cts-12.0_r3android-cts-12.0_r2android-cts-12.0_r12android-cts-12.0_r11android-cts-12.0_r10android-cts-12.0_r1android-12.0.0_r9android-12.0.0_r8android-12.0.0_r34android-12.0.0_r33android-12.0.0_r31android-12.0.0_r30android-12.0.0_r3android-12.0.0_r25android-12.0.0_r2android-12.0.0_r11android-12.0.0_r10android-12.0.0_r1android12-tests-releaseandroid12-security-releaseandroid12-s5-releaseandroid12-s4-releaseandroid12-s3-releaseandroid12-s2-releaseandroid12-s1-releaseandroid12-release
Change-Id: Icc342cd8a3d9dd6533f486c6520c24ed426a56b1
-rw-r--r-- | src/gpu/vk/GrVkCaps.h | 12 | ||||
-rw-r--r-- | src/gpu/vk/GrVkDescriptorSetManager.cpp | 5 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/gpu/vk/GrVkCaps.h b/src/gpu/vk/GrVkCaps.h index 44c26c244f..df9c0fb585 100644 --- a/src/gpu/vk/GrVkCaps.h +++ b/src/gpu/vk/GrVkCaps.h @@ -147,6 +147,18 @@ public: // Returns true if it supports ycbcr conversion for samplers bool supportsYcbcrConversion() const { return fSupportsYcbcrConversion; } + // Returns the number of descriptor slots used by immutable ycbcr VkImages. + // + // TODO: We should update this to return a count for a specific format or external format. We + // can use vkGetPhysicalDeviceImageFormatProperties2 with a + // VkSamplerYcbcrConversionImageFormatProperties to query this. However, right now that call + // does not support external android formats which is where the majority of ycbcr images are + // coming from. So for now we stay safe and always return 3 here which is the max value that the + // count could be for any format. + uint32_t ycbcrCombinedImageSamplerDescriptorCount() const { + return 3; + } + // Returns true if the device supports protected memory. bool supportsProtectedMemory() const { return fSupportsProtectedMemory; } diff --git a/src/gpu/vk/GrVkDescriptorSetManager.cpp b/src/gpu/vk/GrVkDescriptorSetManager.cpp index ae99342a19..14cb1b09ee 100644 --- a/src/gpu/vk/GrVkDescriptorSetManager.cpp +++ b/src/gpu/vk/GrVkDescriptorSetManager.cpp @@ -78,6 +78,7 @@ static bool get_layout_and_desc_count(GrVkGpu* gpu, uint32_t numBindings = visibilities.count(); std::unique_ptr<VkDescriptorSetLayoutBinding[]> dsSamplerBindings( new VkDescriptorSetLayoutBinding[numBindings]); + *descCountPerSet = 0; for (uint32_t i = 0; i < numBindings; ++i) { uint32_t visibility = visibilities[i]; dsSamplerBindings[i].binding = i; @@ -86,8 +87,10 @@ static bool get_layout_and_desc_count(GrVkGpu* gpu, dsSamplerBindings[i].stageFlags = visibility_to_vk_stage_flags(visibility); if (VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER == type) { if (immutableSamplers[i]) { + (*descCountPerSet) += gpu->vkCaps().ycbcrCombinedImageSamplerDescriptorCount(); dsSamplerBindings[i].pImmutableSamplers = immutableSamplers[i]->samplerPtr(); } else { + (*descCountPerSet)++; dsSamplerBindings[i].pImmutableSamplers = nullptr; } } @@ -117,8 +120,6 @@ static bool get_layout_and_desc_count(GrVkGpu* gpu, if (result != VK_SUCCESS) { return false; } - - *descCountPerSet = visibilities.count(); } else if (type == VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER) { static constexpr int kUniformDescPerSet = 1; SkASSERT(kUniformDescPerSet == visibilities.count()); |