Commit 77874e2c by Tim Van Patten Committed by Commit Bot

Vulkan: Reduce Default Descriptor Pool Max Sets

The current value of kDefaultDescriptorPoolMaxSets is 2048, which allocates too much memory on a Pixel device, causing Android's low memory killer to terminate dEQP (leading to a test failure). This change reduces the value of kDefaultDescriptorPoolMaxSets to 128 to reduce the memory usage during the test. We suspect a later change may be required to dynamically grow the descriptor pools and update the recycling behavior. This change also exposed a bug in the ANGLERenderTest where the swap() call was being skipped for null devices. This was causing code that ANGLE requires to clean up and re-use resources to be skipped. Enabling the swap() call fixes this issue as well as improves performance for the test overall. This does make comparing old performance values to new difficult (if not entirely incorrect), so take care when doing so. dEQP-EGL.functional.multicontext.non_shared_clear Bug: angleproject:3056 Bug: angleproject:3135 Change-Id: Ibdfd3a5eb436a7ba4e45002ebef5809afe777af1 Reviewed-on: https://chromium-review.googlesource.com/c/1470830 Commit-Queue: Tim Van Patten <timvp@google.com> Reviewed-by: 's avatarTobin Ehlis <tobine@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 52047de4
...@@ -29,7 +29,7 @@ constexpr VkBufferUsageFlags kLineLoopDynamicBufferUsage = ...@@ -29,7 +29,7 @@ constexpr VkBufferUsageFlags kLineLoopDynamicBufferUsage =
constexpr int kLineLoopDynamicBufferMinSize = 1024 * 1024; constexpr int kLineLoopDynamicBufferMinSize = 1024 * 1024;
// This is an arbitrary max. We can change this later if necessary. // This is an arbitrary max. We can change this later if necessary.
constexpr uint32_t kDefaultDescriptorPoolMaxSets = 2048; constexpr uint32_t kDefaultDescriptorPoolMaxSets = 128;
struct ImageMemoryBarrierData struct ImageMemoryBarrierData
{ {
......
...@@ -519,13 +519,11 @@ void ANGLERenderTest::step() ...@@ -519,13 +519,11 @@ void ANGLERenderTest::step()
else else
{ {
drawBenchmark(); drawBenchmark();
// Swap is needed so that the GPU driver will occasionally flush its internal command queue // Swap is needed so that the GPU driver will occasionally flush its
// to the GPU. The null device benchmarks are only testing CPU overhead, so they don't need // internal command queue to the GPU. This is enabled for null back-end
// to swap. // devices because some back-ends (e.g. Vulkan) also accumulate internal
if (mTestParams.eglParameters.deviceType != EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE) // command queues.
{ mGLWindow->swap();
mGLWindow->swap();
}
mOSWindow->messageLoop(); mOSWindow->messageLoop();
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment