|
8d23f34e
|
2023-01-18T16:20:05
|
|
Reland: DisplayEGL should support targeting specific EGL platforms
This is a reland of 01c641d58c7b4e4809163e48f570145af89c4acc
Updated changes:
The value is used only if non-zero
and marked as one of the supported platforms. For the moment the only
platform listed as supported is EGL_PLATFORM_SURFACELESS_MESA since
it's the only relevant platform value that the EGL_ANGLE_platform_angle
extension is listing as acceptable value for the
EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE attribute.
When validated, and with relevant EGL extensions listed in the client
EGL extensions list, a display object for the desired EGL platform is
retrieved through the eglGetPlatformDisplayEXT entrypoint.
Original change's description:
> DisplayEGL should support targeting specific EGL platforms
>
> DisplayEGL should use the
EGL_PLATFORM_ANGLE_NATIVE_PLATFORM_TYPE_ANGLE
> value, if provided, to target specific platforms when constructing the
> native EGL display.
>
> The value is retrieved from the display attributes map and propagated
> to FunctionsEGL::initialize(). If non-zero, and if the
> eglGetPlatformDisplayEXT entrypoint is successfully loaded, then a
> display object for the desired EGL platform is retrieved.
>
> Bug: angleproject:7942
> Change-Id: I3d8dd70c4c5c80259ae647dce039cfe741b0cf7d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4152531
> Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Bug: angleproject:7942
Change-Id: I75212b48e0e0edceef92e38bf68791017fb30a56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4178310
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
81c7a7d9
|
2023-02-15T11:33:05
|
|
Use per-channel fuzzy threshold
Switches the fuzzy threshold used in Gold-backed pixel tests to be
per-channel instead of the sum of all channels. This means that a
difference of [1, 1, 1, 0] between two pixels will now pass,
whereas before that would have required a threshold of 3.
This is intended to only ever auto-approve changes that can be
attributed to rounding errors.
Bug: angleproject:7985
Change-Id: Id057534c3e92ee9a4fbd1545fd1a16b28fea61b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4256778
Auto-Submit: Brian Sheedy <bsheedy@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
8c2fcc70
|
2023-02-02T00:00:00
|
|
Metal: Implement EXT_blend_func_extended
Fixed: angleproject:8015
Change-Id: Ic92a8823869bf097349aee6241f6cfb86942c945
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4242128
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
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>
|
|
13e8dabc
|
2023-02-15T14:34:05
|
|
Add EGL_PLATFORM_ANGLE_DISPLAY_KEY_ANGLE
To allow the creation of multiple EGLDisplays on the same graphics
device, we need a value to key for the display cache. When the
display key is specified, the cache will return a new display for
that key, even if there is an existing display on the same graphics
device.
Bug: chromium:1251724
Change-Id: I55e169776770734fc33b8bc8e1265ea6f7472fe3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4255730
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
c4912744
|
2023-02-15T09:55:09
|
|
Vulkan: Clean up CommandProcessor mutex name
This CL is mechanical change only and limited to CommandProcessor class.
It renames mTasks to mTaskQueue, renames mWorkerMutex to
mTaskEnqueueMutex, rename mSubmissionMutex to mTaskDequeueMutex.
Bug: b/267348918
Change-Id: I7a8c6820eb3bd27d4e6aacb1abe7275f3c0ec5c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4255807
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: 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>
|
|
79b0d80b
|
2023-02-14T14:29:59
|
|
Remove d3dcompiler_old.dll references
d3dcompiler_old.dll was retained for compatibility with Windows 7 but
can now be removed. It will be missing from future toolchain packages
and we no longer need code to handle it.
This also updates a doc page to change python to python3.
Bug: chromium:1416385, chromium:1385856
Change-Id: I80c9b6dec887bc403f6fe3dac4007acb1f164ea6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4251620
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Bruce Dawson <brucedawson@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>
|
|
94ff37bb
|
2023-01-17T19:11:50
|
|
Fixed bugs in "FastVector" class.
Bugs:
- items resources may not be freed after resizing to a lesser size.
- reusing capacity may use old values for the new items.
Fixed by resting removed items to default values.
Alternative fix is to disallow dangerous operations on non trivially
constructible/destructible types.
Bug: angleproject:8021
Test: angle_unittests --gtest_filter="FastVector.DestroyOldItems"
Test: angle_unittests --gtest_filter="FastVector.ReuseCapacity"
Change-Id: I8bc616a9476608c9301e3f7af3a0d504e7e2d2db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4249960
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
31d576ca
|
2023-02-15T00:34:07
|
|
Tests: Add SuperTuxKart trace
Test: angle_trace_tests --gtest_filter=TraceTest.supertuxkart
Bug: angleproject:8023
Change-Id: I9d427700a5e3badde0e66e55b24d50725c338251
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4251637
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
111aca40
|
2023-02-15T14:06:15
|
|
Capture/Replay: Emit NULL instead of nullptr in trace
When created C traces the value "nullptr" is not defined, so
emit NULL instead, because this is supported in both, C and C++.
Bug: angleproject:8018
Change-Id: I77584c462b1b02df39871929c1979d7ee7624361
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4254388
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
1145a497
|
2023-01-17T19:22:45
|
|
Vulkan: Very minor "rx::vk::BindingPointer" move-ctor update.
Initialize "mRefCounted" in member initializer list to avoid unnecessary
initialization with "nullptr" provided by the default member
initializer.
Optimizer will eliminate extra store in release builds but not in debug.
This change is more for code cleanness than for performance.
Bug: None
Change-Id: I1127a543468bb4138ae12d8941af27591ec4a2e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4251638
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5a77200b
|
2023-02-08T17:10:28
|
|
Metal: Implement parallel shader linking.
Update the Metal library cache to be thread safe. Change
absl::flat_hash_map back to std::unordered_map because the value types
now contain a mutex which must not move.
Only generate async compilation tasks for shaders that were not already
compiled and in the cache.
Collapse some of the link methods in ProgramMtl that only had one call
site. All linking is now done in ProgramMtl::link and
ProgramMtl::load.
Support disabling parallel linking using the new
enableParallelMtlLibraryCompilation feature.
Bug: chromium:1385510
Change-Id: I71ba71a34d994066729df7e4170911f88c89de4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4234153
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
2e70fa15
|
2023-02-13T23:01:51
|
|
Tests: Add Top War: Battle Game trace
Test: angle_trace_tests --gtest_filter=TraceTest.top_war
Bug: b/269178202
Change-Id: I4537fb99227b6a357a2d16d83da6514ecfd2a39e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4246716
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mike Schuchardt <mikes@lunarg.com>
|
|
9e33b83a
|
2023-02-14T11:47:17
|
|
Vulkan: Fix bug in EGLMultiContextTest.ReuseUnterminatedDisplay
This test is not destroying the context properly, which leads to
eglTerminate(dpy) not actually destroying the RendererVk. When the next
test app runs, it calls RendererVk::initialize again and calls
volkLoadInstance(mInstance). Because the previous RendererVk object is
still there, and the two CommandQueue shares the same volk instance,
writing to volk function table causes tsan to complain that other thread
is still using the old function pointer that now gets overwritten.
The test really should clean up properly here in order to have other
test to continue to run.
Bug: angleproject:7602
Change-Id: I93cd2439194aba9f28ce478aaf79ae8b81c6426b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4249984
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
f2617a09
|
2023-02-13T20:59:05
|
|
Vulkan: Minor fix when waitFor*ToBeSubmitted() may skip error.
Calling "checkAndPopPendingError()" without "mSubmissionMutex" lock
may cause situation, when new error is added to "mErrors" right after
the call. This new error may be for the work we are waiting for, and
it processing will be skipped.
Current CommandProcessor error handing should be rewritten in the
future anyway, but I think this minor error should be addressed now.
Bug: b/267348918
Change-Id: I65c49f7dc8e1984696d464c38f13fcdce93337bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245421
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
8374bf5f
|
2023-02-13T20:35:32
|
|
Fix bug in FixedQueue::clear() and refactoring.
- bug: "mSize" used to end the loop but also changed inside the loop by
call to the "pop()" method.
- refactoring: "mBackIndex" name is not correct, because variable
references to the "index for next write", in other words - to the
element past "back" (last written). Renamed to "mEndIndex" to match
the "std" terminology.
Bug: b/267348918
Test: angle_unittests --gtest_filter="FixedQueue.Clear"
Change-Id: Ic65291a7ff2ff6f4eed223ca80fef187e42df3e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245420
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
25e9686c
|
2023-02-09T11:51:24
|
|
[ios]: fix missing caps for D16_UNORM
Fixes "Assert failed in updateCaps (third_party/angle/src/libANGLE/ \
Context.cpp:4368): getClientVersion() < ES_3_0 || \
formatMaxSamples >= 4" as D16_UNORM caps were missing, which resulted
in GenerateTextureCapsMap skipping that format.
Bug: angleproject:6597, chromium:1413715
Change-Id: I031271e2db07d129e0c383107db2080794a11da1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4236537
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
91d55479
|
2023-02-13T21:18:13
|
|
Vulkan: reverted back SuballocationGarbage logic.
This commit:
Vulkan: Switch CommandQueue::mInflightCommands to FixedQueue
ad81cc95509379a213b9fddc6e7fe1cafc79115a
changes how SuballocationGarbage is processed in the "submitCommands()"
method. New logic allows clearing entire "mInFlightCommands" queue.
In case if this change was intentional, it should also remove this text
from the comment:
// But if there is only one command buffer in flight, we do not wait
// here to ensure we keep GPU busy.
Bug: b/267682377
Change-Id: Ia280c468c79f45dd44791cff09887982094521e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4245422
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ee64836f
|
2023-02-11T17:56:06
|
|
Revert "Metal: Optimized BufferSubData per device"
This reverts commit 968041b54770af8917001d8fe9b52a881cfed0b2.
Includes the following patches:
git revert -n 995db1f66bcf87fc9e47d908fb2a885e810d2567 \
9a6c90c8f802b4d107a081bfccaf4be007e7af54 \
dbd47e378582ef86db52c7379cd220cf0b2c8193 \
369b320f92f54774879e8b8faff834fc8db0793e \
4abae6f97586448712e2dc1cced4a678b0901d7b \
968041b54770af8917001d8fe9b52a881cfed0b2
Several conflicts with top-of-tree were resolved during this revert.
The aim is to reland this with additional code which will reduce the
amount of excess buffer memory allocated, and release the resources
associated with temporary buffer allocations.
Bug: angleproject:7544
Change-Id: Ib7a6bc2ab1c2f23cb43112cd980106e2898c3826
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4240556
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
5c2a6010
|
2023-02-13T16:32:58
|
|
Vulkan: Fix loading instance extension entry points
This change makes sure instance extension entry points are loaded right
after the instance is. Previously, this was done after all features are
initialized, including device features, but the code that decides the
device features was using the instance entry points.
Bug: angleproject:7959
Change-Id: I6869f40261eec7a3146c9e0e05b3fc139bc9223a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4247097
Commit-Queue: Ian Elliott <ianelliott@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
be5e767e
|
2023-02-01T11:03:26
|
|
dump_shader_source: Also dump program links.
When the dump_shader_source is enabled, dump a small file for each
program link containing which shaders were attached to the program.
This allows us to build perf tests knowing which shaders can link
together.
Bug: angleproject:7760, chromium:1385510
Change-Id: I0713e9f04cc157c3a3eeeec6d597db27b08575d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4214011
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
689e523c
|
2023-02-07T14:33:23
|
|
Vulkan: Remove vkResetQueryPoolEXT null-check hack
This was observed to be nullptr in some builds and assumed to be a
driver bug. However, this was due to a bug in implementation where the
code that was supposed to load the entry point was actually loading
another entry point.
This was fixed in
https://chromium-review.googlesource.com/c/angle/angle/+/4224582
Bug: chromium:1273344
Change-Id: I8c2003b322878fcab9282c793a8b1901d5d8e7a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227990
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
cad19f01
|
2022-02-01T17:36:03
|
|
Vulkan: Wait forever when waiting on fences
If a timeout occurs while waiting for the VK queue to be idle during
context destruction, there is no way to safely delete the resources
without potentially crashing as the driver is still reading them.
Instead, wait forever and let Chrome's watchdog tear the process down.
Bug: chromium:1223346
Change-Id: Ifa91465270f54b62a5ead88e8f26b3315072c380
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3430243
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
54951da2
|
2022-12-18T17:11:33
|
|
Vulkan: Refactor extension vs core version checks
Extensions are now grouped based on promotion-to-core status, and
initialization code is generally cleaned up. ANGLE currently doesn't
attempt to use a core version above Vulkan 1.1, as extensions are always
assumed to be exposed even if promoted to core in later versions.
With this change, it would be simpler to use a newer core version if
ever necessary.
Bug: angleproject:7959
Change-Id: Ia5fd3e06c18f7289e9e5a63af0f039a6dc89c687
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4224582
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
91bd7e6e
|
2023-01-09T15:57:35
|
|
Capture/Replay: VertexArrayState: also track binding index too
We have to capture the case when only the binding index is not
at the default value.
Bug: angleproject:7912
Change-Id: Id08b20788422694db60f38c6e0b8b4a9191890c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4143841
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
62d35a60
|
2023-02-10T13:05:14
|
|
Metal Fix norm16 subimage uploads w/ signed types
The supported texture format tables would have entries for
a signed or unsigned internal format and matching type.
The texSubImage variants do not communicate the sized internal format,
rather unsized format type. Data parameters are validated based on
format, not internal format. For these, the signed variants were
missing.
Add texture format table entries for signed types that match the format
parameters.
Add a precautionary validation case so that future such bugs would not
pass the control flow forward, into the copying phase.
Fixed: angleproject:8014
Change-Id: I5b00cca8672691fdb953f62093d62feaa724db99
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4238881
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
90ddd7c7
|
2023-02-10T16:47:32
|
|
Tests: Add Mini Block Craft trace
Test: angle_trace_tests --gtest_filter="*mini_block_craft*"
Bug: b/267795849
Change-Id: Ia6087066476992367f432d5d032f6f5542eeb2d3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4241403
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
2ca14a9f
|
2023-02-10T13:58:19
|
|
EGL: No-op dma_buf import modifiers on some Mali devices.
Some of the vendor checks in the EGL_EXT_image_dma_buf_import_modifiers
enablement logic disable the extension on older Mali devices while
Chrome depends on the presence of this extension, even if the
implementation is no-op'ed.
Refactor the logic into DisplayEGL with a tri-state:
* Extension exposed and forwarded to the driver
* Extension exposed and no-op'ed (Mali)
* Extension not exposed (ARM)
Bug: angleproject:7664
Change-Id: Idca7bb609423366779a65cd65093c9d5a65f0c19
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4241483
Reviewed-by: Brian Ho <hob@chromium.org>
Auto-Submit: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Brian Ho <hob@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a57e36dc
|
2023-02-10T12:21:36
|
|
Tests: Add Durak Online trace
Test: angle_trace_tests --gtest_filter="*durak_online*"
Bug: b/267794160
Change-Id: Id8047921bf5c48109fd7b59e8262849571701c5c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4241398
Commit-Queue: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2eb5d29a
|
2023-02-10T11:42:58
|
|
Vulkan: Linked pipelines always need the layout
A fix in the spec made it clear that the pipeline layout is always
necessary when creating the linked pipeline. This change removes the
comment that marks it as a driver workaround.
Bug: angleproject:7369
Change-Id: I7d068d330a7517fbc6e064fe2e796c2c53f6b859
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4241397
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
9d7292a8
|
2023-02-09T15:56:57
|
|
Vulkan: Unsupress fixed VUs
Bug: chromium:1412096
Change-Id: I6b5f2c0e894d354216cb49deba3a65aa7782004f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4237579
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
0d0e8c37
|
2023-02-08T17:33:39
|
|
Vulkan: Fix mutable render buffer with protected content.
Original implementation used Unprotected submission unconditionally.
In case of protected content/commands this may cause undefined
behavior.
New test works OK despite the bug.
VVL also did not show error, but should report:
VUID-VkSubmitInfo-pNext-04120
If the pNext chain of this structure does not include a
VkProtectedSubmitInfo structure with protectedSubmit set to VK_TRUE,
then each element of the pCommandBuffers array must be an
unprotected command buffer
Also from spec:
protectedSubmit specifies whether the batch is protected.
If protectedSubmit is VK_TRUE, the batch is protected.
If protectedSubmit is VK_FALSE, the batch is unprotected.
If the VkSubmitInfo::pNext chain does not include this structure,
the batch is unprotected.
It is a bug in VVL. It ignores check entirely if VkSubmitInfo::pNext
chain does not include VkProtectedSubmitInfo structure.
Bug: angleproject:3966
Test: angle_end2end_test --gtest_filter="EGLProtectedContentTest.ProtectedContextWithProtectedMutableRenderBufferWindowSurface*"
Change-Id: I0e0762e5fdfe19ce6c2184a36d057a95c2c79f00
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4232115
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
aa1f7e19
|
2023-02-08T21:05:35
|
|
Vulkan: Fix CommandQueue Wait Semaphores asyncCommandQueue race.
Recently implemented fix has a problem:
When using "asyncCommandQueue", wait semaphores flush performed in
the context thread, while submit in the async thread. Both operations
protected by the mutex, so there is no data race or other UB.
It is a potential performance problem: submit operation may attach
wait semaphores prematurely, before corresponding commands flushed into
the primary command buffer.
Fix adds "CustomTask::FlushWaitSemaphores" to ensure wait semaphores and
commands flushed in order.
Bug: angleproject:7995
Change-Id: I7d3cfad867c59d3cd0a5c0bb3f81ae8d98238362
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4231844
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
b2cfe726
|
2023-02-07T14:35:24
|
|
Vulkan: Make queueSubmit without holding CommandQueue::mMutex
VkQueueSubmit and VkQueuePresent could potentially take long. Right now
it is called while holding CommandQueue::mMutex lock. In previous CL we
moved mInFlightCommands to FixedQueue, which allows push/pop occur
concurrently. This CL moves queueSubmit and queuePresent to not take
mMutex but uses mSubmissionMutex. This allows other thread to
checkCompletedCommands etc while we doing submit/present.
The tricky part is that mPrimaryCommands is shared between all contexts.
It can contain commands from different contexts, thus the vkQueueSubmit
ordering must strictly follow the order of RendererVk::submitCommands()
call. The mMutex and mQueueSubmitMutex are managed in a way that does
the lock relay so that we always have a lock covering the
submitCommands call all the way to vkQueueSubmit.
Bug: b/267682377
Change-Id: Ic556cd4c64d334ad1cfc68942b803e401c6b0cc1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218198
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5d97cbd1
|
2023-02-07T12:54:26
|
|
Vulkan: Move post submit code into a separate function
This CL is mostly a clean up and refactoring and prepare for next CL. No
actual functionality change is expected. It added a new function for the
post queueSubmit logic. It moves CommandQueue::queueSubmit() into the
same location as queuePresent.
Bug: b/267682377
Change-Id: I240934dc4db06ce1277955938427a9e257211277
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4226006
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
995db1f6
|
2023-02-08T10:40:08
|
|
[ios] Fix build failure on iOS.
In CL https://chromium-review.googlesource.com/c/angle/angle/+/4217712
a switch was added that is not really supported on iOS but will cause
an error with -Wswitch. Return MTLResourceStorageModeShared for that
code path.
Bug: angleproject:7975
Change-Id: I68e326da4a733892d9282460c3f57e0aac58df08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4233079
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
ad582b26
|
2023-02-07T00:00:00
|
|
GL: Expose EXT_texture_border_clamp
* Adjusted validation
* Exposed both EXT and OES extension names
* Fixed border color when lumaWorkaround is enabled
Bug: angleproject:7969
Change-Id: Ia5622d4ecbc0b6338ee3651ab58bf1ca5276bbc4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4231843
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e1bd0415
|
2023-02-03T16:58:21
|
|
Revert "Re-land fixing of commit ID for Android builds."
This reverts commit e6662832af3c6394d0a0bbecd1e7a52581e88b12.
After the commit
https://github.com/google/angle/commit/61728827d2e5ecce685578bc54bb2c744b65fc9a,
we no longer depends on git hash to determine
if the program binary cache is valid.
The reverted commit was added to handle
unknown git hash. Android build infra does not
guarantee access to git, and we needed
GetANGLEHasBinaryLoading() check because we
can't tell if ANGLE program changed if git hash
remains "unknown" across different builds.
Now that we used a different hash
ANGLE_PROGRAM_VERSION as the cache key, which
generates from a list of code files that affect
program binary content and it won't be unknown
on Android build, we can revert the commit and
rely on ANGLE_PROGRAM_VERSION to reject invalid
program binary cache.
This fixes the dEQP test
dEQP-GLES3.functional.shader_api.program_binary.
simple.uniform_reset_on_binary_load, which failed
because the GetANGLEHasBinaryLoading() is stopping
Program::loadBinary() due to "unknown" git hash
on Android build.
This CL reverts most of the original commit,
cleans up unused macros and variables,
and reserves the change in program::loadBinary()
that returns incomplete if binary format is not
GL_PROGRAM_BINARY_ANGLE. This CL also reserves the
changes in
https://github.com/google/angle/commit/dd8021d98cd2909dfb85012f9b25010bd3ce2536
in case Sumsung parter still needs them.
Bug: b/258445879
Change-Id: Ia4380de9362f7b8bed6de6a54943bec6600cb76b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219368
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
7da34485
|
2023-01-17T16:17:51
|
|
Vulkan: Changed "asyncCommandQueue" Pending Present info logic.
Required for future commits.
Details:
- Fixes possible stale result in "CommandProcessor::mSwapchainStatus"
after WindowSurfaceVk destruction.
- Fixes possible dead-lock when the old "getLastPresentResult()" method
might be called more than once.
- New implementation allows waiting multiple times
(and multiple threads) for the same Present result.
Before commit:
31c4093651079775acf34ea1bb06bdabb4ea4386
Vulkan: Rework present semaphore recycling
There was assert in CTS:
dEQP-EGL.functional.swap_buffers_with_damage.resize_before_swap.*
Assert failed in ~SwapchainCleanupData (../../src/libANGLE/renderer/vulkan/SurfaceVk.cpp:669): swapchain == VK_NULL_HANDLE
Because of the stale "CommandProcessor::mSwapchainStatus"
and a race-condition as the result.
The "Vulkan: Rework present semaphore recycling" did not fix
the problem, but rather changed undefined behavior symptom.
Bug: None
Change-Id: Idf08a29265a43c711941b142001eb4380e2aa2b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194184
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
93515ccf
|
2023-02-08T18:04:40
|
|
Vulkan: Add OneOffCommandPool for unprotected/protected commands
Current implementation of "OneOffCommandPool" initializes single
"vk::CommandPool" instance basing on the first use. This may cause a
situation when Protected command buffer is used for Unprotected
content/submissions and vice versa.
This CL replaces single "OneOffCommandPool" instance with
"ProtectionType" enumeration map.
Bug: angleproject:8010
Change-Id: I7baa7ff5a42a96bc2f8bfeedcdc74d70a455abb0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4232116
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8b9bd182
|
2023-02-08T16:17:10
|
|
Vulkan: Refactoring to use ProtectionType enum instead of bool
This is a second stage of refactoring that was started here:
Vulkan: Minor CommandQueue implementation refactoring.
0210b46d35b51ea04bddafb48ba406a87c39e58e
Enumeration renamed: CommandContent -> ProtectionType.
Currently interfaces of ContextVk/RendererVk/CommandQueue use
"hasProtectedContent" boolean. Internally CommandQueue uses
"vk::ProtectionType" enumeration to separate states related to
Unprotected/Protected commands. This CL replaces boolean with
enumeration for consistency.
Bug: angleproject:7995
Change-Id: Ibb98cce661358d464be7c6a8367a1297d7093b1c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4232114
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
1f9759aa
|
2023-02-03T11:14:08
|
|
Tests: Add Samsung support in our test harness
Test: Progress towards running end2end tests on Android
Bug: b/267953710
Change-Id: I91e4e58833c3a55705b96871be6b124964605b83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227946
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
2618a9bc
|
2023-02-08T14:14:02
|
|
Vulkan: Fix fragment shading rate entry point init
The function to initialize vkGetPhysicalDeviceFragmentShadingRatesKHR
was accidentally initializing
vkGetPhysicalDeviceExternalSemaphorePropertiesKHR.
Bug: angleproject:7172
Change-Id: I2c76e1b88c5ce2e996d5581731010053821e6f7a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4233091
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
|
|
4c978523
|
2023-02-08T13:46:01
|
|
Tests: Add Add Words Crush: Word Puzzle Game trace
Test: angle_trace_tests --gtest_filter="*words_crush*"
Bug: b/267795212
Change-Id: I7c5c19b4306dd9b141f8880e1b4e7948629b6a73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4233090
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
1936ac00
|
2023-02-08T18:51:58
|
|
Fix InstancingTestES3.LargeDivisor suppression
Really skip on Win SwANGLE
Bug: angleproject:7900
Change-Id: Idcce5545eb4a990c1bc571acf537aac3347a3191
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4231842
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
46f68dba
|
2023-02-06T15:22:31
|
|
Metal: Support LibraryCache below c++20.
Usage of generic lookup with is_transparent is supported in c++20 or
any recent absl version. Add macros to feature test c++ and fall back
to copying the keys if generic lookup is not supported.
Bug: chromium:1385510
Change-Id: I4017890e2cc664afe127defd63b8dd50fb6f4163
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4224874
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Auto-Submit: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
93e311f7
|
2023-02-07T00:00:00
|
|
Add channel info to compressed formats in angle::Format
Fixed: angleproject:8011
Change-Id: I2ea08f30523c08b7ca11ee327990a110a448ca42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4232118
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
92f26ce3
|
2023-02-02T17:53:48
|
|
Metal: fix UBO argument buffers didn't work with managed storage.
This bug would happen when forceBufferGPUStorage feature is turned on.
This feature forces all buffers to use managed storage mode.
We use mtl::BufferPool to allocate an UBO argument buffer. However, we
didn't tell it to map the buffer. Later when we used MTLArgumentEncoder
to encode the buffer, mtl::Buffer::flush would be a no-op because the
Buffer didn't know that it was modified by the MTLArgumentEncoder on the
CPU. Consequently, its memory's encoding write wouldn't be visible to
the GPU.
Fix by passing a mapped pointer to mtl::BufferPool::allocate. This will
force a buffer mapping to occur. And memory flushing will properly be
invoked after MTLArgumentEncoder finishes the encoding.
Fixed: angleproject:7999
Change-Id: Ie486ae526672c89548ee14bc0824da1fdd5673c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4217055
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@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>
|
|
a4c7abcb
|
2023-02-06T10:37:41
|
|
Advertise GL_OES_geometry_shader and GL_EXT_tessellation_shader
Remove the exposeNonConformantExtensionsAndVersions
flag from the GL_OES_geometry_shader and
GL_EXT_tessellation_shader extensions enable
condition in vulkan backend.
All the dEQP tests related to geometry shader
and tessellation shader are passing on Pixel 6
and Pixel 7. See reults here:
https://atp.googleplex.com/test-runs?offset=0&testName=v2%2Fangle-for-android%2Fangle_deqp_internal_main&trigger=BUILD.
Current dEQP failures:
dEQP-GLES3.functional.shader_api.program_binary.simple.uniform_reset_on_binary_load
GLES31.functional.synchronization.in_invocation.ssbo_alias_overwrite
dEQP-EGL.functional.mutable_render_buffer.basic
are unrelated to these two extensions.
We can remove the
exposeNonConformantExtensionsAndVersions flag restriction
on exposing these two extensions.
Bug: b/238244188
Change-Id: Ide5252e27e2132997d1b3d36c6f2bfe5958be45d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4226312
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
9a6c90c8
|
2023-01-26T14:26:49
|
|
Reland "Metal: Avoid leaking buffers for GPU access for non-discrete"
The code would pass BufferManager::getBuffer(..,useShared=false,..)
and use that as key to try to obtain a buffer from the cache.
The BufferManager would store the returned buffers based on
the actual storage mode of the buffer. The storage mode for the
buffers for integrated / iOS devices is always shared.
The above logic would lead the buffer manager always storing returned
buffers to the cache, but never being able to consume any from the
cache. The cache is designed to grow unbounded, and so it did.
Remove the inconsistent logic of passing variation of "use shared bool"
as the arguments. Various places consulted various different Feature
options in inconsistent manner.
Instead, add Buffer::Usage for the callers to express what
kind of access pattern to expect a buffer to be used. Add explicit
MTLStorageMode parameters to Buffer constructing functions.
Remove redundant functions from Buffer.
Remove dead code from BufferPool related to allocation policy.
Reland: continue to allocate buffers with shared rather than managed
mode in BufferPool, as otherwise bug angleproject:7997 is encountered.
Bug: angleproject:7975
Change-Id: Iae4e75a85e6d49b20e724ed037a7c14cc0f7693f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4217712
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
ac0a4a7d
|
2023-02-03T15:34:32
|
|
Add finer memory allocation type
... so that when we hit an OOM we have better understanding on why.
Bug: b/266466279
Test: trigger a Vulkan OOM, see detailed allocation logging info
Change-Id: I71c1ebd83e18ddb22e7abfd29a785bf4ad6454dc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219365
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Kaiyi Li <kaiyili@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
9b2f52d2
|
2023-02-02T14:25:44
|
|
Use WARN to log the allocation info on allocation failure
ANGLE just strips off the INFO log, so we won't see any logs in
production when an allocation failure happens. Change to use WARN
instead.
Bug: b/266466279
Test: launch with an emulator, see the log output when allocation fails
Change-Id: I0a0828176feaf840aaa95f7127a2b90cf9cc653c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219939
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Kaiyi Li <kaiyili@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
b3846714
|
2022-11-28T11:05:05
|
|
Vulkan: Feature to make async queue slow for testing
Bug: angleproject:6746
Change-Id: I2573cae2dcf42d177168c55bc2a6d8bb012dde18
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227986
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
28da0a3e
|
2022-11-28T14:43:10
|
|
Vulkan: Avoid swapchain recreation on present mode change
Bug: angleproject:7878
Change-Id: I5a36c206dc8feb640fc684f92c10c26628633601
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4088907
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
|
|
ad81cc95
|
2023-02-01T16:23:02
|
|
Vulkan: Switch CommandQueue::mInflightCommands to FixedQueue
mInflightCommands has a limit of size. With std::dequeue, we may end up
resize the storage which means moving elements around. This CL switches
it to use angle::FixedQueue. This also allows us to make calls to
CommandQueue like checkCompletedCommands while other context doing
queueSubmit/queuePresent in the future CLs.
Bug: b/267682377
Change-Id: Id29641d37929328d00c5b52c019eea34f7189d0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4214507
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
11951f2f
|
2023-01-31T09:56:16
|
|
Vulkan: Add FixedQueue class for CommandProcessor::mTask
This CL adds FixedQueue class. It uses std::array for the storage. It
supports concurrent push and pop from two different threads. If producer
want to push from two different threads, then proper mutex must be used
to ensure the access is serialized. Similarly if consumers want to pop
from two different threads, a mutex must be used to ensure serialized
access. Caller must ensure queue is not empty before pop and not full
before push.
This CL switches CommandProcessor::mTasks to FixedQueue and moved
mSubmissionMutex to protect the serialized submission (i.e, pop from
queue). mWorkerMutex is still used to protect push operation. With this
change, we now supports continued enqueue to mTask of CommandProcessor
while other context is doing
CommandProcessor::waitForResourceUseToBeSubmitted().
Bug: b/267348918
Change-Id: I6c5fe288436daa7e0f3bcbbcd16c5d2e5e27f2e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4210653
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
046db15c
|
2023-01-16T15:25:33
|
|
Vulkan: Remove redundant ImageState::sourceType
It was the same as ImageState::target
Bug: angleproject:7962
Change-Id: I0ed95deaa23087abbe975a99304bae6ea515ab7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4168455
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a77e8e3a
|
2023-02-06T16:24:06
|
|
Limit logging when invalid calls are not captured.
An app was crashing during capture due to a huge volume of such calls:
% adb logcat -d | grep 'Not capturing invalid call' | wc -l
20609
There are a couple of cases where validation silently ignores "benign"
invalid calls, such as glUniform*(-1, ...):
https://crsrc.org/c/third_party/angle/src/libANGLE/validationES.cpp;drc=0c4306fc554c80506eb0f9b833a5d2a5fdd452d5;l=2815
Limit to (separately for active and inactive capture so that we still
see these after triggering mid-execution capture).
Example log after this CL:
02-07 11:54:45.869 7657 7749 I ANGLE : INFO: FrameCapture (capture inactive): Not capturing invalid call to glUniform1f
02-07 11:54:45.874 7657 7749 I ANGLE : INFO: FrameCapture (capture inactive): Not capturing invalid call to glUniform1f
02-07 11:54:45.882 7657 7749 I ANGLE : INFO: FrameCapture (capture inactive): Not capturing invalid call to glUniform1f (will no longer repeat for this entry point)
... (then I triggered capture) ...
02-07 11:55:13.049 7657 7749 I ANGLE : INFO: FrameCapture (capture active): Not capturing invalid call to glUniform1f
02-07 11:55:13.049 7657 7749 I ANGLE : INFO: FrameCapture (capture active): Not capturing invalid call to glUniform1f
02-07 11:55:13.050 7657 7749 I ANGLE : INFO: FrameCapture (capture active): Not capturing invalid call to glUniform1f (will no longer repeat for this entry point)
Bug: b/267795212
Change-Id: I2f150cfa5b4c74fc1ebe5abeb1201cc4caad80e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4224875
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
0ee67145
|
2023-02-06T18:08:26
|
|
Vulkan: Fix bug with ContextVk::mWaitSemaphores processing.
Regression:
2e5ca217ca134a7ae4e241e2f7e4cfa637305af7
Vulkan: Let each current context has its own QueueSerial.
Problem details:
- Call to finishImpl()/flushImpl() will skip mWaitSemaphores processing
when there are no pending commands.
- finishImpl() will call clearAllGarbage() that will clear
all mCurrentGarbage.
- However, some mWaitSemaphores may be in the mCurrentGarbage
(Semaphore created in SyncHelperNativeFence::serverWait()).
Bug: angleproject:8007
Test: angle_end2end_tests --gtest_filter="EGLSyncTest.AndroidNativeFence_VkSemaphoreDestroyBug*"
Change-Id: Ia51663eae739b505ca00437cea4ae71526dedbfb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4225392
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
b930cdbf
|
2023-01-31T12:27:42
|
|
Vulkan: Make CommandProcessor only wait for required work
CommandProcessor::waitForResourceUseToBeSubmitted() is waiting for all
works in the mTasks to be submitted. This CL makes it only wait until
the requested ResourceUse has been submitted to vulkan. The reason
waitForResourceUseToBeSubmitted is currently waiting for all mTasks to
empty is because submission can only occur in worker thread. In this CL,
this has been changed so that submission can come from any thread. In
the case of waitForResourceUseToBeSubmitted, since we are waiting, we
could rather just drain the mTasks in the calling thread. This avoid
thread hoping, and more importantly, able to get rid of the idle
conditional variables and make code simpler.
Bug: b/267348918
Change-Id: Ia55dc4bc93925cf926aad5b53936cbc42036ac38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4210650
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a88d9f03
|
2023-02-07T02:37:53
|
|
Vulkan: Refactoring in RenderPassCommandBufferHelper.
This is a follow-up refactoring after CL:
cae00d9bba91bd6857d71c07b853dba8485e2ab8
Vulkan: Cleanup shared ring buffer cmd alloc feature.
"mCurrentSubpass" naming is a bit confusing.
When custom Vulkan secondary command buffers are used, "mCurrentSubpass"
is always "0". This is because custom command buffers allows storing
multiple subpasses.
This CL renames this member into "mCurrentSubpassCommandBufferIndex",
to clearly state that it is refer to command buffer index of a current
subpass. Custom command buffers will always use single buffer ("0"),
while Vulkan secondary command buffers will have a buffer per subpass.
Bug: b/256666069
Change-Id: I6777e3ca4ee57513e1c36f05f8d223eb086b095a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227072
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
001b004d
|
2023-02-07T00:48:37
|
|
Vulkan: Fixed assert in DedicatedCommandBlockPool onNewCommand()
It is valid to allocate "kBlockSize" bytes.
Bug: b/256666069
Change-Id: I0cd37a450af3de476c05e7681f32cdae5916d56b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4227071
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
c799074c
|
2023-02-06T21:52:41
|
|
Metal: Implement EXT_disjoint_timer_query.
Time-elapsed query objects allocate and deallocate storage slots in
the CommandQueue. Command buffers register themselves with these slots
(if active) upon allocation, and upon completion, accumulate their
execution time in the slot. Query objects accurately track completion
and report the total accumulated execution time for all command
buffers issued while the time-elapsed query was active.
Timestamp queries are not implemented. A pointer to implementation
suggestions has been added to the code.
Tested with the WebGL conformance test:
conformance/extensions/ext-disjoint-timer-query.html
Fixed: angleproject:7828
Change-Id: Ia022d0f3a52f2098bd01cf96f7cc20e3d347197e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4226410
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
2510afd2
|
2023-02-02T13:30:26
|
|
Enable Skia Gold inexact matching
Enables inexact matching for ANGLE tests that use Skia Gold using the
fuzzy algorithm.
This will allow images to be auto-approved if it appears that the
differences are due to rounding.
Bug: angleproject:7985
Change-Id: Iee791ff2bd06ce426d27e05cf5a6eb0058e857af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219862
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
3886af6e
|
2023-01-16T15:17:40
|
|
Vulkan: Generalize AHB optimization prohibitions
... to all external images.
Bug: angleproject:7962
Change-Id: Ib8e090b995330b651865953057869adb4d14c83b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4169559
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
ef056a06
|
2023-01-20T14:15:48
|
|
Vulkan: Use SubmitPolicy::AllowDeferred whenever possible.
Using of SubmitPolicy::EnsureSubmitted is not necessary, because there
are finishQueueSerial() call immediately after that.
Changing to AllowDeferred avoids extra waiting call (NO-OP)
and saves some CPU cycles.
Bug: angleproject:8001
Change-Id: Id618253a4b59d006975044eb437ac60468199a98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194187
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fa0681d1
|
2023-01-17T17:43:48
|
|
Vulkan: Per Context Serial cleanup.
Comment in the "OutsideRenderPassCommandBufferHelper::reset()" is
misleading. New "mQueueSerial" is always generated after
"RendererVk::flushOutsideRPCommands()". This change removes comment
and invalidates "mQueueSerial" to catch possible errors.
Call "generateOutsideRenderPassCommandsQueueSerial()" in the
"ContextVk::flushImpl()" only when needed. This call is necessary only
with empty submission with only "signalSemaphore" and NO OutsideRP
commands are written inside the "flushImpl()"
(mIsAnyHostVisibleBufferWritten or mGpuEventsEnabled).
Bug: b/267806287
Change-Id: Ibc547f97a6b38f70ad3d5901eca7b659b93014c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218363
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
db86154e
|
2023-02-03T00:00:00
|
|
Adjust TextureState::isStencilMode
Backends that need special setup for sampling stencil
data rely on the TextureState::isStencilMode() helper
function.
Ensure that it returns true only when:
* the sampled texture has a combined depth-stencil
format and the depth-stencil texture mode is set
to stencil, OR
* the sampled texture has a stencil-only format.
New tests cover sampling of all six depth, stencil,
and combined depth-stencil formats with both modes.
Bug: angleproject:2373
Change-Id: I2b47dc86aea44de507f9eb8d301a0a6d5211aee4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218603
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3e5b36e4
|
2023-02-03T14:23:10
|
|
Vulkan: ContextVk::finishImpl only wait for context's serial
ContextVk::finishImpl() right now calling mRenderer->finish() which wait
for everything to finish, including other unrelated context's
submission. This CL changes it to only wait for this context's
mSubmittedResourceUse.
Bug: b/267806287
Change-Id: I0f31d561395da4fed7b9c93fd2adb9e5d8a16222
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4220016
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cae00d9b
|
2023-01-17T18:44:48
|
|
Vulkan: Cleanup shared ring buffer cmd alloc feature.
Changes:
- Simplified "SharedCommandBlockPool" interface.
Removed "ptrOut" and "usesCommandHeaderSizeForOffsetOut" parameters,
because "headerOut" has exactly the same value.
- Refactoring of "SharedCommandBlockPool" classes.
Some public methods made private, inline, or moved into ".cpp".
- Replace some getters with more specific/restrictive methods:
- "RingBufferAllocatorBuffer::getStorageSize()" -> "isEmpty()"
- "CommandBufferHelperCommon::getAllocator()"
-> "hasAllocatorLinks()"
- Added extra ASSERT()s.
- fixed typo "kMinRingBufferAllocatio(r)Capacity"
- other minor modifications.
Bug: angleproject:6401
Bug: b/256666069
Change-Id: I8f5c1c928bac5f8ecdfce7d411834f7ea39d11ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218364
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b96f3abd
|
2023-02-03T13:12:29
|
|
Vulkan: Make Context::mLastSubmittedSerial to QueueSerial
Right now Context::mLastSubmittedSerial and mLastFlushedSerial are all
Serial type instead of QueueSerial. Most places we do need QueueSerial.
This CL changes them to QueueSerial type. This simplifies and improves
code readability. No actual functional change is expected with this CL.
Bug: b/267806287
Change-Id: Ib00cae2637ee9ed95e5fc00060c63017b04e26c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219944
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
11366cbb
|
2023-02-06T09:53:27
|
|
Vulkan: Bug fix in flushDescriptorSetUpdates(...)
Return the size of mWriteDescriptorSets instead.
Bug: angleproject:6776
Change-Id: I2af36975b82c34bf4f4f70a374602546f84ace90
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4225117
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6bdd90a7
|
2023-02-02T21:36:41
|
|
Manual roll vulkan-deps from c7184adab227 to 7ab598f59574 (12 revisions)
Manual roll requested by ynovikov@google.com
Suppressing VUIDs:
"VUID-VkAttachmentDescription2-stencilStoreOp-parameter",
"VUID-VkAttachmentDescription2-storeOp-parameter",
https://chromium.googlesource.com/vulkan-deps.git/+log/c7184adab227..7ab598f59574
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/58d302cfa2..7341a21b34
* spirv-cross: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross.git/+log/199d0cb8a9..459fa67937
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/8a0fe779e5..d8759a140b
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/3bc9d7c0c5..ebb932a402
* vulkan-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools.git/+log/df9d118bb1..e1940bd368
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/99b147ad63..c5d638465e
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,ynovikov@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: chromium:1412096
Change-Id: Ie97d47f81bfd367e18602bfae885ba487bc732e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219865
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
b925c43e
|
2023-02-03T21:12:48
|
|
Revert "Vulkan: Remove platform restriction of EGL_ANDROID_native_fence_sync"
This reverts commit f852187dfbb094a981331a584d65dc5a4069644e.
Reason for revert: Suspect for crashes on Fuchsia
https://chromium-review.googlesource.com/c/chromium/src/+/4221336
https://cr-buildbucket.appspot.com/build/8790151118736391057
Original change's description:
> Vulkan: Remove platform restriction of EGL_ANDROID_native_fence_sync
>
> Remove platform restriction of EGL_ANDROID_native_fence_sync
> extension except for Mac OS.
>
> Bug: angleproject:7834
> Change-Id: I116f44d8baca9cdcdd90013ca173b04461d06ae1
> Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4027707
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: mohan maiya <m.maiya@samsung.com>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
Bug: angleproject:7834
Change-Id: I2b7381fd1702be578014539cbc96bfa7ace9c295
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218602
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
99063e20
|
2023-02-03T16:56:25
|
|
Skip flaky crashing test on TSAN
MultithreadingTest.CreateMultiSharedContextAndDraw
Bug: angleproject:8002
Change-Id: I58075b24f6767e4c23b8787234eff93b29cb0560
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218362
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
173003af
|
2023-02-02T13:19:57
|
|
Tests: Add Lilys Garden trace
Test: angle_trace_tests --gtest_filter=TraceTest.lilys_garden
bug: b/267577743
Change-Id: I5dc64293767c30a0e4f79ca5779db092d34a9998
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219853
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
f852187d
|
2022-11-15T17:26:47
|
|
Vulkan: Remove platform restriction of EGL_ANDROID_native_fence_sync
Remove platform restriction of EGL_ANDROID_native_fence_sync
extension except for Mac OS.
Bug: angleproject:7834
Change-Id: I116f44d8baca9cdcdd90013ca173b04461d06ae1
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4027707
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
0210b46d
|
2023-02-01T14:01:59
|
|
Vulkan: Minor CommandQueue implementation refactoring.
This is a preparation for the follow-up wait semaphore bug fix.
Bug: angleproject:7995
Change-Id: Ie509366d5bbb73b32ba6c0e6a0ac8357c450fbbc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4215391
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
4391d807
|
2023-01-19T00:00:00
|
|
Metal: Fix gl_FragDepth shader specialization
Adjust fragment shader variants cache
to account for depth attachment presence.
Fixed: angleproject:7961
Change-Id: Ia6390d336d8b5c4abceb1050853e0665f117b156
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218391
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
fee24cfb
|
2023-02-02T09:56:12
|
|
Vulkan: Optimize BindingPointer move-constructor
Bug: None
Change-Id: Iee609d51a8359a124889cd2cfb4fbfb0aeadf62c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4218197
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
2f3ce7b6
|
2023-02-01T10:01:30
|
|
Roll vulkan-deps from 30323acb3089 to c7184adab227 (11 revisions)
Suppressed VUID-VkImageCreateInfo-pNext-00990 introduced in
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+/64da29612fe6f8f2922101a5ef64f807db860b6b
https://chromium.googlesource.com/vulkan-deps.git/+log/30323acb3089..c7184adab227
Changed dependencies:
* glslang: https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang.git/+log/4e9cde50bb..58d302cfa2
* spirv-tools: https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools.git/+log/fcfc3c580c..8a0fe779e5
* vulkan-loader: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader.git/+log/dda7872300..3bc9d7c0c5
* vulkan-validation-layers: https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers.git/+log/ea1305065a..99b147ad63
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-deps-angle-autoroll
Please CC angle-team@google.com,ynovikov@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Bug: chromium:1412096
Change-Id: Ie6ef81d3ecb35670bcb9632096cc99f57012ef5d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4211601
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1703c730
|
2023-02-02T10:29:12
|
|
Fix glMapBufferRange() failure with D3D11 backend
ID3D11DeviceContext::Map() with flag D3D11_MAP_FLAG_DO_NOT_WAIT will
fail and return DXGI_ERROR_WAS_STILL_DRAWING, if the GPU is not yet
finished with the resource. It is not equivalent to
GL_MAP_UNSYNCHRONIZED_BIT. So we shouldn't use
D3D11_MAP_FLAG_DO_NOT_WAIT for glMapBufferRange() with
GL_MAP_UNSYNCHRONIZED_BIT.
Bug: angleproject:8000
Change-Id: Ifb2c10d3d102f7f9efdd6d3e9f56f04446b26d38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4219251
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Peng Huang <penghuang@chromium.org>
Auto-Submit: Peng Huang <penghuang@chromium.org>
|
|
9b00af52
|
2023-02-01T11:10:32
|
|
Metal: Add an in-memory MTLLibrary cache.
Add a small cache for (msl + compile parameters) -> MTLLibrary at the
egl::Display level. In regular executions of Chrome, the same shaders
(particularly vertex) are compiled multiple times in different programs.
Tested for a regular Chrome startup + open wikipedia + motionmark 1.2:
112/282 (40%) cache hits.
Several different caching methods were profiled (LinkProgram perf test)
- struct key with std::map : 303309
- struct key with std::unordered_map : 308090
- binary blob key with std::map : 263595
- binary blob key with std::unordered_map : 286051
- struct key + is_transparent with std::unordered_map : 304877
- struct key + is_transparent with absl::flat_hash_map : 335686
Using is_transparent allows us to search the hash map without
copying the shader source string to construct the key structure.
Bug: chromium:1385510
Change-Id: Ieec4ba526fe286276a4af7114d89cde32a8f9e1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4214012
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
b23bf47c
|
2023-01-25T18:50:40
|
|
Reland "Metal: rewrite default uniforms and uniform blocks"
Instead of rewriting uniforms in shaders to match std140 layout,
re-pack incoming uniform blocks' std140 packed variables to match
Metal's layout.
This change intorduces a new BlockLayoutEncoder for Metal types
The block encoder handles packing typically larger GL types (bools)
into smaller types, and adding support for more compressed matrix types.
Since we no longer need to do shader-time packing and unpacking of data
from std140 padded structs, complicated shader transformations have been
removed. This patch greatly reduces register pressure, especially when
working with shaders with arrays of previously expanded types. (Vec3's)
Reland: Fix an issue where the default uniform block's final size was not
aligned to the default uniform block's alignment requirements, causing
crashes with the debug layer enabled.
Bug: angleproject:7137
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3733524
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Change-Id: I89d3b817675486fde73b91b0be0f4c25986d4ba5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4209867
|
|
17931e23
|
2023-01-27T00:00:00
|
|
Fix stencil and depth/stencil data uploads
Multiple changes were made to depth and stencil load
functions, removing redundant code and fixing issues.
Failures were caused by incorrect assumptions about
component locations in combined formats.
* D32_FLOAT_S8X24_UINT has the same layout as
GL_FLOAT_32_UNSIGNED_INT_24_8_REV
* D24_UNORM_S8_UINT has stencil data in its MSBs,
while GL_UNSIGNED_INT_24_8 puts it in LSBs.
Bugfixes
* Added LoadD24S8ToS8D24 that swaps D24 and S8 components
* Added LoadS8ToS8X24 for stencil-only uploads on D3D
* Replaced LoadD24S8ToD32F with LoadD32ToD32F
* Fixed D and S extraction in LoadD24S8ToD32FS8X24
* Fixed stencil load and store in LoadD32FS8X24ToS8D24 and
LoadD32FS8X24ToD32FS8X24
* Fixed S8_UINT subresource updates in Vulkan
* Fixed D24_UNORM_S8_UINT subresource updates from
GL_FLOAT_32_UNSIGNED_INT_24_8_REV data in Vulkan
Cleanup
* Renamed LoadUNorm16To32F to LoadD16ToD32F
* Removed LoadUNorm32To32F, replaced it with LoadD32ToD32F
* Renamed LoadR32ToR24G8 to LoadD32ToX8D24
* Renamed LoadD32FS8X24ToD24S8 to LoadD32FS8X24ToS8D24
* Removed unused LoadG8R24ToR24G8
* Removed Metal-specific LoadS8D24S8ToD32FX24S8,
made use of the fixed LoadD24S8ToD32FS8X24 instead
* Simplifed LoadD24S8ToD32F
Added Texture2DTestES3.TexImageWithStencilData.
Fixed: chromium:1408004
Fixed: angleproject:5317
Change-Id: I231345353aa4a7cebe46ded8458ac80de2c59e01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4203427
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
2e9909f5
|
2023-01-31T13:50:08
|
|
Metal: Enable Metal on iOS in gni build.
Use is_apple instead of is_mac to enable metal on iOS.
Some iOS simulator Metal tests needed to be added to the test
expectations as they fail on the Intel buildbot. These will to be
progressively fixed out of band.
Bug: chromium:1411704, angleproject:7994
Change-Id: I4df036d76f48d165da444f769607194dbe7d4957
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4210649
Auto-Submit: Dave Tapuska <dtapuska@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
91fdf3e6
|
2023-01-31T11:38:32
|
|
Include atomic in RingBufferAllocator.h w/ ANGLE_ENABLE_ASSERTS
Fixes the compile error.
Bug: angleproject:7986
Change-Id: I2aef9c4c0b7d499d3cf382abb8fcf8dd83398f52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4205888
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
0bbb5033
|
2023-01-31T13:33:09
|
|
Check if multidraw calls are no-ops
Patch by: David Li <jingye_li@apple.com>
Avoid assertion when prepareForDraw would try to use a program state
without program.
Fixed: angleproject:7990
Change-Id: I9cdac0467deafb1975664ee999067ca3813aaa7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4205893
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
5a2d1ce9
|
2023-01-17T16:16:39
|
|
Vulkan: Disable Imageless Framebuffer in some conditions.
Some Samsung Vulkan drivers crash in vkCmdClearAttachments() when
imageless Framebuffer is used to begin Secondary Command Buffer before
the corresponding vkCmdBeginRenderPass().
Bug: None
Change-Id: I09833af6e529f64f534d9d33825a53eee5c49212
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4194179
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
360cd0d1
|
2023-01-31T12:32:15
|
|
Include debug.h in various treeops headers
Avoids compile failure if the UNREACHABLE is used due to compile
flags.
Bug: angleproject:7987
Change-Id: I4655b345648b6b56faaa42030fb8997184c6b7e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4205890
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9399c508
|
2023-01-31T20:37:39
|
|
Tests: Add Piano Kids - Music & Songs trace
Test: angle_trace_tests --gtest_filter="*piano_kids*"
Bug: b/267393674
Change-Id: I77637aa04e4a38b2915f3cd3bcb224468bb6323f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4211594
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
6486b25a
|
2023-01-31T19:59:41
|
|
Tests: Add 2 3 4 Player Mini Games trace
Test: angle_trace_tests --gtest_filter="*2_3_4_player_mini_games*"
Bug: b/267390255
Change-Id: Ia3a20af6126534fb6004a46470fe40316512486c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4211592
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Roman Lavrov <romanl@google.com>
|
|
754c923b
|
2023-01-31T16:32:31
|
|
Tests: Add Callbreak trace
Test: angle_trace_tests --gtest_filter="*callbreak*"
Bug: b/267369413
Change-Id: I00910bf3f683eeb35e3a9c2320fb5c62a82a81ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4209863
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
9cc2a0b8
|
2023-01-30T00:00:00
|
|
Remove EXT_polygon_offset_clamp suppressions
Bug: angleproject:7957
Change-Id: I4bd9ff8433964a5d0b997f50cb2ecbe4a6eaa9c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4205887
Auto-Submit: Alexey Knyazev <lexa.knyazev@gmail.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
e4dfdde9
|
2023-01-31T11:35:02
|
|
Tests: Add Age of Origins Z trace
Test: angle_trace_tests --gtest_filter=TraceTest.age_of_origins_z
Bug: b/267289988
Change-Id: Ic7ca3270879b83a47101e58b86bad056a002dbf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4209853
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Mark Łobodziński <mark@lunarg.com>
|