Vulkan: roll Vulkan repos to v1.1.102
Bug: angleproject:3320
Change-Id: Ia24f9bc2499f36c6aab810db00bb6408920222fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1541719
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/DEPS b/DEPS
index 4986bd1..8ecec0c 100644
--- a/DEPS
+++ b/DEPS
@@ -21,16 +21,16 @@
'spirv_tools_revision': '2ac348b5c0a58c64305379baca778c2e58873cd6',
# Current revision of Khronos Vulkan-Headers.
- 'vulkan_headers_revision': 'c200cb25db0f47364d3318d92c1d8e9dfff2fef1',
+ 'vulkan_headers_revision': '982f0f84dccf6f281b48318c77261a9028000126',
# Current revision of Khronos Vulkan-Loader.
- 'vulkan_loader_revision': 'e1eafa18e17d00374253bcd37d015befa89fcc43',
+ 'vulkan_loader_revision': '2f0abfcf9eb04018e6e92125a70bc28665aa17fe',
# Current revision of Khronos Vulkan-Tools.
- 'vulkan_tools_revision': '91b17fd866b2e9cfb875bf516b05536d059416b1',
+ 'vulkan_tools_revision': 'f392e71b994036c92b896c2a62cc63d042b7f9b1',
# Current revision of Khronos Vulkan-ValidationLayers.
- 'vulkan_validation_revision': '4eee269ae976567ef78db9c9feaafc3364578c87',
+ 'vulkan_validation_revision': 'ff80a937c8a505abbdddb95d8ffaa446820c8391',
}
deps = {
diff --git a/scripts/run_code_generation_hashes.json b/scripts/run_code_generation_hashes.json
index 86b9893..d5123c1 100644
--- a/scripts/run_code_generation_hashes.json
+++ b/scripts/run_code_generation_hashes.json
@@ -314,7 +314,7 @@
"Vulkan mandatory format support table:src/libANGLE/renderer/vulkan/vk_mandatory_format_support_table_autogen.cpp":
"d20e549634ef32d6ad4e9f0b28e52acf",
"Vulkan mandatory format support table:third_party/vulkan-headers/src/registry/vk.xml":
- "f5c8c9b8e521644ded34d44b1016c25e",
+ "8af0f992bd45c2d9500eb5ed60c256d6",
"packed enum:src/common/PackedEGLEnums_autogen.cpp":
"c9f7cea85751e5a39b92bccc1d97f3bd",
"packed enum:src/common/PackedEGLEnums_autogen.h":
diff --git a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
index 7d36c30..3d46a06 100644
--- a/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/FramebufferVk.cpp
@@ -181,6 +181,12 @@
bool clearColor = IsMaskFlagSet(static_cast<int>(mask), GL_COLOR_BUFFER_BIT);
+ // If the only thing to be cleared was depth and it's masked, there's nothing to do.
+ if (!clearColor && !clearDepth && !clearStencil)
+ {
+ return angle::Result::Continue;
+ }
+
const gl::State &glState = context->getState();
VkClearDepthStencilValue clearDepthStencilValue =
diff --git a/src/libANGLE/renderer/vulkan/SurfaceVk.cpp b/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
index 9d89333..f655e4f 100644
--- a/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
+++ b/src/libANGLE/renderer/vulkan/SurfaceVk.cpp
@@ -466,24 +466,6 @@
// have finished. We therefore store the handle to the swapchain being destroyed in the
// swap history (alongside the serial of the last submission) so it can be destroyed once we
// wait on that serial as part of the CPU throttling.
- //
- // TODO(syoussefi): the spec specifically allows multiple retired swapchains to exist:
- //
- // > Multiple retired swapchains can be associated with the same VkSurfaceKHR through
- // > multiple uses of oldSwapchain that outnumber calls to vkDestroySwapchainKHR.
- //
- // However, a bug in the validation layers currently forces us to limit this to one retired
- // swapchain. Once the issue is resolved, the following for loop can be removed.
- // http://anglebug.com/3095
- for (SwapHistory &swap : mSwapHistory)
- {
- if (swap.swapchain != VK_NULL_HANDLE)
- {
- ANGLE_TRY(renderer->finishToSerial(displayVk, swap.serial));
- vkDestroySwapchainKHR(renderer->getDevice(), swap.swapchain, nullptr);
- swap.swapchain = VK_NULL_HANDLE;
- }
- }
mSwapHistory[swapHistoryIndex].swapchain = oldSwapchain;
}
@@ -735,21 +717,27 @@
VkPresentRegionKHR presentRegion = {};
VkPresentRegionsKHR presentRegions = {};
- std::vector<VkRectLayerKHR> vk_rects;
+ std::vector<VkRectLayerKHR> vkRects;
if (renderer->getFeatures().supportsIncrementalPresent && (n_rects > 0))
{
- EGLint *egl_rects = rects;
+ EGLint width = getWidth();
+ EGLint height = getHeight();
+
+ EGLint *eglRects = rects;
presentRegion.rectangleCount = n_rects;
- vk_rects.resize(n_rects);
- for (EGLint rect = 0; rect < n_rects; rect++)
+ vkRects.resize(n_rects);
+ for (EGLint i = 0; i < n_rects; i++)
{
- vk_rects[rect].offset.x = *egl_rects++;
- vk_rects[rect].offset.y = *egl_rects++;
- vk_rects[rect].extent.width = *egl_rects++;
- vk_rects[rect].extent.height = *egl_rects++;
- vk_rects[rect].layer = 0;
+ VkRectLayerKHR &rect = vkRects[i];
+
+ // Make sure the damage rects are within swapchain bounds.
+ rect.offset.x = gl::clamp(*eglRects++, 0, width);
+ rect.offset.y = gl::clamp(*eglRects++, 0, height);
+ rect.extent.width = gl::clamp(*eglRects++, 0, width - rect.offset.x);
+ rect.extent.height = gl::clamp(*eglRects++, 0, height - rect.offset.y);
+ rect.layer = 0;
}
- presentRegion.pRectangles = vk_rects.data();
+ presentRegion.pRectangles = vkRects.data();
presentRegions.sType = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR;
presentRegions.pNext = nullptr;
diff --git a/third_party/vulkan-validation-layers/BUILD.gn b/third_party/vulkan-validation-layers/BUILD.gn
index aa08630..4934c7a 100644
--- a/third_party/vulkan-validation-layers/BUILD.gn
+++ b/third_party/vulkan-validation-layers/BUILD.gn
@@ -302,7 +302,6 @@
"$vulkan_gen_dir/vk_safe_struct.h",
"src/layers/buffer_validation.cpp",
"src/layers/buffer_validation.h",
- "src/layers/core_dispatch.cpp",
"src/layers/core_validation.cpp",
"src/layers/core_validation.h",
"src/layers/convert_to_renderpass2.cpp",
@@ -368,9 +367,9 @@
layers = [
[
"core_validation",
- core_validation_sources,
- core_validation_deps,
- [],
+ core_validation_sources + chassis_sources,
+ core_validation_deps + chassis_deps,
+ [ "BUILD_CORE_VALIDATION" ],
],
[
"object_lifetimes",