|
25390156
|
2025-08-21T00:13:19
|
|
Suppress unsafe buffers on a file-by-file basis in src/ [1 of N]
In this CL, we suppress many files but stop short of actually
enabling the warning by not removing the line from the
unsafe_buffers_paths.txt file. That will happen in a follow-on
CL, along with resolving any stragglers missed here.
This is mostly a manual change so as to familiarize myself with
the kinds of issues faced by the Angle codebase when applying buffer
safety warnings.
-- Re-generate affected hashes.
-- Clang-format applied to all changed files.
-- Add a few missing .reserve() calls to vectors as noticed.
-- Fix some mismatches between file names and header comments.
-- Be more consistent with header comment format (blank lines and
trailing //-only lines when a filename comment adjoins license
boilerplate).
Bug: b/436880895
Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3e52318c
|
2025-06-26T10:46:00
|
|
Vulkan: Ensure always using resolved Window Surface size
`WindowSurfaceVk::getWidth/Height()` methods return cached, previously
resolved Surface size. Using these methods while current Window Surface
size is unresolved may return stale values, causing undesired behavior.
Appropriate ASSERTs were added to these methods to prevent such usage.
Added ASSERTs revealed few places with incorrect usage:
- In `Context::makeCurrent()` to set initial viewport or for capture.
- In `IsPartialBlit()` and `ValidateReadPixelsBase()` validations.
- In `SerializeFramebufferAttachment()` during capture.
Rest of the code was thoroughly checked if it is possible to call
`WindowSurfaceVk::getWidth/Height()` when size is unresolved. All other
places always call these methods after framebuffer state
synchronization, which acquires swapchain images and resolves the
surface size.
Added `ensureSizeResolved()` method that is called during validation and
in the `SerializeFramebufferAttachment()` method. It is possible to use
existing `Framebuffer::syncState()` method as alternative, but this
solution was discarded since it may potentially interfere with
`State::syncDirtyObjects()` method.
The `Surface::getUserSize()` replaces old methods as optimization, to
prevent calling relatively expensive method twice from
`Context::makeCurrent()` to get width and height of the `drawSurface`.
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeBeforeMakeCurrent/*
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeBeforeMakeCurrentPostSizeQuery/*
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeAndReadPixelsRobustANGLE/*
Test: angle_trace_tests --gtest_filter=EGLSurfaceTest.ResizeAndBlitFramebufferANGLE/*
Bug: angleproject:397848903
Change-Id: I082e13d0b8db5fd7d08ff25b102df1f283e1256d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6792928
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
de40b6e5
|
2025-06-06T13:18:09
|
|
tests: Add GetEglPlatform()
Testing the system EGL library was recently added to ANGLE's end2end
tests, breaking the assumption that the tests were interacting with the
ANGLE EGL library directly.
Many EGL end2end tests call eglGetPlatformDisplay() with the platform
value EGL_PLATFORM_ANGLE_ANGLE. However, Android only allows
EGL_PLATFORM_ANDROID_KHR, rejecting all other values (returning
EGL_NO_DISPLAY).
Add GetEglPlatform() to return the platform value to pass to
eglGetPlatformDisplay(), based on things like the driver being tested
and the OS the tests are running on. Currently, this only supports
returning EGL_PLATFORM_ANDROID_KHR for SystemEGL+Android, and
EGL_PLATFORM_ANGLE_ANGLE for everything else.
Bug: b/279980674
Change-Id: Ib8d7970c8e178beb14ecc6a4f96156783e60c257
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6634554
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
d5babf99
|
2025-06-23T12:46:51
|
|
Vulkan: Fix unhandled deferred clears after glGetMultisamplefv
Issue was introduced in the commit that implemented deferred clears.
The `glGetMultisamplefv()` synchronizes draw framebuffer which defers
possibly staged clears. Since API is not handling deferred clears they
are left untouched, causing the ASSERT.
This change fixes the issue by not deferring clears for the
`glGetMultisamplefv()` command during flushing staged updates of dirty
framebuffer attachments.
Changes:
- Add `gl::Command::GetMultisample` enumeration for clarity.
- Add `gl::CommandBlitBuffer::CommandBlitBufferDepthStencil` enumeration
to improve code readability.
- Add `command` parameter into `gl::State::syncDirtyObject()` method to
use actual command enum instead of `Other`.
- Remove `previousDeferredClears` local variable and update ASSERT in
the `FramebufferVk::syncState()` method. New assert ensures empty
`mDeferredClears` instead of just checking dirty attachments, since
it is easy to make all attachments dirty making old and new assertions
act the same.
- Replace logic in `FramebufferVk::syncState()` that decides whether
need to defer attachments or not with switch-case. This makes the
logic more clear regarding handling individual commands and simplify
updating this handling in the future. Except of the bug fix with
`GetMultisample` command, handling of other command is uncached.
- Remove `flushDeferredClears()` from `FramebufferVk::readPixels()`
because `mDeferredClears` are not expected (now it's more clear after
the refactoring). And even if there are `mDeferredClears` (in case of
a bug or after API failure), `flushDeferredClears()` only flushes
clears for the draw framebuffer, while checking `mDeferredClears` of
the read framebuffer. This is a problem in case if read and draw
framebuffers are not the same.
Bug: angleproject:40644727
Test: angle_end2end_tests --gtest_filter=TextureMultisampleTest.GetMultisamplefvAfterClear/*
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.GetMultisamplefvAfterClear/*
Change-Id: I376a62de52de5e17dbc63cc7ddb0506741a69266
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6661958
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7644c9db
|
2025-06-02T11:44:38
|
|
test: Remove EGLSingleBufferTest.VerifyMutableRenderBufferKHR
The test is enforcing that specifying/querying EGL_SINGLE_BUFFER
requires the extension EGL_KHR_mutable_render_buffer. However,
EGL_RENDER_BUFFER/EGL_SINGLE_BUFFER were introduced in EGL 1.4,
removing any extension requirements for devices that support EGL 1.4+.
3.5 Rendering Surfaces
3.5.1 Creating On-Screen Rendering Surfaces
...
EGL_RENDER_BUFFER specifies which buffer should be used by default for
client API rendering to the window, as described in section 2.2.2. If
its value is EGL_SINGLE_BUFFER, then client APIs should render
directly into the visible window. If its value is EGL_BACK_BUFFER,
then all client APIs should render into the back buffer. The default
value of EGL_RENDER_BUFFER is EGL_BACK_- BUFFER
The extension itself requires a minimum of EGL 1.2, meaning only
versions 1.2 and 1.3 require EGL_KHR_mutable_render_buffer to use
EGL_SINGLE_BUFFER.
Remove the test since it doesn't gives us any information anymore since
we always expose EGL 1.5 anyway.
Bug: b/417459061
Change-Id: I060e196600e6ece6179a164d9125a8b98c0d8498
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6613123
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
dcbcee8a
|
2025-05-15T10:39:55
|
|
Tests: Use eglGetPlatformDisplay()
From the EGL 1.5 spec:
Appendix F
Version 1.5
EGL version 1.5 was voted out of the Khronos Technical Working Group
on January 31, 2014, and formally approved by the Khronos Board of
Promoters on March 14, 2014.
EGL 1.5 is the sixth release of EGL. It introduces the following new
features (the EGL extension(s) each feature is based on are also shown
parenthetically):
* Platform support:
– Providing a mechanism for support of multiple platforms (such as
window systems or offscreen rendering frameworks) in a single EGL
implementation at runtime (EGL_EXT_platform_base).
Many tests use eglGetPlatformDisplayEXT() which is provided by the EGL
extension EGL_EXT_platform_base. With the promotion of the
EGL_EXT_platform_base functions to core EGL in version 1.5 and ANGLE
supporting EGL 1.5 (as of at least 2019), update the calls to use
eglGetPlatformDisplay().
This is in preparation for running the ANGLE end2end tests in Android,
which only exposes the EGL 1.5 functions, and not the
EGL_EXT_platform_base functions.
Bug: b/391967165
Test: angle_end2end_tests
Change-Id: I58109c3afe270f46db952e124ee3f5c11200ca35
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6552257
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
f21ec7a0
|
2025-05-14T10:52:50
|
|
Tests: Skip VerifyMutableRenderBufferKHR on Intel+Win
The test
EGLSingleBufferTest.VerifyMutableRenderBufferKHR/ES*_Vulkan_NoFixture is
failing on Intel+Windows and generating VVL errors.
ERR: vk_renderer.cpp:968 (rx::vk::(anonymous
namespace)::DebugUtilsMessenger): [
VUID-VkSwapchainCreateInfoKHR-presentMode-parameter ]
vkCreateSwapchainKHR(): pCreateInfo->presentMode
(VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR) requires the extensions
VK_KHR_shared_presentable_image.
The Vulkan spec states: presentMode must be a valid VkPresentModeKHR
value
(https://docs.vulkan.org/spec/latest/chapters/VK_KHR_surface/wsi.html#VUID-VkSwapchainCreateInfoKHR-presentMode-parameter)
..\..\src\tests\egl_tests\EGLSurfaceTest.cpp(2036): error: Value of:
IsEGLDisplayExtensionEnabled(mDisplay, "EGL_KHR_mutable_render_buffer")
Actual: false
Expected: true
It's not entirely clear where things are going wrong, but appears to be
something in the Intel+Windows driver. Skip the test for now to keep
win-exp-test green otherwise.
Bug: b/417459061
Test: EGLSingleBufferTest.VerifyMutableRenderBufferKHR
Change-Id: Iee848b46cddaf05d0cbb0c2d81d76d07dd0b9bba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6548415
Auto-Submit: Tim Van Patten <timvp@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
ed4d7278
|
2025-05-13T10:06:18
|
|
Tests: Skip VerifyMutableRenderBufferKHR on Intel+Win
The test
EGLSingleBufferTest.VerifyMutableRenderBufferKHR/ES*_Vulkan_NoFixture is
failing on Intel+Windows and generating VVL errors.
ERR: vk_renderer.cpp:968 (rx::vk::(anonymous
namespace)::DebugUtilsMessenger): [
VUID-VkSwapchainCreateInfoKHR-presentMode-parameter ]
vkCreateSwapchainKHR(): pCreateInfo->presentMode
(VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR) requires the extensions
VK_KHR_shared_presentable_image.
The Vulkan spec states: presentMode must be a valid VkPresentModeKHR
value
(https://docs.vulkan.org/spec/latest/chapters/VK_KHR_surface/wsi.html#VUID-VkSwapchainCreateInfoKHR-presentMode-parameter)
..\..\src\tests\egl_tests\EGLSurfaceTest.cpp(2036): error: Value of:
IsEGLDisplayExtensionEnabled(mDisplay, "EGL_KHR_mutable_render_buffer")
Actual: false
Expected: true
It's not entirely clear where things are going wrong, but appears to be
something in the Intel+Windows driver. Skip the test for now to keep
win-exp-test green otherwise.
Bug: b/417459061
Test: EGLSingleBufferTest.VerifyMutableRenderBufferKHR
Change-Id: I3bc21dfa059b1c0d7c4e8f7ae0452a3819bedbb3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6541387
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
317f81db
|
2025-05-01T14:17:47
|
|
Fix EGL_RENDER_BUFFER query if EGL_SINGLE_BUFFER unsupported
eglCreateWindowSurface() can have the EGL attribute EGL_RENDER_BUFFER
specified:
EGL_RENDER_BUFFER specifies which buffer should be used by default for
client API rendering to the window, as described in section 2.2.2. If
its value is EGL_SINGLE_BUFFER, then client APIs should render
directly into the visible window. If its value is EGL_BACK_BUFFER,
then all client APIs should render into the back buffer. The default
value of EGL_RENDER_BUFFER is EGL_BACK_BUFFER.
Client APIs may not be able to respect the requested rendering buffer.
To determine the actual buffer that a context will render to by
default, call eglQueryContext with attribute EGL_RENDER_BUFFER (see
section 3.7.4).
To support EGL_SINGLE_BUFFER, Vulkan surfaces must support the
VkPresentModeKHR value VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR:
VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR specifies that the
presentation engine and application have concurrent access to a single
image, which is referred to as a shared presentable image. The
presentation engine is only required to update the current image after
a new presentation request is received. Therefore the application must
make a presentation request whenever an update is required. However,
the presentation engine may update the current image at any point,
meaning this mode may result in visible tearing.
However, this is only available on Vulkan devices that support the
extension VK_KHR_shared_presentable_image.
Add checking in Surface::initialize() to update Surface::mRenderBuffer
to EGL_BACK_BUFFER if the backend implementation does not support
EGL_SINGLE_BUFFER. This includes adding supportsSingleRenderBuffer() to
query the backend if it supports single render buffer mode, which
defaults to False. The Vulkan backend overrides this and the result is
based on support for VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR.
Bug: b/412446258
Test: EGLLockSurface3Test.WindowMsaaSurfaceReadTest/ES2_Vulkan_NoFixture
Test: EGLSingleBufferTest.VerifyMutableRenderBufferKHR/*
Change-Id: I4e6d56f01a895a5bd887580e6ffa34d574c87fad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6506764
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
081934f6
|
2025-03-12T15:22:31
|
|
Vulkan: Add avoidInvisibleWindowSwapchainRecreate feature
There is a bug on some NVIDIA drivers on Linux X11 when
`vkAcquireNextImageKHR()` constantly returns `VK_ERROR_OUT_OF_DATE_KHR`
if recreate the swapchain while window is not visible.
If not recreate the swapchain after window resize - nothing happens,
acquire and present works without errors. But if recreate the swpahchain
to the `VkSurfaceCapabilitiesKHR::currentExtent` the next
`vkAcquireNextImageKHR()` will return `VK_ERROR_OUT_OF_DATE_KHR`. ANGLE
will retry to recreate the swapchain one more time and fail the call.
Enabling the "avoidInvisibleWindowSwapchainRecreate" feature will avoid
swapchain recreation when window size changes while it is not visible.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ResizeInvisibleWindow/*
Bug: angleproject:397848903
Bug: angleproject:42264022
Bug: angleproject:42263074
Change-Id: I48588bf467d15c0e84b923092e06a42c22084dcc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6348739
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
caf14998
|
2025-02-25T17:28:05
|
|
Vulkan: Fix window surface resize and size query
Added `mSizeState` enum member. When it is not `Resolved`, surface size
is not yet resolved and may change any time in response to native window
resize. Otherwise, surface size is resolved and will not change until
next swap.
Updated `getUserWidth()`/`getUserHeight()` methods. They return
current window size when surface size is not resolved, or current
surface size, otherwise. Window size is queried either by
`getCurrentWindowSize()`, when surface is sized by swapchain, or
by querying vulkan surface capabilities.
The "perFrameWindowSizeQuery" feature controls when `mSizeState` is
updated. Initially it is not resolved. Marked as not resolved in
`invalidateSwapchain()`, and in `deferAcquireNextImage()` when the
feature is enabled. It is marked as resolved after swapchain is created
when feature is disabled, or in `AcquireNextImageUnlocked()` function
after acquire next image, otherwise.
Enabled some tests that were previously failing. Replaced old resize
tests with new versions.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.Resize*/*
Bug: angleproject:397848903
Bug: angleproject:373659619
Bug: angleproject:153329980
Bug: angleproject:42266013
Bug: angleproject:42265843
Bug: angleproject:42265529
Bug: angleproject:42264022
Bug: angleproject:42263074
Bug: angleproject:42261800
Bug: angleproject:40096826
Change-Id: I3ad836960a68229fab6c94624022f1a0aaf2c3e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6300645
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
e44357c6
|
2025-03-25T15:50:15
|
|
Vulkan: Do not defer ANI in shared present mode
Calling ANI in shared present mode is not necessary after the initial
acquire. Skip calling `deferAcquireNextImage()` in that mode.
For code simplicity and as a preparation for (anglebug.com/400711938),
the `invalidateSwapchain()` method is now also defers ANI and notifies
`SubjectMessage::SurfaceChanged` to the parent class. `Framebuffer`
message handling was updated to also reset color buffer dirty bit and
to notify `SubjectMessage::DirtyBitsFlagged` if needed, as in the
`SubjectMessage::SwapchainImageChanged` message case (which will be
removed in future CL). This way, single `SubjectMessage::SurfaceChanged`
message is enough to handle swapchain recreate.
The `VK_SUBOPTIMAL_KHR` is no longer treaded as OUT_OF_DATE when in
shared present mode. Added for consistency (since we are already
skipping "perFrameWindowSizeQuery" checks), to preserve content, and to
match the Android native GLES driver behavior.
Call `invalidateSwapchain()` when swapchain operations fail to avoid
repeated swapchain use and to be able to recover from the error.
The `checkForOutOfDateSwapchain()` was split into two methods:
- checkForOutOfDateSwapchain():
- Called only after present.
- Checks present out of date result and present mode compatibility.
- Invalidates the swapchain and updates the present mode if the above
checks fails.
- prepareSwapchainForAcquireNextImage():
- Calls `queryAndAdjustSurfaceCaps()` and `recreateSwapchain()`
if swapchain is invalid.
- Calls `queryAndAdjustSurfaceCaps()` and checks surface properties
when "perFrameWindowSizeQuery" is enabled. Then calls
`recreateSwapchain()` if something changed.
Other changes:
- The `prepareForAcquireNextSwapchainImage()` method was replaced with
`prepareSwapchainForAcquireNextImage()`.
- Removed `doDeferredAcquireNextImageWithUsableSwapchain()` and
`postProcessUnlockedAcquire()` methods because of redundancy.
- Move image invalidation code into `acquireNextSwapchainImage()` to
make `doDeferredAcquireNextImage()` simpler.
- Convert `resizeSwapchainImages()` into `createSwapchainImages()` for
simplicity.
Updated old and added new tests.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.ReadFramebufferBindingSyncState/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.OnCreateWindowSurface/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.OnSetSurfaceAttrib/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WindowResize/*
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WindowRotation/*
Bug: angleproject:400711938
Bug: angleproject:397848903
Bug: angleproject:42262606
Change-Id: I2247417aa8b7b5afc10a8420083aeb845895aec9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387920
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
c0483900
|
2025-03-20T14:38:53
|
|
Tests: Add EGLSurfaceTest.MSAAResolveWithEGLConfig8880 test
Test is for the fix:
Vulkan: Use correct actual FormatID for MSAA swapchain image
https://crrev.com/c/angle/angle/+/6275968
SM-G996B (Mali-G78) has these errors in the new test without the fix:
VUID-vkCmdResolveImage-srcImage-01386:
srcImage and dstImage must have been created with the same image
format
VUID-VkFramebufferCreateInfo-pAttachments-00880:
If flags does not include VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each
element of pAttachments must have been created with a VkFormat value
that matches the VkFormat specified by the corresponding
VkAttachmentDescription in renderPass
It looks like that in the CL with the fix, above device was incorrectly
tested and commit message noted that the fix is cosmetic because RGB8 is
generally emulated with RGBA8. Turns out, Mali-G78 can render into RGB8.
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.MSAAResolveWithEGLConfig8880/*
Bug: angleproject:42265147
Change-Id: I7e90dd7f8c9138a439bc77ed5643214ac4260c73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6375366
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ad6c3d74
|
2025-02-19T22:45:29
|
|
Vulkan: Fix RP resolve layouts w.r.t shared present mode
This is partially a regression after the previous change:
Vulkan: Fix present optimization w.r.t shared present mode
Before the above change, swapchain image was still optimized for present
even when using shared present mode. However, because
SetBitField(mAttachmentOps[packedAttachmentIndex].finalResolveLayout
line was using `getCurrentImageLayout()` (lucky coincidence) it was
setting correct SharedPresent layout into `finalResolveLayout`.
The `initialLayout` and reference `layout` was still
`VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL`, but for some reason VVL was
not producing any errors.
This change adds setting `finalResolveLayout` for the resolve
attachment, which in turn propagates
`VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR` to all renderpass layouts as well
as to the dynamic rendering info.
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.SharedPresentLayoutWithMSAA/*
Bug: angleproject:42262606
Change-Id: I49a121f1d43a078890b0dc32e0574a79e3565270
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6281569
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
318d4038
|
2025-02-18T13:19:28
|
|
Vulkan: Fix present optimization w.r.t shared present mode
Since the implementation of "EGL_KHR_mutable_render_buffer" mode
(angleproject:42262606), the renderpass optimization for present
(b/153885625) was not working correctly. It sill tries to transition
into `ImageLayout::Present`, but instead of entirely skipping the
transition, it inserts the barrier even when renderpass is still opened.
When both "supportsSharedPresentableImageExtension" and
"preferDynamicRendering" are enabled, code will hit ASSERT in
`flushToPrimary()` when attempting to record `ImageLayout::Present`
barrier into the primary command buffer.
Above issue is fixed by skipping the transitioning into
`ImageLayout::Present` when in shared present mode.
Other changes and fixes:
- removed renderpass flush when resolving with renderpass, since it is
not necessary (angleproject:42265256).
- above change reveled a bug in `finalizeImageLayout(&mColorImageMS)`
call. This call reverts the layout in the previous finalize call
from Present to ColorWrite. So it must have been inserted before
finalizing the swapchain image. Issue fixed by removing both finalize
calls.
- updated condition to skip invalidate w.r.t shared present mode
(b/229689340), that was missed during implementation of
"EGL_ANDROID_front_buffer_auto_refresh" (angleproject:42265697).
Test: angle_end2end_tests --gtest_filter=EGLSurfaceTest.PresentLayoutTransitionWithMSAA/*
Bug: b/153885625
Bug: angleproject:42262606
Bug: angleproject:42265256
Bug: b/229689340
Bug: angleproject:42265697
Change-Id: Ifad8aea8548fa7bfac27941812c435b2af655309
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6277445
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
323c49a3
|
2025-02-20T15:44:08
|
|
Vulkan: Fix swap optimization after staged clear for MSAA
If the MSAA image only had a clear update and the update wasn't going
to be applied to the swapchain image, the clear update was accidentally
dropped because `flushStagedUpdates` wouldn't see the clear update which
is already extracted in `deferredClearValues`.
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.StagedClearResolveOnSwap/*
Bug: angleproject:382006939
Change-Id: I53ae26eeb8a7f38b7758f86bf97982a90b1990dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6285627
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
883f6246
|
2025-01-22T16:36:26
|
|
Add validation for eglSetDamageRegionKHR
Although this is not mentioned in spec, n_rects in eglSetDamageRegionKHR
should be a valid value. It doesn't make sense if it's less than 0.
Refine the validation in ANGLE and also add end2end test.
Bug: angleproject:395482390
Change-Id: Idbde839be85bac927486b7613005f25d54c3d5f5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6242903
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a1be7e61
|
2024-11-26T14:39:18
|
|
Implement EGL_EXT_surface_compression
This patch adds implementation of EGL_EXT_surface_compression to
ANGLE, including new API eglQuerySupportedCompressionRatesEXT and
adding EGL_SURFACE_COMPRESSION_EXT in EGLQuerySurface and
EGLCreateWindowSurface/EGLCreatePlatformWindowSurface.
Angle end2end test is added to verify the extension.
Bug: angleproject:375496226
Change-Id: I06926930d94485a378fc831d552cf55fe7938a57
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6073355
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a137d702
|
2024-10-24T18:24:14
|
|
Reland "Delay EGLQueryContext render buffer change"
This is a reland of commit 233d9ee5c3525cc8290b3af52385ed59973438b4
Original change's description:
> Delay EGLQueryContext render buffer change
>
> According to the EGL spec, EGL_RENDER_BUFFER of a context
> should change after eglSwapBuffers is called if
> eglSurfaceAttrib changes. Refine ANGLE implemnetation
> to delay the render buffer change.
>
> Bug: angleproject:375528202
> Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:375528202
Change-Id: I38330d99a9e6987ad3f97b4a36c34029acb211b9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055500
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
65d674b0
|
2024-12-02T18:36:11
|
|
Vulkan: Must run UnlockedTailCall from flush and finish
`glFlush` and `glFinish` may call `WindowSurfaceVk::swapImpl()`
implicitly when the current Window Surface is in the single buffer mode.
The `WindowSurfaceVk::swapImpl()` in turn may add unlocked tail call in
order to perform CPU throttling. It seems, that CPU throttling is only
possible if also enable the `EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID`
attribute (using `VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR`).
Without this attribute (`VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR`)
`vkQueuePresentKHR()` performs implicit waiting for GPU, making ANGLE's
throttling uncessary (the serial is already finished).
This fix allows running the tail call from `glFlush` and `glFinish`
(because these APIs are not performance critical). Alternative solution
may instead perform the CPU throttling immediately if the
`WindowSurfaceVk::swapImpl()` is called from the
`WindowSurfaceVk::onSharedPresentContextFlush()`.
Additionally, added "ASSERT(!any())" at the beginning of each entry
point. This is to catch scenarios, if some API adds the unlocked tail
call and for some reason exit without checking the assert of running
the call.
Test: angle_end2end_tests --gtest_filter=EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture
Bug: angleproject:42266581
Change-Id: I418c552f6e95b4cfc01db738c9989533377f1050
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6063719
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
9c7ad319
|
2024-11-27T13:43:10
|
|
Revert "Delay EGLQueryContext render buffer change"
This reverts commit 233d9ee5c3525cc8290b3af52385ed59973438b4.
Reason for revert: ASSERT triggered on Linux NVIDIA 535.183.01
https://ci.chromium.org/ui/p/angle/builders/ci/linux-exp-test/1469/overview
Original change's description:
> Delay EGLQueryContext render buffer change
>
> According to the EGL spec, EGL_RENDER_BUFFER of a context
> should change after eglSwapBuffers is called if
> eglSurfaceAttrib changes. Refine ANGLE implemnetation
> to delay the render buffer change.
>
> Bug: angleproject:375528202
> Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:375528202
Change-Id: I08fc76b1b764e57639e2c0708cb155d392f82f22
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6055417
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
233d9ee5
|
2024-10-24T18:24:14
|
|
Delay EGLQueryContext render buffer change
According to the EGL spec, EGL_RENDER_BUFFER of a context
should change after eglSwapBuffers is called if
eglSurfaceAttrib changes. Refine ANGLE implemnetation
to delay the render buffer change.
Bug: angleproject:375528202
Change-Id: Ida7736a09e3a83223a529dbfad48e0f952f91a38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5982241
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2f7feccd
|
2024-11-21T17:21:45
|
|
Tests: Fix EGLSurfaceTest.SwapWithoutAnyDraw test
Bug: b/275624771
Change-Id: I17516dcc44b58b8dfa659ab099327b25ac88a167
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038163
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c4ec8dbb
|
2024-11-19T17:01:42
|
|
Vulkan: Expose EGL_ANDROID_front_buffer_auto_refresh
Original CL implemented the functionality without exposing the
corresponding extension.
This CL exposes the extension on Android and adds necessary validation.
Bug: angleproject:42265697
Change-Id: Ia01c68f04c41a850e531aa7b889de9e561f3a9db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035186
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
42f9c200
|
2024-11-19T08:50:35
|
|
Comments: www.anglebug.com -> anglebug.com
The former doesn't work.
Bug: None
Change-Id: Ib16b005adb5b61a3a1277588e240c3d68705205c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6034293
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
236e0f48
|
2024-10-22T18:33:23
|
|
Add fix for create multi-window surfaces cause crash
This patch fix crash when created multiple window surfaces,
and not call corresponding eglDestroySurface, also added related test.
Bug: angleproject:374797737
Change-Id: I58941660130e84e213cf9d78806027d56d6efc8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5981430
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9e8b104e
|
2024-10-14T00:00:00
|
|
Do not test OpenGL backend on iOS
Added Metal platform to tests
that require instantiation.
Bug: angleproject:40050022
Bug: angleproject:42264029
Bug: angleproject:42266119
Bug: angleproject:42266226
Bug: angleproject:42266239
Bug: angleproject:42266249
Bug: angleproject:359136169
Fixed: angleproject:373478551
Change-Id: I915f09c7f24acce27bf0d489932645338ac3fbe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5932659
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
177d15b3
|
2024-08-23T19:34:34
|
|
Vulkan: Simplify WindowSurfaceVk::prepareSwap() method
In case of swapchain recreate inside `prepareSwap()`, perform unlocked
ANI call as usual. ANI processing will be done late in `swap()` or
`getBufferAge()`. This is possible, because surface `getWidth/Height()`
is no longer require valid `mColorRenderTarget`.
Because of the above, `swapchainRecreatedOut` parameter was removed.
Additionally, `getBufferAge()` now uses
`doDeferredAcquireNextImageWithUsableSwapchain()` in order to process
possible VK_ERROR_OUT_OF_DATE_KHR error and recreate the swapchain,
instead of failing.
Test: angle_end2end_tests --gtest-filter=EGLSingleBufferTest.AcquireImageFromSwapImpl*
Bug: angleproject:6851
Bug: angleproject:8133
Change-Id: Ieb375781da2b1108d0a5e11dbb012885a946688e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806335
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
d193d51b
|
2024-06-17T22:46:08
|
|
Replace issue ids post migration to new issue tracker
This change replaces anglebug.com/NNNN links.
Bug: None
Change-Id: I8ac3aec8d2a8a844b3d7b99fc0a6b2be8da31761
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5637912
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1c2d2417
|
2024-03-01T14:50:43
|
|
Bugfix in CreateWithEGLConfig1010102Support test
Create a context with config that supports RGBA1010102 format
Bug: angleproject:8330
Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support*
Change-Id: Ic8dfca01b253e6ae5ea1f0b99b6ac781288805c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5337608
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6b0ddce0
|
2023-09-22T13:13:38
|
|
Backends need to handle invalid render area during a clear
1. Frontend no longer noops empty scissors during clear
2. FramebufferVk is updated to handle invalid render area by restaging
deferred clears in clearImpl(...) if render area is invalid
Bug: angleproject:8348
Tests: EGLSurfaceTest*WindowThenScissoredClear*
Change-Id: Iec51914a083a59bad7f939798c932dffada56a6c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4867641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
ffd6ec26
|
2023-09-07T15:39:19
|
|
Reland "Make egl surface uncurrent when being destroyed"
This relands commit 497440cdcb7d2ee59bca612dd07fc13cf09a6a57.
This is to workaround errors when app does below behaviors:
1) while there is a context still bound to the current
rendering thread and the surface, call eglDestroySurface()
2) create a new surface eglCreateWindowSurface()
3) call eglMakeCurrent() with the surface created in step 2)
4) does work on the new surface
The old surface won't be destroyed in step 1) because
it was still bound by the context of the current rendering
thread. When creating new surface on step 2), some hardware
will return error code EGL_BAD_ALLOC, because the old egl
surface is still associated with the native window.
To workaround, when destroying surface, if the surface
is still bound by the context of the current rendering
thread, release the context and surface by passing
EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
The workaround is controlled by a frontend feature
uncurrentEglSurfaceUponSurfaceDestroy. This feature
is only enabled on vulkan backends.
Bug: b/292285899
Change-Id: Id4c47f1b20e0f90d1013a68893fd70e917c030e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4867066
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
8a7ad933
|
2023-09-13T15:11:46
|
|
Revert "Make egl surface uncurrent when being destroyed"
This reverts commit 497440cdcb7d2ee59bca612dd07fc13cf09a6a57.
Reason for revert: this caused chromium webview tests failures: https://chromium-review.googlesource.com/c/chromium/src/+/4860891.
Original change's description:
> Make egl surface uncurrent when being destroyed
>
> This is to workaround errors when app does below behaviors:
>
> 1) while there is a context still bound to the current
> rendering thread and the surface, call eglDestroySurface()
> 2) create a new surface eglCreateWindowSurface()
> 3) call eglMakeCurrent() with the surface created in step 2)
> 4) does work on the new surface
>
> The old surface won't be destroyed in step 1) because
> it was still bound by the context of the current rendering
> thread. When creating new surface on step 2), some hardware
> will return error code EGL_BAD_ALLOC, because the old egl
> surface is still associated with the native window.
>
> To workaround, when destroying surface, if the surface
> is still bound by the context of the current rendering
> thread, release the context and surface by passing
> EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
>
> The workaround is controlled by a frontend feature
> uncurrentEglSurfaceUponSurfaceDestroy. This feature
> is only enabled on vulkan and gl backends.
>
> Bug: b/292285899
> Change-Id: I872d2e116ba6860f58d1176f011a5ef7c5a5af4e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851255
> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bug: b/292285899
Change-Id: I760054d856294e6691e79e165fd73ce9e560621f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4862958
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
497440cd
|
2023-09-07T15:39:19
|
|
Make egl surface uncurrent when being destroyed
This is to workaround errors when app does below behaviors:
1) while there is a context still bound to the current
rendering thread and the surface, call eglDestroySurface()
2) create a new surface eglCreateWindowSurface()
3) call eglMakeCurrent() with the surface created in step 2)
4) does work on the new surface
The old surface won't be destroyed in step 1) because
it was still bound by the context of the current rendering
thread. When creating new surface on step 2), some hardware
will return error code EGL_BAD_ALLOC, because the old egl
surface is still associated with the native window.
To workaround, when destroying surface, if the surface
is still bound by the context of the current rendering
thread, release the context and surface by passing
EGL_NO_CONTEXT and EGL_NO_SURFACE to eglMakeCurrent().
The workaround is controlled by a frontend feature
uncurrentEglSurfaceUponSurfaceDestroy. This feature
is only enabled on vulkan and gl backends.
Bug: b/292285899
Change-Id: I872d2e116ba6860f58d1176f011a5ef7c5a5af4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851255
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
0d67d1bb
|
2023-08-29T11:19:35
|
|
Vulkan: Support EGL_EXT_gl_colorspace_bt2020
Add support for following 3 BT2020 colorspace extensions
1. EGL_EXT_gl_colorspace_bt2020_hlg
2. EGL_EXT_gl_colorspace_bt2020_linear
3. EGL_EXT_gl_colorspace_bt2020_pq
Bug: angleproject:8330
Tests: EGLSurfaceTest.CreateWithEGLConfig1010102Support*
Change-Id: I3a6ca0daa9ad4400da3834f43678b0db816ba6e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4824045
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
da41e7d9
|
2023-05-29T19:17:48
|
|
Vulkan: Account for queueSubmitOneOff() in SurfaceVk::mUse
There is a possibility to destroy EGLSurface without waiting for
`queueSubmitOneOff()` submission. One possible way to reproduce the
problem is to query `EGL_BUFFER_AGE_EXT` without any rendering in the
EGL_SINGLE_BUFFER mode.
This is a regression from:
Reland "Vulkan: SurfaceVk should only wait for GPU work that uses it"
https://chromium-review.googlesource.com/c/angle/angle/+/4406891
Test: angle_end2end_tests --gtest_filter=EGLSingleBufferTest.WaitOneOffSubmission*
Bug: b/267806287
Change-Id: I9478fcc4fd64b38747cbd80dea51137da9ef5f21
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4567549
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d58fbf04
|
2023-04-05T12:32:09
|
|
Vulkan: Wait for surface ANI semaphore only if image is used
Right now there is a bug that surface's ANI semaphore is added to
context when WindowSurfaceVk::getAttachmentRenderTarget get called,
which gets called from FramebufferVk::syncState, which is before we end
the previous render pass, due to the endRenderpass usually is deferred
until next renderPass starts. This caused ANI semaphore gets added to
the previous render pass's submission, which does not use surface, and
thus a bubble in GPU execution pipeline where the user FBO rendering
gets unnecessarily blocked until ANI semaphore is signaled. This lowers
GPU utilization and thus GPU frequency gets dropped and frame time
increased. This CL stores ANI semaphore to ImageHelper object and when
barrier is generated, the ANI semaphore is moved to CommandBuffer. When
CommandBuffer gets flushed and submitted, it gets added to the
waitSemaphores vector and submitted to vulkan. Since all use of swap
chain image must go through barrier code first (you need at least change
layout), this ensures ANI semaphore gets waited in exact and robust way.
Only the submission that references the swap chain image will be waited.
With this CL, professional_baseball_spirits reduces frame time from 3.8
ms to 2.7 ms, achieving parity with native GLES on pixel 7 pro.
Bug: b/275624771
Change-Id: Ifa6cacf9e3bc147bfde54eb7def2fca48c50aca0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4400011
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1365f5b3
|
2022-09-09T17:19:26
|
|
Vulkan: Fix Swapchain Acquire Image Semaphore wait stage flags.
There is a screen tearing on G996B with single
"glClear(GL_COLOR_BUFFER_BIT)" no scissor in the frame.
Fixed by defining "kSwapchainAcquireImageWaitStageFlags" and
adding "VK_PIPELINE_STAGE_TRANSFER_BIT" stage flag.
Also added "VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT" stage, because first
use of the Swapchain Image after Acquire may be in the
"glBlitFramebuffer()" command.
This fix may slightly affect performance. In such case, a better fix
should be implemented (include only stages based on the actual first
use). However, this may be not trivial.
Additionally, "kSwapchainAcquireImageWaitStageFlags" is used as a source
stage mask in the "ImageLayout::Present" pipeline barrier. This is
needed in order to build a dependency chain from the Acquire Image
Semaphore to the layout transition's first synchronization scope, so
that layout transition happens after acquire semaphore is signaled.
Reference:
https://github.com/KhronosGroup/Vulkan-Docs/wiki/Synchronization-Examples#combined-graphicspresent-queue
https://vulkan-tutorial.com/Drawing_a_triangle/Drawing/Rendering_and_presentation
Alternative fix of both issues is to define:
kSwapchainAcquireImageWaitStageFlags = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT
This might potentially delay command buffer execution relative to the
Swapchain Acquire Image Semaphore signal operations, but will relax
the pipeline barrier.
Bug: angleproject:8030
Test: angle_end2end_tests --gtest_also_run_disabled_tests --gtest_filter=EGLSurfaceTest.DISABLED_RandomClearTearing*
Change-Id: I29f58862c4b369524b2555dd944e2fb67eebe956
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4271377
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
8cac53cd
|
2023-01-17T19:22:57
|
|
Vulkan: Fix incorrect "SharedPresent" barrier.
Previous fix swapped top/bottom barriers:
629da7fc9cd4886dd87f07a069c259551e892936
Fix dEQP-EGL.functional.mutable_render_buffer#basic
Above fix is only partial, because it only includes execution dependency
without memory barriers (top/bottom stages has no memory access).
Fixed by forcing all possible stages for "SharedPresent" images.
Better solution requires creating specific versions
of "ImageLayout::SharedPresent".
Added new test that skips "glFlush()" before "glReadPixels()".
Performing flush executes present and may "fix" the barrier problem.
New test fails on "Samsung Galaxy S22+ S906B"
Bug: b/264420030
Test: angle_end2end_tests --gtest_filter="EGLSingleBufferTest.SharedPresentBarrier*"
Change-Id: Icbb50900d99e42d2e9482cd6109981bbc460348a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4262068
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ceb49b1c
|
2023-01-17T19:21:43
|
|
Vulkan: Fix crashes when Surface is not current.
It is possible to destroy Surface while some resources are still
in use (by CPU/GPU):
1. Make Surface current.
2. Draw something.
3. Make other Surface current (same Context).
4. (optional - if test Surface is Window Surface) Draw something.
5. Delete Surface.
6. UnMake the Context from current.
7. Different crashes possible depending on Surface type and what
is done in step 2.
Bug: angleproject:8017
Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.DestroyNotCurrent*Surface*"
Change-Id: I3102aa237075b301b3222b420415753c83ba192a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227073
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
629da7fc
|
2023-01-26T12:25:04
|
|
Fix dEQP-EGL.functional.mutable_render_buffer#basic
These are vulkan commands submitted between
glClear() and glReadPixels() when the EGL_RENDER_BUFFER
is EGL_SINGLE_BUFFER (ImageLayour is SharedPresent):
```
vkCmdClearColorImage()
vkCmdPipelineBarrier: (
VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,//srcStageMask
VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,//dstStageMask
VK_ACCESS_MEMORY_WRITE_BIT,//srcAccessMask
VK_ACCESS_MEMORY_WRITE_BIT|VK_ACCESS_MEMORY_READ_BIT//dstAccessMask
)
vkCmdCopyImageToBuffer()
```
This means that operations at the bottom of pipeline
in vkCmdCopyImageToBuffer() need to wait for operations
at the top of pipeline in vmCmdClearColorImage(), which
translates to vkCmdCopyImageToBuffer() does not have
to wait for vkCmdClearColorImage() to finish.
Even the dstAccessMask ensures that
vkCmdCopyImageToBuffer() will invalidate cache before
copying image, it is possible that it will retrieve the
old Framebuffer color attachment data as the
vkCmdClearColorImage() has not finished.
This CL fixes the bug by making the srcStageMask to
be VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT and the
dstStageMask to be VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
when the ImageLayout is SharedPresent.
This ensures that vkCmdCopyImageToBuffer() waits for
vkCmdClearColorImage() to finish.
This CL also addresses similar issue in some other
rx::vk::ImageLayout items in kImageMemoryBarrierData.
Bug: b/264420030
Change-Id: If47ab071afaf96e396357cb0f50131339fa58509
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4198476
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
48b6ebad
|
2023-02-13T16:37:15
|
|
Test: Move code of EGLSurfaceTest::runWaitSemaphoreTest().
To improve readability, code moved from class body closer to the tests.
Bug: angleproject:7995
Change-Id: I2c0aef593b28cfffe2b04de308274d0007d863c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245177
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b6cc5754
|
2023-01-17T16:17:22
|
|
Vulkan: Fixed Wait Semaphores problems.
This feature fixes 2 problems.
1. Swapchain Image Acquire Semaphore added to wait list AFTER
rendering commands:
- Make Window Surface current.
- Clear Window Surface (Image is Acquired).
- Perform rendering to the Window Surface.
- Change to other Surface (for example: PbufferSurface) using
the same Context.
- Unmake Context from current to ensure commands are submitted.
- Rendering commands to the Window Surface will be submitted
without Acquire Semaphore.
2. Context from other thread may submit command of another Context
without proper Wait Semaphores:
- Make Window Surface current in the first context.
- Clear Window Surface (Image is Acquired).
- Perform rendering to the Window Surface.
- Call "glBeginQuery()/glEndQuery()" (or other commands) - this will
flush command to the Primary Command Buffer without submitting.
- In other Thread and Context make some Surface current
(for example: PbufferSurface).
- Clear that surface with scissor and unmake Context from current
to ensure commands are submitted.
- Rendering commands to the Window Surface from the first Context
will be submitted without Acquire Semaphore.
- Problem will happen even if add Wait Semaphore BEFORE writing
rendering commands.
Bug: angleproject:7995
Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.WaitSemaphoreAddedAfterCommands*"
Test: angle_end2end_tests --gtest_filter="EGLSurfaceTest.CommandsSubmittedWithoutWaitSemaphore*"
Change-Id: I28174ff98fdd09b4117962fc0810cfeeb2a4d1f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194182
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
3e65d0b6
|
2023-02-01T15:17:43
|
|
Test: Fixed EGLContext leak in the EGLSurfaceTest tests.
"EGLSurfaceTest.RobustResourceInitAndEmulatedAlpha/*" causes
"EGLContext" leak. This test calls "initializeSingleContext()" on
"mContext" that was already implicitly initialized in the
"initializeSurface*()".
Added assertions in order to catch EGLContext/EGLSurface leaking.
Fix details:
- removed implicit "initializeContext()" call, to remove confusing
when it is necessary make explicit call or not.
- rename "initializeContext()" into "initializeAllContexts()" to better
reflect what it does.
- "initializeContext()" now creates contexts unconditionally, like once
before. Lazy initialization is not required, because there is no
longer implicit call in the "initializeSurfaceWithAttribs()".
- Created "initializeMainContext()" instead of calling
"initializeSingleContext()" directly.
Bug: angleproject:7996
Change-Id: I05954f7a044c12798ac857b877ecede6989526eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4208870
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fc51d98f
|
2022-08-11T03:29:16
|
|
Add Direct Composition offset to gl_FragCoord
DComp usually gives us an offset at (0, 0), but this is not always
the case. It is valid for DComp to give us an offset into a texture
atlas, for example with some video overlays. If we do have an offset,
gl_FragCoord must also be offset to point to the correct pixel in the
surface.
Bug: chromium:1269749
Change-Id: I3ca39860d176bcf9f1d520d781cfed2d1d1ad1dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827081
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
aa2a558e
|
2022-08-23T09:47:02
|
|
Vulkan: Add support for setting timestamp surface attribute
On Android the EGL wrapper handles most of the functionality required
by EGL_ANDROID_get_frame_timestamps. However if for some reason the
swapchain is recreated, the timestamp state would be lost resulting in
stuttering.
Introduce EGL_ANGLE_timestamp_surface_attribute extension that adds
support for toggling the EGL_TIMESTAMPS_ANDROID attribute of a surface.
Cache this state and recreate the swapchain accordingly.
Bug: angleproject:7489
Test: EGLSurfaceTest.TimestampSurfaceAttribute*
Test: dEQP-EGL.functional.get_frame_timestamps*
Change-Id: I3660f7137c006d904164d243a682a4ff520eabd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3753396
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
45def3d4
|
2022-06-15T13:49:08
|
|
Remove non-negative offsets restriction in D3D extension
The EGL_ANGLE_d3d_texture_client_buffer extension currently
fails if either EGL_TEXTURE_OFFSET_[X|Y]_ANGLE offsets are
negative. This restriction is unnecessary, as D3D allows
for negative offsets.
Bug: angleproject:7446
Change-Id: I2e258a3a558eae51794f6533e28a0c06532f156d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3715956
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d50b2276
|
2022-06-21T12:05:28
|
|
Reland "Vulkan: Support EGL_ANDROID_front_buffer_auto_refresh"
This is a reland of commit ef60d38ecf12d6663e9ecccacbff9803b1fba7c6
There are no fixes as the revert itself was a speculative one
Original change's description:
> Vulkan: Support EGL_ANDROID_front_buffer_auto_refresh
>
> Cache value of EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID attribute
> and set swapchain present mode accordingly when recreating
> swapchain in single buffer mode.
>
> Bug: angleproject:7224
> Tests: EGLAndroidAutoRefreshTest.Basic*
> Change-Id: I2dbb92ce5c3fa047e0b02ea9011725311f346027
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3707570
> Reviewed-by: Ian Elliott <ianelliott@google.com>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Bug: angleproject:7224
Bug: angleproject:7465
Change-Id: Ia876ea17169c0f1b3afdb7753570e0b1aca985f5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3733521
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
46ddcc44
|
2022-06-27T14:53:31
|
|
Revert "Vulkan: Support EGL_ANDROID_front_buffer_auto_refresh"
This reverts commit ef60d38ecf12d6663e9ecccacbff9803b1fba7c6.
Reason for revert: crashes in end2end tests on Win Intel Vulkan
Original change's description:
> Vulkan: Support EGL_ANDROID_front_buffer_auto_refresh
>
> Cache value of EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID attribute
> and set swapchain present mode accordingly when recreating
> swapchain in single buffer mode.
>
> Bug: angleproject:7224
> Tests: EGLAndroidAutoRefreshTest.Basic*
> Change-Id: I2dbb92ce5c3fa047e0b02ea9011725311f346027
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3707570
> Reviewed-by: Ian Elliott <ianelliott@google.com>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Bug: angleproject:7224, angleproject:7465
Change-Id: Ia48a31124c8e0a3e4bcd4b7dc6f62b0782b42d97
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3726099
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
89e38b57
|
2022-06-22T15:04:08
|
|
Refactor to use ANGLETest vs ANGLETestWithParam
Bug: angleproject:6747
Change-Id: I72ad52d0268eae0e1a401f12f3e94cc5efa402f2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3719002
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
ef60d38e
|
2022-06-21T12:05:28
|
|
Vulkan: Support EGL_ANDROID_front_buffer_auto_refresh
Cache value of EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID attribute
and set swapchain present mode accordingly when recreating
swapchain in single buffer mode.
Bug: angleproject:7224
Tests: EGLAndroidAutoRefreshTest.Basic*
Change-Id: I2dbb92ce5c3fa047e0b02ea9011725311f346027
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3707570
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
6c248691
|
2022-04-21T10:10:03
|
|
Enable SINGLE_BUFFER with eglCreateWindowSurface
Enable core EGL feature for Vulkan using:
VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR
Test: angle_end2end_test --gtest_filter=EGLSingleBufferTest
Bug: angleproject:7224
Change-Id: I3e85f932471f7b3c97bbc5c2f5314f25eb9b2867
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3610975
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
95c1ff52
|
2022-02-24T08:31:52
|
|
EGL: Fix EGL_KHR_mutable_render_buffer
Fixes for eglSurfaceAttrib error cases.
Improve query for render buffer
Add test case to EGLSurfaceTest
Test: angle_end2end_test --gtest_filter=EGLSingleBufferTest
Bug: angleproject:7134
Change-Id: I4fa568c9530312003dc17111be212bf5b66d97fb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3556088
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5aaa402c
|
2022-03-30T06:13:02
|
|
Fix Surface use-after-free bug
In Display::destroyContext we would incorrectly destroy current surfaces
while trying to makeCurrent the context to be destroyed. Introduce
ScopedSurfaceRef, mirroring ScopedContextRef, to keep the surfaces alive
while destroying the context.
Bug: angleproject:7141
Test: EGLSurfaceTest.SurfaceUseAfterFreeBug*
Change-Id: Ie9b3d7841e5ee561d96c13bfee9c7c87b40cc39d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3561354
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
722ac971
|
2022-03-02T19:24:26
|
|
Fix glClearColor calls to use GLColor32F constants.
Bug: angleproject:5025
Change-Id: I8d8bc8ff0b93951e19697d57c07368e1196498ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3499564
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ad8e4d99
|
2021-09-28T11:48:46
|
|
Remove EGL_ANGLE_flexible_surface_compatibility
This extension has been superseded by EGL_KHR_no_config_context.
Bug: chromium:1253930
Change-Id: Ie299c34baa84e9f47c73ddb5a0636536bf510d72
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3190612
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8bb3c827
|
2021-07-22T19:06:40
|
|
Fix Multithreaded eglDestroyContext()/eglTerminate()
The following EGL calls can lead to a crash in eglMakeCurrent():
Thread A: eglMakeCurrent(context A)
Thread B: eglDestroyContext(context A)
B: eglTerminate() <<--- this release context A
Thread A: eglMakeCurrent(context B)
The eglMakeCurrent(context B) call will assert when attempting to
unMakeCurrent(), since thread A doesn't know that context A was already
destroyed by thread B.
To fix this:
1.) A Context will only be released once there are no Threads that
currently have a reference to it (no longer have the Context current).
- Context::mIsCurrent is being removed, since it was inaccurate and not
thread-safe. For example, when eglTerminate() was called, the
eglTerminate()'ing-Thread would "steal" the Context that was current on
another Thread to destroy it.
2.) A Display will only be fully terminated and its resources released
once all Contexts have been destroyed and are no longer current.
Otherwise, Display::terminate() will return if any Contexts are still in
use by a Thread.
EGL 1.5 Specification
3.2 Initialization
If contexts or surfaces, created with respect to dpy are current (see
section 3.7.3) to any thread, then they are not actually destroyed
while they remain current. If other resources created with respect to
dpy are in use by any current context or surface, then they are also
not destroyed until the corresponding context or surface is no longer
current.
With this fix, the app com.netmarble.sknightsmmo can start.
This also exposed an issue with GlslangFinalize(), since glslang can
only be initialized/finalized once per process. Otherwise, the
following EGL commands will call GlslangFinalize() without ever being
able to GlslangInitialize() again, leading to crashes since
GlslangFinalize() cleans up glslang for the entire process.
dpy1 = eglGetPlatformDisplay() |
eglInitialize(dpy1) | GlslangInitialize()
dpy2 = eglGetPlatformDisplay() |
eglInitialize(dpy2) | GlslangInitialize()
eglTerminate(dpy2) | GlslangFinalize()
eglInitialize(dpy1) | isInitialized() == true
Since Display::isInitialized() == true, the rest of
Display::initialize() is skipped and GlslangInitialize() is not called.
Later, the next test that attempts to compile a program will crash due
to glslang no longer being initialized.
Finally, this exposed the following tests leaking EGLContext handles:
- EGLSurfaceTest::initializeContext()
- EGLContextSharingTest.DisplayShareGroupContextCreation
- EGLCreateContextAttribsTest.IMGContextPriorityExtension
- EGLMultiContextTest.TestContextDestroySimple
Other tests were failing to reset the context, preventing the Display
from being terminated since there were still references to Contexts
owned by the display:
eglMakeCurrent(dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
Bug: angleproject:6208
Bug: angleproject:6304
Bug: angleproject:6322
Test: EGLContextSharingTest.EglTerminateMultiThreaded
Test: EGLContextSharingTestNoFixture.EglDestoryContextManyTimesSameContext
Test: Load com.netmarble.sknightsmmo
Change-Id: I160922af93db6cabe0ed396be77762fa8dfc7656
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3046961
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
6eeab192
|
2021-08-27T16:26:25
|
|
Vulkan: Don't defer clear for read render target
We shouldn't collect deferred clears for the read render target because
they get applied to the draw render target. This CL flushes stages
updates to the read render target only if it's not the same as the draw
render target. This can happen when the read render target is bound to
another surface.
Bug: b/192327017
Change-Id: I7c9e804f4eff10728aed7aeeaf41ef3869c9bdbd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3125462
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
d2d1f41f
|
2021-08-16T08:05:55
|
|
Add EGL extension to create window with a swap interval set.
On Vulkan this allows creating a window once without needing to
recreate the swapChain after we specify the swap interval.
Also adds a simple regression test and EGL enum assertion
printing formatting.
Bug: angleproject:5133
Change-Id: I72af124cb0e8f7cddfa810988a9862c0f36a0e46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3097806
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
0be285c6
|
2021-07-20T11:36:22
|
|
Vulkan: Flush read RT if color attachment is the read buffer
Prior to this change, the following sequence:
* eglMakeCurrent(..., draw=surface1, read=surface1, ...);
* glClear(...);
* eglMakeCurrent(..., draw=surface2, read=surface1, ...);
* glBlitFramebuffer(...);
* eglMakeCurrent(..., draw=surface1, read=surface1, ...);
* glReadPixels(...);
would end up with the `vkCmdClearColorImage()` on surface1
occuring after the `vkCmdBlitImage()`.
This CL updates flushColorAttachmentUpdates() to flush any staged
updates to both the read and draw attachments, since they can be
different if different read and draw surfaces are bound.
Adds a test which is a small repro of
android.opengl.cts.FramebufferTest#testBlitFramebuffer failure.
Bug: b/192327017
Test: EGLSurfaceTest.BlitBetweenSurfaces/*
Change-Id: Iabad26dfcd8633e9dcfcee2fb16ba352bc3931d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3078980
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0380f115
|
2021-03-18T09:56:14
|
|
Skip ResizeWindow test on Linux.
ARM Linux doesn't support window surface resize.
Bug: angleproject:4453
Change-Id: Ia8631f5191c2b3ebd822766cc7f92275aa62dff3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2777578
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c03a4235
|
2021-02-20T16:14:37
|
|
Suppress UNINSTANTIATED_PARAMETERIZED_TEST failures on Nexus 5X
GTest complains that we don't run some tests on GLES backend.
Bug: chromium:1180570
Change-Id: I9427ac25c3b6f06f3c042caa3c0afc7000cf1599
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2710783
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
f18b92ad
|
2021-02-17T19:40:53
|
|
testing: Mark uninstantiated GL & EGL test suites
googletest CL 315255779 causes test binaries to fail when they include
test suites / parametrized tests that are not instantiated, and when
they include empty test suites.
This CL uses the GTEST_ALLOW_UNINSTANTIATED_PARAMETERIZED_TEST() macro
to annotate the suites / tests that are causing test failures. This is
necessary to get googletest rolled past CL 315255779.
Bug: chromium:1163396
Change-Id: I05c0619186ffc265b8e32e8b69d6680a6acdbb48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2701292
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
939195a0
|
2020-12-23T15:12:30
|
|
Skip tests using unimplemented features on iOS
Bug: angleproject:5485
Change-Id: I3248126060b9957596f65221c60f42f213e9a9dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2601377
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
f98f18f6
|
2020-11-17T18:42:35
|
|
Remove Nexus 6P expectations
Bot decommissioned in crrev.com/c/2541579
Bug: chromium:1148989, angleproject:5280, angleproject:3726
Bug: angleproject:2641, angleproject:3264, angleproject:2114
Bug: angleproject:3464, angleproject:4991, angleproject:1415
Bug: angleproject:2407, angleproject:1427, angleproject:4215
Bug: angleproject:1429, angleproject:5069, chromium:998503
Change-Id: I1b268fdbcf6465aef447e90e470c1a011c7b3747
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2545892
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
924c3dab
|
2020-11-02T13:08:16
|
|
Expand suppression of new EGL test.
This test fails on the older N6P device as well as the N5X.
Bug: angleproject:5280
Change-Id: Ie1a2b3b3a296e2e4dbbed69ebff6ce325b46ce95
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2514638
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
97843bda
|
2020-10-30T17:03:36
|
|
Vulkan: Fix EGL Surface robust init.
The error here was related to using a single cache variable for the
robust init setting for all the surfaces in a DisplayVk. Fix this by
passing down the robust init setting from the SurfaceVk to image init.
Bug: angleproject:5274
Change-Id: I9bc9c20990268d1d5166411fb53f8f2593fd1971
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2510694
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e9a82849
|
2020-10-02T11:29:44
|
|
Skip ResizeWindowWithDraw test on all Linux.
Flakes on NVIDIA Linux as well when run in certain orders.
Bug: angleproject:4453
Change-Id: I7565b7868518d01d5e928ce95d0edb8abd651e28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2446091
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
fdb7874d
|
2020-08-26T22:04:19
|
|
Gracefully fail end2end tests if no window support
EGL_WINDOW_BIT is now specifically requested for tests that open a
window (those that aren't WithNoFixture). This makes sure pbuffer-only
configs are not selected for the window.
Additionally, a few WithNoFixture tests are made more robust in the
presence of no-window configs.
In the context of crbug.com/1034840, this means that a subset of end2end
tests would be able to run in a remote desktop environment. Tested on
Linux/X11 by turning a subset of configs PBUFFER-only.
Bug: chromium:1034840
Change-Id: I09fd149d43d3b865856fe6b9491c5f333f4a2efc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2378922
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: back sept 10 - Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
09924221
|
2020-08-24T17:17:17
|
|
Convert the EGL end2end tests to use RAII types/macros
These tests are frequently cloned to make new tests, and so it's good
to do a more-global refactor so that these and future tests will use
RAII.
Bug: angleproject:4947
Change-Id: I2973e70ee075629965b18c685793975537e96b6c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2372627
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
f359cb66
|
2020-07-02T15:15:54
|
|
Reland: Refactor DisplayGbm::generateConfigs
We should explicitly set EGL_SURFACE_TYPE to EGL_DONT_CARE.
Otherwise, it's default value is EGL_WINDOW_BIT. However,
on some platforms, only EGL_PBUFFER_BIT is supported.
In this case, no matching config is found. So mWindowSurface
and mPbufferSurface will be nullptr. That's why we see
the bot failed.
Bug: chromium:1105208
Change-Id: I8ee2487fd24bab86a5ec22fbe7b8ff68081bc15c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2304429
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6f568b08
|
2020-06-16T11:55:39
|
|
Split/refactor the pre-rotation BlitFramebuffer tests
Making several, smaller, more-focused tests will aid in debugging
problems.
Bug: b/158337857
Change-Id: I3d1efd93a5ad7cd20352174a07f3547175eb2bb5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2248201
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
4e6f6545
|
2020-04-16T16:31:24
|
|
GLX: Support X11 pixmaps
Add support for creating EGL pixmaps from X11 pixmaps using GLX.
Pixmaps are needed for various external APIs such as VAAPI.
Add support for EGL_NOK_texture_from_pixmap to allow binding
pixmaps to textures.
BUG=angleproject:4560
Change-Id: I4a6d3ad7e87151ff5317bbdaaf093ac1b46daf5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2153805
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
12ed3b6e
|
2020-06-11T14:16:25
|
|
Vulkan: Create a pre-rotation BlitFramebuffer test
This test creates a predictable 256x256 pattern in an FBO (i.e. x-axis
is red and y-axis is green), and then uses glBlitFramebuffer() to blit
all or different halves of that FBO to the default framebuffer
(i.e. the Vulkan swapchain). When run on a rotated Android device,
the predictable pattern helps to determine if/how anything is wrong.
Bug: b/158337857
Change-Id: I858964fcb34b8ee5fbdbeade0e1dacaafaea7fa3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2236994
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
9bb7dd8a
|
2020-05-28T14:55:06
|
|
Create a pre-rotation test for dFdx() & dFdy()
This end2end test makes it easier to create/debug pre-rotation
support for dFdx() & dFdy().
Bug: b/157476241
Change-Id: I6e6cc3a86c84d252a326a776d6b589662b08d1ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2220311
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
3d5f0c82
|
2020-05-19T20:05:57
|
|
Use surface texture offset for clears and blits
https://chromium-review.googlesource.com/c/angle/angle/+/2186176 added
surface texture offset attributes for D3D11 pbuffer surfaces, but the
implementation didn't apply the offset to blits or clears. This CL fixes
that and includes a unit test for blit, clear, and draw.
Also renames textureOffset to surfaceTextureOffset throughout since it's
clearer, and fixes the dcomp surface test to specify the update offset
returned by dcomp BeginDraw().
Bug: angleproject:2997
Change-Id: I9298ccf55cbb2d04c3b8f78e12f9d07dc8fa54b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2210967
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
29fedbac
|
2020-05-20T09:52:15
|
|
Vulkan: Create a pre-rotation test for 400x300 windows
This test reproduces the cause of the failures with the
following dEQP tests:
dEQP.GLES31/functional_texture_multisample_samples_*_sample_position
This CL also fixes a problem with the previous test, and puts
the common rendering/ReadPixels code in a common method.
Bug: b/156395519
Change-Id: Id38476b6caf6f25c52f7504187fb500a39109438
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2207550
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
08e0df62
|
2020-05-08T19:32:05
|
|
Vulkan: Create a test to debug Android pre-rotation
This test has been helpful because of its simple, very-predictable
color pattern. The red component corresponds to the x-axis, and green
to the y-axis. Red and green values will increment by 1, from 0 to
255/0xFF, as it goes further away from the lower-left corner.
Bug: angleproject:4436
Bug: angleproject:4431
Bug: b/150329975
Bug: b/150329969
Change-Id: I76ac866d36036257810f77adf9b4e28bcdcc28d0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2185747
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7d8c2f2e
|
2020-03-26T22:44:15
|
|
Hide SwiftShader OS Window in dEQP and end2end tests
This prevents a race between starting Xvfb on test bots
and X11 calls in X11Window::setVisible(),
which used to cause flaky hangs on Linux SwANGLE bots.
Unfortunately, in order to hide SwiftShader OS window,
it must be a separate window from other backends,
so it is no longer possible to have a single window for all backends,
even if we don't reuse EGL Display.
The only platform that still uses a single OS Window is Android,
since there is only one system window per test application.
In addition, all the tests that make OS Window visible explicitly,
no longer do this for SwiftShader device.
Bug: angleproject:4434
Change-Id: I1a067c22bfeee9288046b9d9566740731c0d627c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2125945
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
05fa1a99
|
2020-03-30T22:02:16
|
|
Skip test flaky on SwANGLE bots
dEQP.EGL/functional_sharing_gles2_multithread_random_egl_server_sync_shaders_compile_9
EGLSurfaceTest.ResizeWindow
AttributeLayoutMemoryIndexed.Test
Bug: angleproject:4495, angleproject:4453, angleproject:4502
Change-Id: Iad5097412372acc8ac36c742445763451c8122ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2129181
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
6b462120
|
2020-03-20T19:23:17
|
|
Skip flaky SwANGLE end2end tests.
AttributeLayoutNonIndexed.Test
AttributeLayoutBufferIndexed.Test
EGLSurfaceTest.ResizeWindowWithDraw
Bug: angleproject:4453, angleproject:4502
Change-Id: I6dbd333e428d61d84bb17bf0c4112fa66cff9846
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113711
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
6125419c
|
2020-03-04T10:31:26
|
|
Vulkan: Suppress some flaky tests for Intel Linux driver
Bug: angleproject:4453
Change-Id: I55475f85298a593597daa300effa828a6b0ed342
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2087896
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
e45fe217
|
2020-02-29T23:28:33
|
|
Fix up EGLSurfaceTest.
* removes the SwapInterval test. This test was not really based on
spec language. SwapInterval is highly os-dependent so likely a
robust test would include some OS-specific logic instead of timing.
* give the pbuffer surface non-zero dimensions. this fixes an uncaught
error on Windows and may give better results.
* lifts a couple Android suppression possibly related to the pbuffer
bug. a couple tests still fail.
Bug: angleproject:3123
Bug: angleproject:3162
Change-Id: I68e4e943b94d17777704bbe3b8ae7e646fc9c54d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082131
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
4546c5ce
|
2020-01-31T15:05:35
|
|
Skip failing end2end tests on Windows on ARM
There are multiple failing tests on Windows on ARM which are related to drawing differences.
They seem to be similar to an already reported issue (anglebug.com/3748).
Bug: angleproject:4356
Bug: angleproject:4357
Change-Id: Ide5cc2e6f42d4c4b6fb88352833d20e517005c14
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033067
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f63fbcd5
|
2020-01-29T16:13:56
|
|
Fuchsia: Limit number of concurrent presents in ScenicWindow
The test suite occasionally runs into the following error:
[02036.794449][326733][326738][klog] INFO: [ERROR:src/ui/scenic/lib/scenic/session.cc(412)] Scenic session error (session_id: 1): Present2() called with no more present calls allowed. Terminating session.
This is actually a problem with the test harness as resetting the window
triggers a present with no fences and no OnFramePresentedCallback which
means there is no way to know if we will exceed the limit.
Add an OnFramePresentedCallback and count presents to stay under the
limit. This blocks if there's more than 2 in flight presents. A dedicated
async loop is used to avoid re-entering other code while waiting to
present (there is no such case in the ANGLE test suite currently, but
better safe than sorry).
Typically if we run the whole suite there will be a failure in the
middle, but re-trying the test that failed won't repro the issue. Add a
test that reliably exhausts the limit by calling resetNativeWindow() in a
loop.
Bug: angleproject:4360
Change-Id: I24eb01fd72fc0be57c36e49b5875023a80d6ab91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2027934
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
df0203a9
|
2020-01-15T14:05:33
|
|
EGL: Add support for EGL_EXT_pixel_format_float extension
Add support for floating point configs. On backends that
support rendering to floating point formats, add them to
EGL's frambuffer config list
Bug: angleproject:3958
Tests: dEQP-EGL.functional.wide_color.*fp16*
angle_end2end_tests --gtest_filter=EGLFloatSurfaceTest*
Change-Id: Ie65f63013483267985c2b308567bf5025acf750e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993686
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2a72553d
|
2019-11-25T14:22:50
|
|
Add EGLSurfaceTest.ResizeWindowWithDraw
This test will ensure the backbuffer is also properly resized when
the window is resized.
Bug: angleproject:4167
Change-Id: I1d73f07379b4f05e453520e22ef1369f51182197
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934311
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f0dd087e
|
2019-08-23T15:45:34
|
|
Move timer functionality from util/ to common/
The main timer functionality (get absolute time) is moved to common/ for
use in ANGLE itself (in upcoming overlay change). util/Timer.h is no
longer an abstract class and uses this functionality to implement the
timer.
Bug: angleproject:3757
Change-Id: I3fe418778d80d1089c9bfe43a9e8098e43236f18
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1769061
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
56ba54cc
|
2019-08-08T13:03:34
|
|
Support separate read and draw surfaces in eglMakeCurrent
Update ANGLE's default framebuffer implementation to support reading
and writing to different surfaces within the same framebuffer.
Bug: angleproject:2620
Test: EGLSurfaceTest[3]
Change-Id: I4b1ea04ca87a751f80cf190bf3adec148fc4fce3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1744746
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
188b679b
|
2019-08-15T09:02:43
|
|
Remove GL/EGL function pointers from tests.
The auto-gen loader code should be able to handle all these cases.
Bug: angleproject:3393
Change-Id: If0a90fb29d79f2892fdf76fe0cb91ed0036ee1e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1756083
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
4bb50faa
|
2019-08-14T11:23:57
|
|
Suppress flaky SwapInterval test
Bug: angleproject:3807
Change-Id: If44223e39a30a93358392b22b98beaa31ef220d7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1753587
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a1754dc8
|
2019-06-26T13:36:43
|
|
Vulkan: Recycle vkFence
This CL introduces a Recycler to reuse unreferenced vk::Fence, reducing
CPU time spent on vk::Fence init&destroy. Save around 15% of CPU time
for most glmark2 tests.
Bug: angleproject:3556
Change-Id: Ice5054305321c466c5be3bc368d04091f074729c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1679239
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
c26b7914
|
2019-07-04T16:52:21
|
|
Skip EGLSurfaceTest.SwapInterval on Linux NVIDIA Vulkan.
Flaky hangs on Ubuntu 19.04
Bug: angleproject:3618
Change-Id: Iab85c94e90aec0f7b15fe0fbc14ae1a8d0734d48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1689270
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
f116aa9c
|
2019-06-17T15:08:11
|
|
Vulkan: detect swapchain recreation passively
Currently ANGLE vulkan query current window size every frame to detect
whether a swapchain recreation is needed, however profiling shows some
bottle neck on window size query on X11. So here removing the per frame
window size query and only depend the result of vkAcquireImage and
VkQueuePresent to detect a need for swapchain recreation.
Bug: angleproject:3535
Change-Id: I4ddf70b973d78dfcd5f8fab28e29e802edad1b2d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1662759
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
5cbaa3f8
|
2019-05-07T15:49:22
|
|
Don't inherit ANGLETest SetUp and TearDown.
Instead of inheriting from testing::Test's SetUp and TearDown we add
new methods 'testSetUp' and 'testTearDown'. This helps prevent a common
error of forgetting to call the base class method.
Also add a check in the ANGLETest destructor that SetUp and TearDown
have been called.
Bug: angleproject:3393
Change-Id: Iab211305cc06ffea9ca649e864ddc9b180f2cba0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1593960
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
467f174f
|
2019-05-03T12:52:21
|
|
Remove EGLTest.
Consolidate these tests into ANGLETest. Add a new parameter to
PlatformParameters that lets us skip normal test setup.
This removes the last 'configless' tests from angle_end2end_tests.
Bug: angleproject:3393
Change-Id: I87186698ade90f95577534eb8ed1dfd4245f740e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1590467
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b8149075
|
2019-04-30T16:14:44
|
|
Clean up ANGLE test extension functions.
None of these functions needed to be member functions. Also make the
naming more consistent.
Bug: angleproject:3393
Change-Id: I7aafe2269a48af703a87bd9a8cf4cfab9e177dd3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1574673
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
893ccb48
|
2019-04-09T16:19:20
|
|
Skip EGLSurfaceTest.SwapInterval on Nexus 5X and 6P GLES
Bug: angleproject:3364
Change-Id: I51dd45cfcd1c548266712b71eac0dca60574e69e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1558960
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9078c6a7
|
2019-03-19T11:10:15
|
|
Update necessary angle_end2end_tests to check the Android device name
Some tests fail only on specific devices, so the tests should be updated
to reflect that, and allow more tests to run on more devices.
Bug: angleproject:3275
Change-Id: I8e3183c1769c0bb8ed6d2605afcaf399cb1d9ed0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1534463
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
18b05950
|
2019-02-11T11:41:06
|
|
Suppress EGLSurfaceTest.SwapInterval on android shield tv
Bug: 930723,angleproject:3144
Change-Id: Ib5524607ce072c8a37836d56fe5654284443fb49
Reviewed-on: https://chromium-review.googlesource.com/c/1464080
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|