Add a test for fbo with no attachment and then change the fbo size.
There is a bug in vulkan backend that discovered with deqp tests, and
this CL creates a end2end test for that.
Bug: b/246334302
Change-Id: I9b70afb958cda02140bf1007b71095ee3f922e38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3893015
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
If an attachment is invalidated, there is no need to preserve the old
content. NONE means old content is still preserved, DontCare means
discard old content. In this case we do want to discard instead of
preserve old content.
Bug: b/243711628
Change-Id: I242ac86db6993574b5627d61f7185d155beec0ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888938
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Instead, BeginPixelLocalStorageANGLE just accepts a buffer containing
clear values. In WebGL, the clear data can be an array of Numbers. This
makes the API smaller, simpler, and less stateful and bug-prone.
Bug: angleproject:7279
Change-Id: I8b3fa4ae7f20ba3ad72beb01f275acf50eee803c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888960
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
http://ag/19953212 reverts the change from internal branch and this CL
re-adds it via the ANGLE -> roll_aosp.sh -> aosp route so Android.bp
will now match between the branches.
Bug: b/224558229
Bug: b/232149402
Bug: b/246559064
Change-Id: I0e25670717a56985981bc241654122b113e57575
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891548
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
1. The commit 3a9f18f135 caused a link to occur everytime
glUseProgramStages is called. This is redundant since the program
pipeline can be linked just before usage, thus allowing for multiple
stages to be bound before linking the executable.
2. Mark PPO as a dirty object and link the PPO in dirty object handler
3. Early return if the same program is being bound to the same stage
of the pipeline.
4. Added ProgramPipelineObjectBenchmark perf test that switches programs
before a draw and observed following data -
1. vulkan profile -
1. wall_time before patch - 102000 ns
2. wall_time after patch - 38000 ns
2. vulkan_null profile -
1. wall_time before patch - 125000 ns
2. wall_time after patch - 52000 ns
Bug: angleproject:5102
Bug: angleproject:6566
Test: ContextNoErrorPPOTest31.*Vulkan
Test: ProgramPipelineTest31.*Vulkan
Test: ProgramPipelineObjectBenchmark*
Change-Id: Idbc2fcb4875bbd040e9ec847eb2a8f96f287173c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3830170
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Add support for extending the bounding box when there are updates that
enclose the current bounding box.
Bug: angleproject:4691
Bug: angleproject:7389
Test: Texture2DArrayTestES3.TextureArrayPruneSupersededUpdates*
Change-Id: Ie7e3cc28f17213361b1be407dbb2d984865fe6bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3712897
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Overview
Using "EbpUndefined" when create the inputAttachmentType(TType) causes
the maximum precision in SPIR-V. The maximum precision is not required
and may degrade performance. This CL makes the creation using a
proper precision based on declared variables.
Tests
===== confirm the precision in SPIRV =====
- Using genshin_impact trace to verify
- Using RenderDoc
- Executable Path: com.android.angle.test/#DefaultActivity
- Intent Argument: -e org.chromium.native_test.NativeTest.StdoutFile
/sdcard/chromium_tests_root/out.txt -e
org.chromium.native_test.NativeTest.CommandLineFlags
"--gtest_filter=TracePerfTest.Run/vulkan_genshin_impact"
- Capture frame 9 with the drivers built with and without CL.
- Magically found one vkCmdDrawIndexed(396, 1) that "TextureViewer" has
"ANGLEInputAttachment" as inputs. In "Pipeline State", the "FS" uses
shader module 9556
- then compare the shader module 9556 sources from the 2 drivers.
Confirmed the differences:
- GLSL (SPIRV-Cross): https://screenshot.googleplex.com/A8gWMGR2EmnZwHv.png
- SPIR-V (RenderDoc):
https://screenshot.googleplex.com/5yqKc4pWL3qLaEj.png
Bug: angleproject:7281
Change-Id: I86b315ddf057325638e58d5a0d7f8b203d8b74f8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3866573
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
These binaries were updated using update_flex_bison_binaries.py.
Please see instructions in tools/flex-bison/README.md.
flex is at version 2.6.4.
bison is at version 3.8.2.
Bug: None
Change-Id: Ia3189b678fc8ddacdf14bbfd3f4750f938d32ac3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3886807
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Add a test that draws a texture with a shadow effect by using fog and
blending functionality. This fails on all ANGLE configs like
ES1_Vulkan and ES1_OpenGL but succeeds on native drivers using ES1_EGL.
Test: angle_end2end_tests --gtest_filter="FogBlendTest.ShadowEffect/*"
Bug: angleproject:7598
Change-Id: I454735c3257e6986a6b1af1bc993a609e776419b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3876222
Commit-Queue: Lubosz Sarnecki <lubosz.sarnecki@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Query the underlying Vulkan ICD for the list of supported colorspaces
on platforms that support VK_GOOGLE_surfaceless_query extension.
Expose corresponding EGL colorspace extensions.
Bug: angleproject:7630
Change-Id: If9843ee55100fff5a8cec4ecf2ff27c746c5b205
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3873767
Reviewed-by: Trevor Black <vantablack@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
DComp usually gives us an offset at (0, 0), but this is not always
the case. It is valid for DComp to give us an offset into a texture
atlas, for example with some video overlays. If we do have an offset,
gl_FragCoord must also be offset to point to the correct pixel in the
surface.
Bug: chromium:1269749
Change-Id: I3ca39860d176bcf9f1d520d781cfed2d1d1ad1dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827081
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Rafael Cintron <rafael.cintron@microsoft.com>
Add a section with instructions on adding
SPIRV-Cross in RenderDoc shader viewer tools.
This allows us to view GLSL shader source code
in renderdoc captures.
Add a link on how to download RenderDoc
Android Dependency on Linux.
Bug: angleproject:6509
Change-Id: I5f1cbff55a8b43983dbc1c965314e1ad2213a399
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3888579
Reviewed-by: Solti Ho <solti@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Includes a fix for passing nullptr to memcpy, needed after
https://chromium-review.googlesource.com/c/chromium/src/+/3830738e7211d5299..3c60121d06
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/chromium-angle-autoroll
Please CC ianelliott@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in Chromium: https://bugs.chromium.org/p/chromium/issues/entry
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
Changed dependencies
* build: a802f7afd7..efa2ea67b3
* buildtools: 8e147cfcf5..a7f5ad05c4
* buildtools/linux64: git_revision:00b741b1568d56cf4e117dcb9f70cd42653b4c78..git_revision:b4851eb2062f76a880c07f7fa0d12913beb6d79e
* buildtools/mac: git_revision:00b741b1568d56cf4e117dcb9f70cd42653b4c78..git_revision:b4851eb2062f76a880c07f7fa0d12913beb6d79e
* buildtools/third_party/libc++/trunk: 0bcb3f7dbb..60f90783c3
* buildtools/third_party/libc++abi/trunk: 6285577a9d..5c3e02e92a
* buildtools/third_party/libunwind/trunk: 42aa6de554..60a480ee18
* buildtools/win: git_revision:00b741b1568d56cf4e117dcb9f70cd42653b4c78..git_revision:b4851eb2062f76a880c07f7fa0d12913beb6d79e
* testing: 0749f30ea7..f76677edac
* third_party/abseil-cpp: d8ee101941..200c7ed65e
* third_party/android_build_tools/bundletool: qqdjz9M6hbP7D7jMsRGwpvibSWdEJn1Tnm-R3B6M6bEC..IEZQhHFQzO9Ci1QxWZmssKqGmt2r_nCDMKr8t4cKY34C
* third_party/android_deps: efda6e3f14..cf9befc4c4
* third_party/catapult: https://chromium.googlesource.com/catapult.git/+log/{catapult_..861067db62
* third_party/depot_tools: 600fdf58c9..2d25dbd149
* third_party/fuchsia-sdk/sdk: version:9.20220902.1.1..version:9.20220912.0.1
* third_party/r8/d8: ODjYnRPfjz6Ml42YJB5QKVfn7qaVLKdc-eZ01g3enDcC.._g2g6FSXHfosnO9NWkIZJwr76tobLOVx2AG7QNdfpvsC
* third_party/zlib: 9f4113d3ba..05e137d33c
* tools/clang: 06b66e0116..2a5ebae0f7
* tools/luci-go: git_revision:3226112a79a7c2de84c3186191e24dd61680a77d..git_revision:c93fd3c5ebdc3999eea86a7623dbd1ed4b40bc78
* tools/luci-go: git_revision:3226112a79a7c2de84c3186191e24dd61680a77d..git_revision:c93fd3c5ebdc3999eea86a7623dbd1ed4b40bc78
* tools/mb: 092b87beee..52ce428d8a
* tools/perf: e68727adf5..386c784a62
* tools/skia_goldctl/linux: BcL4zQgD0tZoFzhWm37NnERAPLdbeERfbY_SSBQ3ba4C..XXyhhDL9TuGs6KyzXXakE4eaVnpYMXz8DKbnU5Ew3aAC
* tools/skia_goldctl/mac_amd64: 8DiQ6WFPrEn56-jwyQmU4EMXFvf7_-8SYjVD2hHHmZMC..FyHlZdO9A-oMbWsU1rxpkz2dOtU4aOPBSJx9YQF_CLoC
* tools/skia_goldctl/mac_arm64: lJ8l4RCPxwrg_f-Z9Lnu3Ma3uRlbRbAcdQA7xwpIzNUC..K3uVqbmFCdJI0hGDotZSM9kPdXQNp7oIGy7pykJInqAC
* tools/skia_goldctl/win: 1l0XEVvr2qVUdGYrjLN9Gkt6qfv8KsXM52B8MKDShmEC..DCjjZXPp2-aMyq92DomOu_HdsBScNrumV-n3sIRYCfAC
Clang version changed llvmorg-16-init-3375-gfed71b04:llvmorg-16-init-4141-gf48931f3
Details: 06b66e0116..2a5ebae0f7/scripts/update.py
Bug: angleproject:7626, angleproject:7649
Change-Id: I1600219f412b421de6c8a63836e34d15ff0004c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3890101
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Patch by David Kilzer <ddkilzer@apple.com>.
They have the same include guard and it does not match the filename.
Bug: angleproject:7650
Change-Id: I8f6c035e5f397a36744d22a2f4b58063e241b8b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3891372
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Speculative fix for crashes seen when uploading texture data on AMD.
Port of the unpackLastRowSeparatelyForPaddingInclusion workaround from
the GL backend.
Currently constrained to client data 2D uploads to non-compressed
textures.
Bug: angleproject:7573
Change-Id: Idd036b92619d309e5b2a8062043e8644f4d5b2e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3870655
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
"" is an empty C string in Objective-C++.
We need to use the proper constructors to
convert a C string into std::string.
Bug: angleproject:7646
Change-Id: Ided31dcbd9434cbae3ea828e29767bb3899e0f56
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3887639
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Setting the attribute location based on the input declaration
results in a discrepancy with MEC when recording the context state,
because if a location was never set explicitely, the captured
context state will hold no attribute location information, but
since calls were recorded to set the default attribute locations,
the context state recorded during replay will contain these extra
entries.
To avoid this, only record the attribute locations that were
explicitely set.
Bug: angleproject:7564
Change-Id: Ib9d6c7b098935d199921e0fe5c0ef985e6187f1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827345
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
To work in Chromium requires a bootstrap step
so added a link to those steps
Bug: angleproject:7586
Change-Id: Ifc590f565d7e707c98479a9a2dd21378662d534f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3842861
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Increases compiler cache hits especially in cases where the file is run
during build.
Bug: angleproject:7642
Change-Id: I769dae2d7cca2cf1e238531f4cb356bad41b06dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3880323
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Keyboard interrupts are handled as exceptions in Python, so unguarded
except statements can prevent a program from properly terminating.
Bug: angleproject:7639
Change-Id: I54ee754a40457b924eda0a6c8074f575263528ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3856650
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Sean Risser <srisser@google.com>
We've seen unexplained errors about timestamps and share groups
from Qualcomm drivers. They don't appear to affect rendering at all
and don't give enough information to be actionable.
Bug: chromium:1348684
Change-Id: I3f99803c6451c0fe762689d76df3293864bbcda6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3846052
Auto-Submit: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Peng Huang <penghuang@chromium.org>
A few tests in RobustResourceInitTest are testing for out of bounds
values but RobustResourceInitTest is only checking
GL_ANGLE_robust_resource_initialization which does not do anything
for out of bounds access.
I moved them to the RobustBufferAccessBehaviorTest.
Bug: angleproject:7638
Change-Id: If542ce2f1711e4b1980bf52cabfa3cff71480536
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3880833
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
The test makes a buffer and puts in
[red, red, red, zero, zero, zero]. It then maps the
zero, zero, zero portion with
glMapBufferRange(...GL_MAP_UNSYNCHRONIZED_BIT...).
It writes green over the zeros, and unmaps.
But, because GL_MAP_UNSYNCHRONIZED_BIT was passed in there
is no guarnatee the original values have been put in the buffer
yet. If they have not then the greens will be over-written.
Bug: angleproject:7640
Change-Id: I7d3bf54afb01bca3cc440f998ae1fad0ce1e5e8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3881166
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
EGLSyncVk::mAttribs is a stack allocated variable in the parent scope.
Its usage is currently safe because it is only used in
EGLSyncVk::initialize but it is dangerous to have this member present.
Bug: angleproject:7637
Change-Id: Idaf2f1a0306e55a5fe00e55c9e72cd71005e3dce
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3876889
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Enable VK_EXT_swapchain_colorspace instance extension when supported.
This expands the number of colorspaces that can be supported by EGL.
Bug: angleproject:7630
Change-Id: I10ac62dba80fc7a443ab1cb7be331717855ea74a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3881164
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Flush is was doing WaitUntilScheduled. I'm not sure why.
This change increases the Motionmark "Leaves" test speed
by about 50% (It's currently 2.5x slower than OpenGL)
Bug: angleproject:7626
Change-Id: I9ff7c254957581ac2062906d8d715849365b9f67
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3863951
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Qualcomm drivers generate errors if a bound array buffer is
mapped during a draw call even if it is not used by the draw.
Bug: chromium:1345777
Change-Id: I0639caf5d74c8cbdc7245324fdcb136bd3d51b86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3871333
Reviewed-by: Peng Huang <penghuang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Vasiliy Telezhnikov <vasilyt@chromium.org>
This is a reland of commit bf9c815263
Original change's description:
> Not recreate Framebuffer for eglMakeCurrent() call
>
> Right now, in eglMakeCurrent() call, ANGLE always release the
> default framebuffer object associated to the current context,
> and create a new default framebuffer object for the new current
> context. It impacts chrome performance, since chrome call
> eglMakeCurrent() a lot. With this CL, the default framebuffer
> will be created with gl::Context. When the surface is changed
> by eglMakeCurrent() call, ANGLE will detach the previous surface
> from the associated framebuffer, and attach the new surface to
> the next current context's default framebuffer.
>
> Bug: chromium:1336126
> Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
> Commit-Queue: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1336126
Change-Id: Iade19004a4335ac7bc6ca176a3c14d34afff8c9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877405
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>