|
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>
|
|
6a03109f
|
2025-07-09T18:24:31
|
|
Refine getCompressionRate
As Vulkan spec states, vkGetImageSubresourceLayout should not be called
for the android swapchainimage when the image is not bound to memory.
Refine the path of getCompressionRate to make sure at least
swapchainimage[0] has been initialized when it is been called.
Bug: angleproject:433057375
Change-Id: I80b68874686940c0ef77df97b928b0e153c5bbf8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774721
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
49e2b5e2
|
2025-01-31T15:52:39
|
|
Support compiling without GetProcAddress
Move GetProcAddress implementation next to the proc array. This way
it is possible to not compile the implementation.
Bug: angleproject:393513311
Change-Id: Ic9c9022ee74a7619bec25f1481fd9da68b14b119
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219320
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
b5809efa
|
2025-01-16T17:56:47
|
|
Delay eglSwapInterval() effect until swap
... and fix resetting effect of `eglSwapInterval()` call by changing
the `EGL_RENDER_BUFFER` attribute, and resetting desired shared present
mode when calling `eglSwapInterval()`.
Bug: angleproject:390333526
Change-Id: I473c7d4c5929e2179bbcd378b3695d10213644de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6169922
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
b16d105f
|
2024-10-03T10:25:32
|
|
Remove Desktop GL front-end support
For Desktop GL applications, please use Zink!
Bug: angleproject:370937467
Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8c12874c
|
2024-09-12T11:26:29
|
|
vulkan: add double buffer swapchain for fifo mode.
Double buffer swapchain usually drop the performance.
But at B* the default fps cap for silver device still at 30fps.
This change is for reduce latency.
Bug: b/311022968
Change-Id: Ida4044f439bbe3f235d53f5d1d2f945533cbb094
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5858255
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
7ce42b42
|
2024-05-30T16:08:12
|
|
Skip Display::prepareForCall calls everywhere except Mac.
Display::prepareForCall was added for CGL and EAGL backends which need
to know when an EGL call on a new thread is about to happen. Making
this virtual call on all EGL calls on all platforms adds overhead
which we can avoid so compile out prepareForCall everywhere except Mac.
Bug: angleproject:8434
Change-Id: I7b50463ed405a73eb993e18eb4f83434b4a4fd6e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5582015
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
ce263437
|
2023-09-11T12:25:28
|
|
Vulkan: Perform CPU wait in clientWait outside the global lock
Leverage UnlockedTailCall and move the CPU side wait
during a clientWait outside of the global mutex lock.
Bug: angleproject:8340
Tests: FenceSyncTest.BasicOperations*
Tests: EGLSyncTest.EglClientWaitSync*
Change-Id: I8c05e62e74cc64d38bf8797d28faaf49135e71fc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4851649
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
e408fc53
|
2023-08-09T06:25:38
|
|
Add support for EGL_MESA_platfrom_surfaceless extension
This adds support for the EGL_PLATFORM_SURFACELESS_MESA platform type to
allow applications to obtain an EGLDisplay that's independent of any
native windowing systems. This will be used in Ozone/Wayland to create
surfaceless EGLDisplays.
Bug: angleproject:8331
Change-Id: If2ae7a811cfa63ab9f49d54d78f5a3782c8c2fed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4749337
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
36c3e0f5
|
2023-01-17T17:42:59
|
|
Implement "Shared Context Mutex" functionality.
Existing implementation uses single `GlobalMutex` for
- EGL calls
- GL calls for Contexts with concurrent access.
This CL introduces abstract `egl::ContextMutex` with two
implementations:
- SingleContextMutex;
- SharedContextMutex<Mutex>;
Note:
`std::mutex` is used in this commit. It is very easy to change mutex
type either at compile-time or at run-time (single type per Display).
When Context:
- is not Shared;
- does not use `EGLImage`s;
- does not use EGL_DISPLAY_TEXTURE_SHARE_GROUP_ANGLE
- does not use EGL_DISPLAY_SEMAPHORE_SHARE_GROUP_ANGLE
then it will be using `SingleContextMutex` with minimal overhead.
Before such Context is used as `shareContext` or uses `EGLImage`
its mutex replaced by `SharedContextMutex<Mutex>`.
The `GlobalMutex` is only used for EGL calls, while `egl::ContextMutex`
implementations for GL calls. Because some EGL calls use Context,
explicit `egl::ContextMutex` lock is required. This is implemented by
generating "egl_context_mutex_autogen.h" header, and insertion of
`ANGLE_EGL_SCOPED_CONTEXT_LOCK()` macro before `ANGLE_EGL_VALIDATE()`
in each EGL entry point. Implementation in "egl_context_lock_impl.h"
returns lock for required APIs. Special cases of `egl::ContextMutex`
lock handled separately. `std::unique_lock<>` is not used for
performance reasons.
`egl::ContextMutex` explicitly locked when capturing EGL calls.
Fixes EGLImage problem:
https://chromium.googlesource.com/angle/angle/+/e18240d136d15e5cdfa4fa4a6355ca21c8d807b6
Mark contexts as shared when importing EGL images.
Details:
- EGLImage inherits Context's mutex when created.
Mutex is used when the EGLImage accessed or destroyed.
- When EGLImage is used in Context with other `egl::ContextMutex`,
two mutexes are merged into one.
- After the mutex merge, Context Groups will remain separate,
but will not be able to run in parallel.
Fixes race when checking `context->isShared()` in the
`SCOPED_SHARE_CONTEXT_LOCK()` macro. One Context may start executing GL
call while not "Shared", but become "Shared" inside the call. New
(second) "Shared" Context may immediately start using GL and potentially
corrupt some "Shared" state.
Possible performance benefit: allows parallel execution in some cases,
when single `GlobalMutex` would block.
Important note:
Process of replacing the `SingleContextMutex` by
`SharedContextMutex<Mutex>` is not 100% safe. This mean that
original Context may still be using `SingleContextMutex` after
activating `SharedContextMutex<Mutex>`. However, this was always
the case before introduction of this CL. Old `Context::mShared`
member update was not synchronized in any way at all. In other
words, this solution does not 100% fix the original problem.
For 100% safe solution `SingleContextMutex` should not be used
(always pass `SharedContextMutex<Mutex>` to the `gl::Context`
constructor). See `lockAndActivateSharedContextMutex()` for more
details.
CL adds new build option:
angle_enable_shared_context_mutex = true
Behavior with other build options:
- When:
`angle_enable_shared_context_mutex` is disabled or
`angle_enable_share_context_lock` is disabled or
`angle_force_context_check_every_call` is enabled,
Contexts will always have `SingleContextMutex`, however it will be
only used in special cases. `SCOPED_SHARE_CONTEXT_LOCK()` will use
`GlobalMutex` when applicable.
- Otherwise, `SCOPED_SHARE_CONTEXT_LOCK()` will use `egl::ContextMutex`.
Some GFXBench "1080p Driver Overhead 2 Offscreen" performance numbers.
Tested on S906B (Samsung Galaxy S22+) on old ANGLE base:
https://chromium.googlesource.com/angle/angle/+/807c94ea85e046c6f279d081d99f0fb1bcf1191a
Capture/Replay: Adjust tests do adhere to capture limits
Each test result is an average frame number from 6 runs.
SingleContextMutex 6579 ( +0.13%)
(old) GetContextLock() (mShared is false) 6570
Forced `mShared = true` or NOT using `SingleContextMutex`.
SharedContextMutex<std::mutex> FORCE 5061 (-22.97%)
(old) GetContextLock() FORCE 4766 (-27.46%)
Bug: angleproject:6957
Bug: chromium:1336126
Change-Id: Idcd919f9d4bf482b9ae489bd8b4415ec96048e32
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4374545
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd6a58f2
|
2023-04-18T12:45:10
|
|
Vulkan: Make eglPrepareSwapBuffersANGLE less special
This function now uses the UnlockedTailCall mechanism so it doesn't
require as much special-case code generation.
This change does not fix the bug that this function is doing too much
work without holding any locks. That will be done in a follow up.
Bug: angleproject:6851
Bug: angleproject:8133
Change-Id: I77f4d514ff4aeef85bc1cc59214f7caa23aca7df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4443186
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a52c0a6c
|
2023-02-06T16:01:27
|
|
Capture/Replay: Add and handle new resource type for EGLSync
So far calls involving EGLSync were not tracking the actual
sync objects, and this may lead to race conditions in
multi-threaded and multi-context scenarios.
This CL adds the type EGLSyncID and some specialized code
handling of egl::Sync to distinguish EGLSync from the already
existing GLSync objects in order to track them separately.
Bug: angleproject:7911
Change-Id: I91b188a41069bc0620f51c55ee516d23b55bdd38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4200095
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
4bfb749f
|
2022-10-10T20:59:48
|
|
Capture/Replay: Move shared trace code into src/common.
This will let them be accessible to the test harnesses. The
trace tests interpreter will need direct access to the classes
that we move in this CL.
This CL also moves the GLenum utils into the common folder,
where they were already used by some other tests.
Bug: angleproject:7752
Change-Id: I97ad607938ef29bc316f6d40098478e002ea8128
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3963362
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
8403e4c5
|
2022-10-10T20:59:29
|
|
EGL: Resource IDs for Surface, Context and EGL Image.
This will make these classes play nicely with resource maps. As these
objects are used in a lot of places, and simplified C can't handle
unordered_map, it's necessary to index the maps by simple packed IDs
in capture/replay code. This indirection will also have increased
safety as we validate EGL resource ID handle values before accessing
the memory directly.
Also hides some of the other EGL capture methods behind helper methods
to simplify the C code and hide assignments and other complex maps.
Bug: angleproject:7758
Change-Id: Ibc7bb56430d3068bd38877c9dfb011979d4ea234
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3957164
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
2265e37b
|
2022-10-12T09:27:16
|
|
Capture/Replay: Auto-generate EGL capture code.
Replaces the custom code in the EGL stubs. Skips a few "Get"
entry points because this CL doesn't implement pointer capture
like we do for all the GL entry points.
Includes a new state in the AttributeMap that indicates which
type of attribute values we used when initializing the map.
Bug: angleproject:4035
Change-Id: I272eac5e4068602ce710ef66c9a1dce5387943a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949911
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
7c4dc253
|
2022-10-12T08:38:46
|
|
Capture/Replay: Clean up EGL capture.
This switches the EGL capture types to ANGLE-casted pointers since
that's what we receive in the capture layer. Note that even if the
capture layer were used as a pure layer, not an EGL implementation,
we'd still have these types for state tracking.
This also prefixes each EGL class in the entry points with the egl
namespace for consistency and for simplifying the ParamType code.
Required changing to non-const gl::Context * in a few places. Also
changes the gSurfaceMap to be indexed by the raw pointer value,
which cleans up the code somewhat.
Bug: angleproject:4035
Change-Id: Id800c1ba25e5819ac7ea1df8aab806bc393fe192
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3949910
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3960e63b
|
2022-08-09T14:02:59
|
|
Infra: Enable angle_deqp_gl46_tests on SwiftShader
This change disables the WGL frontend by default on
Windows when building ANGLE for desktop GL. This
is because the WGL frontend is not yet fully
implemented and it causes some of the trace tests to
fail. The WGL frontend should be enabled by default on
windows when more of its functionality gets implemented.
Test: angle_deqp_gl46_tests --use-angle=swiftshader
Bug: angleproject:7566
Bug: angleproject:7628
Change-Id: I69c695eb56d3858f715eeb86d28cc805e25c60eb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3858142
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
a3899c53
|
2022-07-15T08:39:32
|
|
Capture/Replay: drop context capture call in EGL capture templ
Using the context provided by the thread variable is not correct, it
worked only by accident. The only call that uses a context is
eglCreateImage and here we have to use the context passed into the
call.
Bug: angleproject:4964
Change-Id: I78250050cc8f7271be8c91c2d09d99210aaead21
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3762458
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Faye Zhang <ffz@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
44d8bf76
|
2022-03-16T14:38:37
|
|
Vulkan: Support EGL_EXT_platform_wayland
Improve GetPlatformDisplay by supporting EGL_PLATFORM_WAYLAND_EXT.
Bug: angleproject:6902
Change-Id: Ia4c342097f47b7c41778ac02517451f51a94d8be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3528758
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fd9301c1
|
2022-06-17T12:25:10
|
|
Capture/Replay: Capture egl surface related calls
Creation from a pbuffer and generalized destruction are
implemented, as well as binding and releasing a TexImage
and making the context current with explicit draw and
read surfaces given.
Bug: angleproject:4964
Bug: angleproject:6180
Bug: angleproject:6512
Change-Id: Id8be6486125d45341905f3aabdbae4366cd568b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3711741
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
bfab7e60
|
2022-06-01T11:22:42
|
|
Ignore eglBind/ReleaseTexImage calls for lost contexts.
eglBindTexImage and eglReleaseTexImage no-op when no context is
current. Extend this to lost contexts to match the behaviour of making
a GL call on a lost context.
This avoids potential unexpected bad accesses in the backends.
Bug: chromium:1316578
Change-Id: I7b309c297e0c803019720733dee2950abb4c4b5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3683869
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
bbf67e2e
|
2022-05-16T12:04:34
|
|
Capture/Replay: support capturing eglCreateImage/eglDestroyImage
Because we support only a few functions the supporting code is not
autogenerated. We don't capture the actual value of the display
variable, because we assume that there is only one display, and
the actual pointer to it is provided by the EGLWindow. The rest
of the capturing works just like with the GLES calls.
Bug: angleproject:4964
Bug: angleproject:5822
Bug: angleproject:6180
Bug: angleproject:6286
Bug: angleproject:6578
Bug: angleproject:7111
Change-Id: I385aa9648f93bf74706e9860e2aee5775eeba220
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3636062
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2fb58a95
|
2022-02-15T15:40:23
|
|
Re-land: "Vulkan: GBM platform"
Add support for GBM platform by implementing a Display with no WSI
extension.
Re-land fixes build script, including GBM Vulkan backend whenever ozone
platform GBM is enabled.
Bug: angleproject:7217
Change-Id: Icbf2d034b700e22ab4c351e479f472d65d832ebe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3637562
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0db4c39b
|
2022-05-09T20:02:58
|
|
Revert "Vulkan: GBM platform"
This reverts commit 825d5b2c59b463253c82262a0c50f75d28860db4.
Reason for revert: Fails link rolling into Chrome crrev.com/c/3635013
https://ci.chromium.org/ui/p/chromium/builders/try/chromeos-amd64-generic-rel/1149608/overview
https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-compile-dbg/1013047/overview
https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-rel/1189185/overview
Original change's description:
> Vulkan: GBM platform
>
> Add support for GBM platform by implementing a Display with no WSI
> extension.
>
> Bug: angleproject:7217
> Change-Id: Ia9089131c5984dfdd926d2f85f1c218df1e84d9a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3596042
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:7217
Change-Id: Ia8a4ca753a8f18d6a2c607010b5afabf6a78fe9a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3636059
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
825d5b2c
|
2022-02-15T15:40:23
|
|
Vulkan: GBM platform
Add support for GBM platform by implementing a Display with no WSI
extension.
Bug: angleproject:7217
Change-Id: Ia9089131c5984dfdd926d2f85f1c218df1e84d9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3596042
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1c4c9fe9
|
2022-04-28T15:38:22
|
|
Capture/Replay: Fix formatting
These unrelated changes were created by running "git cl format"
Bug: None
Change-Id: I5a263818c3a94c40993312716d5782c5b9beb595
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3613909
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
01811839
|
2022-03-17T15:08:38
|
|
Refactor platform code
Use switch constructs instead of if-else to allow reuse of code and
simplify addition of other platforms as new cases.
Bug: angleproject:6902
Change-Id: Ia941d0d7bc03538bbc8d96ebece60224994a6c66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3532260
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Commit-Queue: Antonio Caggiano <antonio.caggiano@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0f3710d9
|
2022-03-16T14:30:17
|
|
Generalize GetDisplayFromNativeDisplay
Add a platform parameter to this function to possibly accept other
platforms besides EGL_PLATFORM_ANGLE_ANGLE.
Bug: angleproject:6902
Change-Id: I90bd9cf2e8142ca0e656dee4bf687953515b71a3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3528757
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Antonio Caggiano <antonio.caggiano@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
29e25468
|
2022-01-07T07:02:53
|
|
Account for EGL 1.5 version when dealing with robustness
EGL 1.5 spec allows for EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY
and EGL_CONTEXT_OPENGL_ROBUST_ACCESS enums to be passed in to
eglCreateContext. Update the validation layer and queries to account
for the new enums.
Bug: angleproject:6883
Tests: KHR-NoContext.es32.context_flags.*flag*
Tests: KHR-NoContext.es32.robustness.*reset*
Change-Id: I7088e0dca08cea2cfdcf1877b6d999c0e0336e5e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373133
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
9d668d6c
|
2022-01-07T18:18:23
|
|
Revert "Frontend: separate lock in swap prep"
This reverts commit 40c5cb255c0a07bdab574aa076ee603e7d791ab3.
Reason for revert: Regression in TSAN caused by this CL:
https://ci.chromium.org/ui/p/angle/builders/ci/linux-tsan-test/352/overview
Original change's description:
> Frontend: separate lock in swap prep
>
> Swapchain-based backends like Vulkan might block a lot in
> vkAcquireNextImageKHR, which is bad for overall fast progress if we also
> hold the global EGL lock there.
>
> This CL starts to split the global EGL lock. We release the EGL lock
> when performing vkAcquireNextImageKHR, and only maintain a lock for
> surfaces.
>
> Bug: angleproject:6851
> Change-Id: I329d5c4c579718a4980c4261590f77099ce1400e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3361249
> Reviewed-by: Charlie Lao <cclao@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Lingfeng Yang <lfy@google.com>
Bug: angleproject:6851
Change-Id: Ie03b784021f7b8b5c1ef95a911ef7da4029abd46
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3373165
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
40c5cb25
|
2022-01-06T13:31:54
|
|
Frontend: separate lock in swap prep
Swapchain-based backends like Vulkan might block a lot in
vkAcquireNextImageKHR, which is bad for overall fast progress if we also
hold the global EGL lock there.
This CL starts to split the global EGL lock. We release the EGL lock
when performing vkAcquireNextImageKHR, and only maintain a lock for
surfaces.
Bug: angleproject:6851
Change-Id: I329d5c4c579718a4980c4261590f77099ce1400e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3361249
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
6c172e4b
|
2021-11-20T16:27:14
|
|
Add support for memory cleanup on process exit
This patch adds a callback to cleanup memory on process exit.
Bug: angleproject:6723
Test: Android CTS WrapperTest.testThreadCleanup
Change-Id: Ia517d4c6ae280ddc1f17a3b6f77d437aaaad0678
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3294581
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
8b60855b
|
2021-09-15T15:16:10
|
|
EGL: implement EGL_KHR_mutable_render_buffer
Pass render buffer mode change to WindowSurfaceVk.
On mode change trigger OUT_OF_DATE. Then in CreateSwapchain,
if new mode, set the Presentation mode and the Image count.
OffscreenSurfaceVk ignores mode change.
Add MUTABLE_RENDER_BUFFER_BIT to GenerateDefaultConfig.
Test: dEQP-EGL.functional.mutable_render_buffer.*
Bug: angleproject:3966
Change-Id: I7b59708514bcda10f8d45ce5f9528aa840fcccfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3171822
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d8c18ac6
|
2021-10-08T13:00:19
|
|
Re-land: "Isolate commit_id.h from other code."
Re-land limits the angle_version deps to Windows to fix an iOS
visibility rule violation in GN.
Instead of recompiling multiple source files, we can seal off the
files that include commit_id to prevent recompilations when the
commit changes and source files don't change.
Bug: angleproject:2551
Change-Id: I033f00ec7afe4bfd01e29e0eea8848eea27747a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3233899
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7defdb60
|
2021-10-19T14:07:07
|
|
Revert "Isolate commit_id.h from other code."
This reverts commit 6d7ebf656d06f1152967aa5f4457d3787a24732c.
Reason for revert: Suspected reason for failing ANGLE roll into Chromium
Original change's description:
> Isolate commit_id.h from other code.
>
> Instead of recompiling multiple source files, we can seal off the
> files that include commit_id to prevent recompilations when the
> commit changes and source files don't change.
>
> Bug: angleproject:2551
> Change-Id: I98800c5a8e04ec7d4c3e57ea0eb3b636d3b224bb
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212895
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Bug: angleproject:2551
Bug: angleproject:6588
Change-Id: I19f41141f57d0683efb9a4ec043e078a9f7dc925
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3226056
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
6d7ebf65
|
2021-10-08T13:00:19
|
|
Isolate commit_id.h from other code.
Instead of recompiling multiple source files, we can seal off the
files that include commit_id to prevent recompilations when the
commit changes and source files don't change.
Bug: angleproject:2551
Change-Id: I98800c5a8e04ec7d4c3e57ea0eb3b636d3b224bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212895
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
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>
|
|
a8e98a23
|
2021-07-10T15:25:20
|
|
Fix gl::Context::unMakeCurrent crashes
The crash is because Display::makeCurrent() may fail, in that case,
egl_stubs.cpp will not update the current context in global_state and
Thread accordingly. And then Context::refCount could be reach 0,
and be released, however egl_stubs.cpp still thinks the context is
current, and then user-after-free happens.
This CL fixes the problem by updating current context of Thread in
Display::makeCurrent, and reading the current context of Thread in
egl_stubs.cpp and setting it to global_state.
Bug: chromium:1171371
Change-Id: Ifc5fffb0e4902c9c72514839d03e5783d50fe283
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3017210
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
|
|
1b104dd9
|
2021-05-26T14:29:01
|
|
Finish switch to angle_version.h.
Bug: b/168736059
Change-Id: I1232c8284f37aadb374840aca8f40e4569382c7b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2920490
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
904ac340
|
2021-04-26T15:54:25
|
|
Bug fix for WaitClient, WaitGL and WaitNative
It is valid to call eglWaitClient, eglWaitGL and eglWaitNative
when there is no active context in the current thread. Update code
to account for that possibility.
Bug: angleproject:5898
Test: EGLSyncTest.WaitClient*
EGLSyncTest.WaitGL*
EGLSyncTest.WaitNative*
Change-Id: I81f05a27f1f641cf8986e2e6c05c183ea8471889
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2849587
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
fdba40fe
|
2021-03-31T12:52:00
|
|
Reland "Fix multithreaded crash on draw commands on D3D11 backend."
This is a reland of 8b9889bf62272fea2495331b622bde1f7c781bd0
The previous CL relied on a define which now only exists in
a specific gn configuration. This reland removes D3D11 as a
multithread-supported platform in the test configuration.
Original change's description:
> Fix multithreaded crash on draw commands on D3D11 backend.
>
> A crash can occur if thread A is executing eglDestroyContext while
> thread B issues a draw call, if the threads are interleaved in such a
> manner that a makeCurrent occurs without triggering a change to the
> global context and a dirtyAllState call. We handle that case by
> explicitly making current the proper contexts in the eglDestroyContext
> call.
>
> A test has been added that triggers a crash without this fix when
> running on the D3D11 backend. In addition, all of MultithreadingTest
> is enabled for the D3D11 backend.
>
> Test: Ran MultithreadingTest. Test exhibits a crash before this
> change, and does not after this change. Also ran:
> dEQP-EGL.functional.sharing.gles2.multithread.*
> dEQP-EGL.functional.multithread.*
>
> Bug: b/183756357
> Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Doug Horn <doughorn@google.com>
Bug: b/183756357
Change-Id: I5be9a011ea99a69730eddc9e4da23bcf92ed3bf2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815243
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
fc189386
|
2021-04-08T21:51:46
|
|
Revert "Fix multithreaded crash on draw commands on D3D11 backend."
This reverts commit 8b9889bf62272fea2495331b622bde1f7c781bd0.
Reason for revert: Breaks CI
Original change's description:
> Fix multithreaded crash on draw commands on D3D11 backend.
>
> A crash can occur if thread A is executing eglDestroyContext while
> thread B issues a draw call, if the threads are interleaved in such a
> manner that a makeCurrent occurs without triggering a change to the
> global context and a dirtyAllState call. We handle that case by
> explicitly making current the proper contexts in the eglDestroyContext
> call.
>
> A test has been added that triggers a crash without this fix when
> running on the D3D11 backend. In addition, all of MultithreadingTest
> is enabled for the D3D11 backend.
>
> Test: Ran MultithreadingTest. Test exhibits a crash before this
> change, and does not after this change. Also ran:
> dEQP-EGL.functional.sharing.gles2.multithread.*
> dEQP-EGL.functional.multithread.*
>
> Bug: b/183756357
> Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Doug Horn <doughorn@google.com>
Bug: b/183756357
Change-Id: I2e9d6385576330f84623d7dafbf690642fcb441f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2815242
Commit-Queue: Doug Horn <doughorn@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
8b9889bf
|
2021-03-31T12:52:00
|
|
Fix multithreaded crash on draw commands on D3D11 backend.
A crash can occur if thread A is executing eglDestroyContext while
thread B issues a draw call, if the threads are interleaved in such a
manner that a makeCurrent occurs without triggering a change to the
global context and a dirtyAllState call. We handle that case by
explicitly making current the proper contexts in the eglDestroyContext
call.
A test has been added that triggers a crash without this fix when
running on the D3D11 backend. In addition, all of MultithreadingTest
is enabled for the D3D11 backend.
Test: Ran MultithreadingTest. Test exhibits a crash before this
change, and does not after this change. Also ran:
dEQP-EGL.functional.sharing.gles2.multithread.*
dEQP-EGL.functional.multithread.*
Bug: b/183756357
Change-Id: Ic6f76a062868b2f3b4e60d29dc087ec180bfb7cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2798591
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
22fc9523
|
2021-02-03T15:32:48
|
|
EGL: implement EGL_EXT_buffer_age
Add extension flag.
Add Validation check to surface query.
Enable extension for vulkan.
Modify AcquireNextImage to ++frame count and tag images
with frame number.
Buffer age is the difference between current frame count
and the tagged frame number on the buffer.
getBuffeAge may need to trigger AcquireNextImage to be current.
Pass through egl extension and query.
Add EGLBufferAgeTest
Test: angle_end2end_test --gtest_filter=EGLBufferAgeTest
Test: angle_deqp_egl_tests
--deqp-case=dEQP-EGL.functional.buffer_age.*
Bug: angleproject:3529
Change-Id: I0cb94be1c3e85d6f33e82a6a1ccdc9731b6a7f23
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2684724
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e7ca0aa2
|
2021-01-24T17:46:26
|
|
Fix crash in multi-context D3D11 backend.
The crash occured due to a lack of marking a context dirty on
eglMakeCurrent(), resulting in a situation where a thread B would
call eglMakeCurrent() but before issuing additional GL calls,
thread A would issue a draw command. Prior to this change, context
state would only be marked dirty on gl calls.
Test: dEQP-EGL.functional.sharing.gles2.multithread.*
dEQP-EGL.functional.multithread.*
dEQP-EGL.functional.render.multi_thread.*
dEQP-EGL.functional.color_clears.multi_thread.*
Bug: b/177602915
Change-Id: I765e0423002a373f94ea459b81b6e6f6942870d2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2646609
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Doug Horn <doughorn@google.com>
|
|
3f564fc7
|
2020-11-23T13:59:17
|
|
EGL: Generate entry points.
This adds two final auto-generated files for the EGL and EXT extension
entry points. It adds a new data file that stores a mapping between
object types and entry points for associating labeled objects with
certain methods. When we generate errors we record the associated
object in the debug message output.
This places the remainder of the hand-written code in "stub" files.
Going forward the work for implementing new extension entry points
for EGL will be to update the registry XML files and then implement
the corresponding stub methods. Event logging, parameter packing,
and validation are all handled by the auto-generated code.
Bug: angleproject:2621
Change-Id: I28153432802c37b929ff2ea1e1a3e3ce9de91605
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2562680
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|