|
6c41793f
|
2022-12-20T15:20:50
|
|
Vulkan: Use read/write depth/stencil layouts
This allows an application to have depth in read-only feedback loop
while stencil is being written to for example.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: Ic2e11d32da7c7e3a7f3cd86dbafc5c56a0dbbfd7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116730
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
067ace47
|
2022-12-21T00:00:00
|
|
Add ANGLE_clip_cull_distance extension
Added an extension spec.
Trivially exposed it on GL, Vulkan, and D3D11.
Adjusted tests and validation to allow no cull
distance support for this extension string.
Removed extra built-in variable definitions.
Bug: angleproject:7904
Change-Id: Ic60772dfe28132c316eaa29aadc1afd66e3b0fa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114290
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
295f6830
|
2022-12-21T10:56:03
|
|
Vulkan: bufferRead should accommodate deferred endRenderPass
ContextVk::onSyncObjectInit() will request end of current renderPass but
deferred (in this case, mRenderPassCommandBuffer is nullptr but
mRenderPassCommands->started() still returns true). The next draw call
will actually end current renderPass and starts a new renderPass. But if
next call is glCopyBufferSubData, it will not actually trigger
endRenderPass. This CL modifies
OutsideRenderPassCommandBufferHelper::bufferRead logic to accommodate
this deferred endRenderPass scenario by checking
mRenderPassCommands->started() instead of hasStartedRenderPass so that
the answer to "if this buffer been used by current renderPass or not"
will return correct result.
Bug: angleproject:7903
Change-Id: Ie5c9977ccf083e7d355a2cd8fd08e9077049ee9a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4119692
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
216cd10b
|
2022-12-22T11:29:35
|
|
Vulkan: Dsiable enableAsyncPipelineCacheCompression
There was intermittent failure on bots due to this. Re-disable it for
now.
Bug: b/246683126
Change-Id: Iba5c0bcacb87336d187b952b47804885ce569f6d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4120245
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
cc34aa73
|
2022-12-19T14:03:27
|
|
Move BinaryStream to common and expose ShaderState to compiler
This is a refactor change in preparation for adding support for
glShaderBinary.
Move BinaryStream to common so that it is accessible by both libANGLE
and the Compiler.
Extract members that hold the result of compilation from ShaderState
and move into new CompiledShaderState struct.
Move helper functions & classes relevant to ShaderVar serialization to
the CompiledShaderState header.
Tests: EGLBlobCacheTest*
Bug: angleproject:7833
Change-Id: I7ec575247eccb3afbc6ab6bfa24d36e69d4576f5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4080998
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
626b10c1
|
2022-12-20T20:22:19
|
|
Vulkan: Add read/write depth/stencil layouts
This CL only adds the layouts in the list, but does not use them. The
layouts are renamed for consistency in this change.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: I47986c7252d32626e9f26c6670c0a4e3496fe0c8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116736
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
301ed545
|
2022-12-20T20:16:22
|
|
Vulkan: Pass context to layout getters
In preparation for a change that optionally uses read/write
depth/stencil layouts. Context is used to test for the
supportsMixedReadWriteDepthStencilLayouts feature to know whether those
layouts are supported or that a fallback must be chosen.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: I1453dc9d060453a3806ad0f261b94368fe01fb29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116735
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d6dea33b
|
2022-12-19T13:39:34
|
|
Vulkan: Remove CommandQueue::mGarbageQueue
With recent work of per active context queue serial, mGarbageQueue
behaves almost identical to normal mSharedGarbage now. This CL removed
mGarbageQueue and added garbage into Remove mSharedGarbage instead.
Bug: b/263166501
Change-Id: I6bce47b4535283e7bd0f0c8823b9629cc25f9d94
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4117712
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
1e32988c
|
2022-12-21T15:53:15
|
|
Revert "Metal: expose Metal backend only on supported GPUs."
This reverts commit 9364246f08d34a378252e517210b68e97282f764.
Reason for revert: iOS build fails
Original change's description:
> Metal: expose Metal backend only on supported GPUs.
>
> Query all the GPUs on the system during ANGLE's initialization, and do
> not expose the EGL_ANGLE_platform_angle_metal client extension unless
> all of them support the required GPU families or feature sets.
>
> Tested locally on a 2015 MacBook Pro with dual Intel Iris Pro and AMD
> Radeon R9 M370X GPUs. The AMD GPU supports Metal GPU family macOS 2,
> but the Intel GPU, only family macOS 1. With this change, Chrome
> properly falls back to using ANGLE's OpenGL backend when
> --use-angle=metal is specified, and renders correctly.
>
> Bug: chromium:1365598
> Change-Id: I2c3533afe733e0d06d7755cae272bbd12aa9e676
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4117716
> Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
> Reviewed-by: Gregg Tavares <gman@chromium.org>
> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Bug: chromium:1365598
Change-Id: Iedbe8978f2a2d39a33359fa236a1d305c284266e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114291
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
9ded03b4
|
2022-12-20T07:09:36
|
|
Revert "Vulkan: Make available GLInternalFormatToGbmFourCCFormat"
This reverts commit 402e7f7a634b1170d0feae52a44168731a7489f9.
Reason for revert: Chromium android-binary-size build failed.
Original change's description:
> Vulkan: Make available GLInternalFormatToGbmFourCCFormat
>
> GLInternalFormatToGbmFourCCFormat() is not available on Linux
> because of the guard with the wrong definition, ANGLE_USES_GBM.
> This also fixes build errors that were occurred after enabling.
>
> Bug: angleproject:7829
> Change-Id: If7c7543270cc127945149927be0fc3ffdd49163b
> Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4022963
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
> Commit-Queue: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: mohan maiya <m.maiya@samsung.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:7901
Bug: angleproject:7829
Change-Id: I256d51f78ff0d3ced9920c3ea1d2bfceba43a1ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4113577
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
9364246f
|
2022-12-19T16:28:44
|
|
Metal: expose Metal backend only on supported GPUs.
Query all the GPUs on the system during ANGLE's initialization, and do
not expose the EGL_ANGLE_platform_angle_metal client extension unless
all of them support the required GPU families or feature sets.
Tested locally on a 2015 MacBook Pro with dual Intel Iris Pro and AMD
Radeon R9 M370X GPUs. The AMD GPU supports Metal GPU family macOS 2,
but the Intel GPU, only family macOS 1. With this change, Chrome
properly falls back to using ANGLE's OpenGL backend when
--use-angle=metal is specified, and renders correctly.
Bug: chromium:1365598
Change-Id: I2c3533afe733e0d06d7755cae272bbd12aa9e676
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4117716
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
91a5635a
|
2022-12-16T00:00:00
|
|
Support arbitrary clip and cull distance array sizes
Removed limitSimultaneousClipAndCullDistanceUsage cap.
Enhanced HLSL translator to support all valid combinations
of clip and cull distances.
Validate that these arrays are sized explicitly or by using
only constant indices; adjusted link program error message.
Enhanced tests to cover all possible combinations of
implicit and explicit array sizes for both built-ins.
Bug: angleproject:4452
Change-Id: I704db6dc3c8951e5ba482a3e4dad09e5b0182f9c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4111645
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
28e7adca
|
2022-12-09T00:00:00
|
|
GL: Implement clip distance state emulation
Pass the current set of enabled clip distances
to vertex shaders via an internal uniform and
dynamically set disabled elements to zero.
Bug: angleproject:7880
Change-Id: I709d31dc7ca0606decf49adf674460a941837683
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4094314
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b7ec9d03
|
2022-12-19T12:53:16
|
|
Vulkan: Create RenderPass2 by default
Previously, ANGLE created core Vulkan 1.0 render passes by default and
converted them to render pass 2 objects if necessary. However:
- More and more extensions used by ANGLE require this functionality,
- Upcoming use of VK_KHR_separate_depth_stencil_layouts makes this path
almost always taken.
It's time for ANGLE to default to render pass 2 objects instead,
especially as support for it is becoming practically ubiquitous.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: I6970a017040a2fdc001d4f2e53c1a0d5968a37cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116675
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b227cf2f
|
2022-12-19T12:43:37
|
|
Make pending memory allocation type atomic
* This is to prevent TSAN failures due to data race in
setPendingMemoryAlloc().
Bug: b/262029018
Change-Id: I5f2f13ecbe762102692bb910a5baa5b25fa42abe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4115479
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
abcbd54c
|
2022-12-19T14:38:49
|
|
GLES1: Optimize texcoord varyings
Use vec3 instead of vec4. Either 2 or 3 components are used based on 2D
or cube map textures. On hardware that can pack the varyings, this can
reduce pressure on varyings.
Additionally, this is a minor optimization to texture coord calculation
(when !draw_texture) as one row of the 4x4 matrix multiplication doesn't
need calculation.
Bug: angleproject:6644
Change-Id: I2abac511a0ced575c089dfb3a3b506f51a111a54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4116676
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
91d6c3e6
|
2022-12-05T17:12:49
|
|
GLES1: Reduce pressure on vertex input / varyings
Typically, not all texture units are used. This change ensures no
vertex input / varying is consumed when fewer than maximum textures are
used.
Bug: angleproject:6644
Change-Id: Iea0e35dc12ec4fcb342818786f307286bf7fc5bb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4081116
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
cd540095
|
2022-12-12T13:13:14
|
|
Vulkan: Add memory log at allocation error
* Added logging memory allocation information in handleError() in the
event of an error from ANGLE_VK_TRY.
* Used for the handleError() in ContextVk.
* Updated the name and message of the function to log allocations.
* checkForCurrentMemoryAllocations()
* Added logging memory heap stats, including budget and usage.
* logMemoryHeapStats()
* In the renderer, added the feature flag indicating whether the
platform supports the memory budget extension.
* Uses VK_EXT_memory_budget.
* Added the enum class MemoryLogSeverity, which is used to select
the severity level of the memory log.
* Added logging pending memory allocation information.
* logPendingMemoryAllocation()
* If the last unsuccessful memory allocation was unsuccessful, its
information will be added to the log.
Bug: b/262029018
Change-Id: I97343c1553936aed23d763f3e0c00d495f9ee810
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089531
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Kaiyi Li <kaiyili@google.com>
|
|
6769ef2b
|
2022-12-16T15:34:21
|
|
Vulkan: Bug fix in setupIndexedDraw
Reset ContextVk::mCurrentIndexBufferOffset to 0 after a call to
ContextVk::convertIndexBufferCPU(...) irrespective of whether
the buffer binding is dirty.
Bug: angleproject:7896
Test: DrawElementsTest.DrawElementsWithDifferentIndexBufferOffsets*
Change-Id: I70a63b7e432aaa9f8c647e56bd162312143abd65
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4113446
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
ea36cf1c
|
2022-12-19T09:55:45
|
|
Vulkan: Feature for VK_EXT_rasterization_order_attachment_access
This change just adds the feature. A follow up change will actually
start using the extension.
Bug: angleproject:7899
Bug: b/192477489
Change-Id: I19c078ebe57a7819b3aa3e95d4436cefa34ba85b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4113912
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
5c8c0347
|
2022-12-15T15:46:38
|
|
Vulkan: Remove ContextVk::retainResource and retainImage()
Clean up some retain* APIs. retainImge and retainReadOnlyResource and
retainResource are doing exact same thing, they are consolidated into
just retainResource. ContextVk::retainResource is removed since mUse
can now safely copied from DescriptorSetHelperPool object which tracks
mUse.
Bug: b/262047600
Change-Id: I56ea08696e870826bd94ccb79dd621f35923bc6a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114500
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
1a8bcbda
|
2022-12-17T20:12:41
|
|
Vulkan: Re-enable async pipeline cache sync by default
This is a reland of c7414946b84410bfcc8705759a902577c13d9fc4
The change here is that the program, shader and blob caches are now
reset _after_ the backend is torn down. Otherwise the pipeline cache
sync thread's use of the caches races with that.
Bug: b/246683126
Change-Id: Ifc3d67279de50a2ee2866476aa5df85d4c10d30d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4111972
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
376d309c
|
2022-12-15T09:43:00
|
|
Vulkan: Remove unnecessary usesBuffer() check
There are places that we call setQueueSerial after usesBuffer() check.
This was useful when we had the ResourceList where it is more expensive
to set serial. But now setQueueSerial is cheap (actually is cheaper than
usesBuffer check), so there is no need to do this check any more. This
CL removes the check to further reduce the CPU overhead. Because of
this, mUsedBufferCount will not be accurate, so this CL also removes the
tracking of mUsedBufferCount (was only for informational purpose
anyway).
This CL also removes commandBufferQueueSerial.valid() check in
Resource::usedByCommandBuffer() and turns it into assertion. Some places
in contextVk will ensure we only call it on started renderpass so that
other places that calls usedByCommandBuffer will not need to eat the if
check.
Bug: b/262047600
Change-Id: I6b8004b6aa5b567fa94c0eb56801054f818838b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4112145
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
be9e8e7b
|
2022-12-14T14:13:39
|
|
Add EGL_ANGLE_wait_until_work_scheduled extension
We're changing eglReleaseTexImage so it calls
flushCommandBuffer(mtl::NoWait) instead of
flushCommandBuffer(mtl::WaitUntilScheduled)
and then adding an extension to allow us to
WaitUntilScheduled.
This is because Chrome calls eglReleaseTexImage for
every canvas and having it WaitUntilScheduled per call
is very slow. So instead we'll call eglWaitUntilWorkScheduledANGLE
once which will effectively wait just once.
Bug: angleproject:7890
Change-Id: I87bc9f9a1a7f4a0f99d93736cc3083799e76afeb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4109311
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
c4765732
|
2022-12-16T18:07:18
|
|
Revert "D3D: Remove ResourceSerial"
This reverts commit 214742be91b89087dd26acbae09a070a91730ecc.
Reason for revert: Regression https://bugs.chromium.org/p/chromium/issues/detail?id=1401503
Original change's description:
> D3D: Remove ResourceSerial
>
> The only difference between ResourceSerial and UniqueueSerial (formerly
> Serial) appears to be ResourceSerial is wrapper of object pointer. This
> CL removes ResourceSerial class and switched it to UniqueSerial class
> instead. (We may need to see why it needs to use pointer to initialize
> the serial, that sounds like the exact thing serial try to avoid.)
>
> Bug: b/262047600
> Change-Id: Ic8e1b26d7da9304ff02fd9a7e1b584bb70efcb77
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4102107
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: b/262047600
Change-Id: I757451a487839db17390dde18f1e2bc5eda36d37
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114273
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
25ce2e23
|
2022-12-16T18:16:32
|
|
Revert "Make ANGLE program version only dependent on data that matters"
This reverts commit c303758fbc8d23266be578fae246e5687656b4c6.
Reason for revert: This is causing the Android roller fail: https://crrev.com/c/4072215/comments/6918d7f6_8100d66b?tab=comments
Original change's description:
> Make ANGLE program version only dependent on data that matters
>
> This change introduces a new variable ANGLE_PROGRAM_VERSION
> to track the version of ANGLE source files that affect shader
> program serialization/deserialization. This change include more
> source files than necessary, to serve the purpose of a conservative
> jumping off point. We will narrow down the list of files for
> ANGLE_PROGRAM_VERSION hash generation in the future.
>
> Add a new script program_serialize_data_version.py that will
> be triggered during the build when the related source files changed.
> The script will generate a hash and the hash size from the related
> source files. In program serialization/deserialization and cache
> key generation, we will use this hash value instead of the entire
> ANGLE git hash. When the hash value changed, we know that the
> related source files changed, and we should invalidate the program
> cache and re-generate the blob cache / program binary.
>
> Bug: angleproject:4981
> Change-Id: I2fb609416738d459d3289190c232c2d797ba58e3
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4072215
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Cody Northrop <cnorthrop@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:4981
Change-Id: Ib235d85c79ed54110696ac5413571934890fdc98
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4114274
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
402e7f7a
|
2022-11-11T15:51:55
|
|
Vulkan: Make available GLInternalFormatToGbmFourCCFormat
GLInternalFormatToGbmFourCCFormat() is not available on Linux
because of the guard with the wrong definition, ANGLE_USES_GBM.
This also fixes build errors that were occurred after enabling.
Bug: angleproject:7829
Change-Id: If7c7543270cc127945149927be0fc3ffdd49163b
Signed-off-by: Sungyong Choi <sywow.choi@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4022963
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jeff Vigil <j.vigil@samsung.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c303758f
|
2022-12-14T15:29:15
|
|
Make ANGLE program version only dependent on data that matters
This change introduces a new variable ANGLE_PROGRAM_VERSION
to track the version of ANGLE source files that affect shader
program serialization/deserialization. This change include more
source files than necessary, to serve the purpose of a conservative
jumping off point. We will narrow down the list of files for
ANGLE_PROGRAM_VERSION hash generation in the future.
Add a new script program_serialize_data_version.py that will
be triggered during the build when the related source files changed.
The script will generate a hash and the hash size from the related
source files. In program serialization/deserialization and cache
key generation, we will use this hash value instead of the entire
ANGLE git hash. When the hash value changed, we know that the
related source files changed, and we should invalidate the program
cache and re-generate the blob cache / program binary.
Bug: angleproject:4981
Change-Id: I2fb609416738d459d3289190c232c2d797ba58e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4072215
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
cd367796
|
2022-12-12T15:10:09
|
|
Vulkan: Add assert to ensure never setQueueSerial backwards
This CL add an assertion in ResourceUse::SetQueueSerial to ensure that
we never set a serial smaller than what it already has. If that happens,
we could potentially destroy it while GPU still accessing it. With this
assertion, it exposed a bug that when a buffer is read accessed by a
renderpassCommands and then read accessed by outsideRenderPassCommands,
we were incorrectly setting the queueSerial with outsideRP's serial,
overwriting the queueSerial already set by renderPassCommands. To fix
this, this CL detects this case and keeps the queueSerial set by
renderPassCommands.
Bug: b/262047600
Change-Id: I51b17ab4a93bccd0d0b079784af96cef9d79f16f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4099804
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
7fe33996
|
2022-12-02T00:04:28
|
|
Capture/Replay: Regen/Restore shaders and programs
Add missing functionality that can recreate shaders and programs
that are deleted during the run.
Test: Plants vs. Zombies Heroes MEC
Bug: angleproject:5968
Bug: angleproject:7848
Change-Id: I2d41ebe9df1e2ad1beef831acd72fd3f06f4eb1f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4060241
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a703eea4
|
2022-12-09T15:55:03
|
|
Vulkan: Remove Serial::valid() check
QueueSerial right now checks if serial is valid or not in various
comparison. This CL removes valid() method from class Serial and rely on
the fact that default constructor always constructs kZeroSerial and
kZeroSerial is always smaller than any serial, i.e, always appears as
flushed, submitted and completed. This removes one branch from critical
code path where we try to detect if a buffer/image is used by a
renderpass or not etc.
Bug: b/262047600
Change-Id: Ic76fe1409d9911dc7eb86107c9a930d8bb5eaa05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089848
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
412dd368
|
2022-10-05T23:51:52
|
|
Vulkan: Use vkCmdClearAttachments for unmasked scissored clears
Building on work by Tim Van Patten <timvp@google.com>
In https://chromium-review.googlesource.com/c/angle/angle/+/3388635, not
only were unmasked scissored clears made to use vkCmdClearAttachments,
but also scissored clears could use loadOp=Clear. While this is
potentially faster, it comes with a number of complications.
This change only does the former. Unfortunately, due to a Qualcomm
driver bug that forces ANGLE to avoid vkCmdClearAttachments, code
simplification in the draw path cannot be made.
Bug: angleproject:5194
Change-Id: Iec4184a09ca7fd09e3e8148c53db503512e6b8f0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3935893
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c3209b13
|
2022-12-13T16:05:51
|
|
Vulkan: Remove GlslangWrapperVk
This class was just forwarding functions, and had over time become too
thin.
Bug: angleproject:7220
Change-Id: I7ae84ba017478d5c36b1e6d5f98a52d6b1cffb66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4103744
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
40c17b58
|
2022-12-13T15:35:23
|
|
Vulkan: Move SPIR-V transform to vulkan/
No longer used by metal/.
Bug: angleproject:7220
Change-Id: Idb3a6369fefbcf87e7993daa652c8702ec53c20f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4104002
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
77c95de4
|
2022-11-16T21:12:28
|
|
Vulkan: Threaded monolithic pipeline creation
With this change, once a pipeline is created out of libraries, a task is
scheduled (if necessary) to asynchronously create a corresponding
monolithic pipeline. Once the task is complete, the linked pipeline
handle is replaced by the monolithic one, gaining back any performance
that might have been lost due to the use of libraries.
Bug: angleproject:7369
Change-Id: I525fb1e09f8bedc61b9dbef19f9cce7026ff9c53
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031151
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
2072aea9
|
2022-12-13T15:23:49
|
|
Metal: Remove references to GLSLANG
Bug: angleproject:7220
Change-Id: Ifae4dc427e34cdd3ec17b8f897c7dec59c779633
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4104001
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
69d9f077
|
2022-12-13T15:10:36
|
|
Metal: Remove references to ShaderInterfaceVariableInfoMap
Bug: angleproject:7220
Change-Id: Ib78daa77779258aa450067d891c6af4ee4877446
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4104000
Reviewed-by: Gregg Tavares <gman@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
214742be
|
2022-12-13T10:43:52
|
|
D3D: Remove ResourceSerial
The only difference between ResourceSerial and UniqueueSerial (formerly
Serial) appears to be ResourceSerial is wrapper of object pointer. This
CL removes ResourceSerial class and switched it to UniqueSerial class
instead. (We may need to see why it needs to use pointer to initialize
the serial, that sounds like the exact thing serial try to avoid.)
Bug: b/262047600
Change-Id: Ic8e1b26d7da9304ff02fd9a7e1b584bb70efcb77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4102107
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
b19d17b8
|
2022-12-09T14:38:08
|
|
Vulkan: Split Serial class into UniqueSerial and Serial
This CL splits Serial class into two classes: UniqueSerial and Serial.
UniqueSerial supports the object unique serial usage where there is ==
and != operator but no > or < comparison. UniqueSerial can have invalid
value, but Serial will not have invalid value (in next CL). The main
reason is for next CL we can further optimize out the invalid value
check in the QueueSerial comparison.
Bug: b/262047600
Change-Id: Ieaed2a0d5546b012a6d63aa18b6006595e4aee1b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4093557
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
22d73114
|
2022-12-13T09:53:34
|
|
Vulkan: Remove unnecessary pipeline library retain
Vertex input and fragment output partial pipelines are kept alive until
context destruction, so there's no need to retain them.
Bug: angleproject:7369
Change-Id: I8cbe5b9f70845bb5d9348f11889f64a6a94a6b87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4100407
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
816505f9
|
2022-12-13T12:35:50
|
|
GCC: Make some operators of QueueSerial non constexpr
Fix build breakage for GCC because of calling non constexpr function
from a constexpr function.
The error example:
third_party/angle/src/libANGLE/renderer/serial_utils.h:214:40:
error: call to non-'constexpr' function 'rx::Serial
rx::AtomicQueueSerialFixedArray::operator[](rx::SerialIndex) const'
Bug: chromium:819294
Change-Id: Ic09be54ce9418ab3f7d947eaa27c97b55c3c2bab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4098527
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
89cd8583
|
2022-12-12T11:23:59
|
|
Vulkan: Clean up Resource class
Resource::retainCommands() API name no longer make sense. This CL
removes retainCommands and retainReadOnly and retainReadWrite APIs and
replaced with setQueueSerial and setWriteQueueSerial call directly.
This CL also merges some of single inline functions to minimize the
file, sine the class is small anyway.
Bug: b/262048658
Change-Id: I9d16b82c79b27f3285311393601705a4ee7f6d8a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4098005
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a1be7188
|
2022-12-12T16:11:34
|
|
Vulkan: Keep referenced pipeline libraries alive
As required by the spec, it's not enough to keep the linked pipeline
alive. With this change, the serials of the invidual libraries are
updated every time the serial of a linked pipeline is updated.
Bug: angleproject:7369
Change-Id: Iedc98a427d988d00b4e8745964d9827fdf51ea7f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4098744
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f3ebb2ca
|
2022-12-08T17:02:12
|
|
Vulkan: Better mUse tracking for DynamicallyGrowingPool<Pool>
This is used only from DynamicallyGrowingPool<Pool>::onEntryFreed to set
the its tracking QueueSerial. There is better way to do this now with
per context serial. We can simply merge the QueryHelper's mUse into the
pool instead of setting pool's use to the current queueSerial. The
benefit of doing that is to possibly allow pool gets reuse/freed earlier
(i.e., more accurate tracking). This CL switches it to more accurate
tracking and removes mCurrentSerial from Context.
This CL also removes unused DynamicSemaphorePool class.
Bug: b/262054987
Change-Id: Iac3e2495cc0e3623ba63e9da7f32ad6e9c223467
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089847
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
684ff60b
|
2022-06-21T10:52:31
|
|
Vulkan: Add shared ring buffer cmd alloc feature
* Added RingBufferAllocator.cpp with implementation.
* Main classes:
* RingBufferAllocator (fast allocation with bulk deallocation)
* SharedRingBufferAllocator (wrapper to help with shared use and
multiple threads)
* Implemented "angle_enable_vulkan_shared_ring_buffer_cmd_alloc"
feature. (Disabled by default)
* Details (from the original CL)
* The angle::PoolAllocator replaced with
angle::RingBufferAllocator.
* Before, there was separate angle::PoolAllocator per each
CommandBufferHelper. Now, a single angle::RingBufferAllocator
is shared between multiple CommandBufferHelper objects.
* Commands data from multiple CommandBufferHelpers is
tightly packed without fragmentation.
* Significantly less memory overhead, observed with enabled
async queue.
* Moved the parts of the code related to the allocators into the
classes in the new AllocatorHelperPool and AllocatorHelperRing files
for better management. The allocator can be switched by changing the
following BUILD flag:
`angle_enable_vulkan_shared_ring_buffer_cmd_alloc`
* It is connected to the following macro:
ANGLE_ENABLE_VULKAN_SHARED_RING_BUFFER_CMD_ALLOC
* The two main allocator classes in each file are aliased as:
* SecondaryCommandBlockAllocator (in CommandBufferHelper objects)
* SecondaryCommandBlockPool (in SecondaryCommandBuffer)
* Also added placeholder functions for VulkanSecondaryCommandBuffer.
* Added descriptions regarding the two allocators.
* renderer/vulkan/doc/Allocators.md
Credit: Original CL authored by Igor Nazarov <i.nazarov@samsung.com>
Bug: angleproject:6401
Bug: b/256666069
Change-Id: I0f24793eef6334bf4ff8e327b9665338807dad37
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3715968
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
f8980c98
|
2022-12-08T11:51:42
|
|
Vulkan: Make ReadWriteResource subclass from Resource
To simplify the code slightly. The main reason for this is that the two
class variables of ReadWriteResource totally does not make sense:
mReadOnlyUse actually manes any usage, read or write. mReadWriteUse
actually means write usage.
Since Resource class's mUse means any access, subclass ReadWriteResource
from Resource class makes more sense since mUse means exact same thing
in both classes.
This CL also changes ReadQriteResource::mReadWriteUse to mWriteUse.
Bug: b/262048658
Change-Id: I0e3172a70b8cb6a6481045c46690b69fbfe9523c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089983
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
6830b7d3
|
2022-11-23T11:51:28
|
|
Vulkan: Use finishQueueSerial for queueSubmitOneOff
Right now for oneoff submission we are creating a fence and pass in the
fence and then wait for fence outside the normal wait code path. This
creates a problem that the command buffer and garbage clean up code does
not gets run and may end up hitting assertion. This might be necessary
before because complication with ResourceList. With recent work that
removes ResourceList, this can be much simpler now. This CL removes the
fence creation and wait in the oneoff submission code path (except the
external fence) and switch to finishQueueSerial call.
Bug: b/255414841
Change-Id: I2b16c187becbda9c2397685c7212abac994e8dc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4053261
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
1219f55a
|
2022-12-07T16:19:37
|
|
Vulkan: Remove Resource::isCurrentlyInUse
Due to header file include order, this function can not directly
made inline. This CL removes the function and replace it with
renderer->getUnfinishedUse() to reduce one extra function call of one
line function.
Bug: b/262048658
Change-Id: Ied33b63d0ec88336a5ce42cf7726f16b2b883b86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089623
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
798b97b8
|
2022-12-07T15:37:51
|
|
Vulkan: mapRangeImpl should call flushImpl if unflushed write
BufferVk::mapRangeImpl() want to ensure any GPU write command has been
flushed and finished. Right now it calls flushImpl if there is any
unflushed access. It should only need to flush if there is any unflushed
*write* command. This CL changes check of any access to any write
access.
This CL also inlines isCurrentlyInUseForWrite/finishGPUWriteCommands and
removed these two single line function calls.
Bug: b/261772793
Change-Id: I1628ec31eaceb87f82e654cb1f317570ff2f6c12
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4086972
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
702018d2
|
2022-12-08T13:29:24
|
|
Vulkan: Make PipelineHelper go through normal collectGarbage
Right now there are two different type of garbages. Objects like buffer
or VkImage that can be used by different contexts and are GPU tracked as
they are been used. These objects goes to RendererVk::mSharedGarbage.
The one time use objects or objects are not been tracked as they are
been accessed, they add to the context's garbage list and their mUse
gets updated when commands gets submitted. With new per active context
queue serial, the update of mUse can be immediate and low cost ( write
to an entry in the array), so there really isn't a good need to keep
two garbage list. This CL only deals with PipelineHelper object that
makes it goes through general collectGarbage code path instead of
ContextVk::mCurrentGarabge, since the PipelineHelper object is already
mUse tracked properly.
Bug: angleproject:7862
Change-Id: Ie77229683828590546f06938add057cf5610835b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089984
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
55670895
|
2022-12-08T10:50:27
|
|
Vulkan: Move desc set updates cache to share group
This ensures that if one context batches updates to a descriptor set,
that other contexts in other threads are able to flush them if
necessary. This is necessary as descriptor sets are themselves shared
between contexts.
Bug: b/261552549
Bug: angleproject:7881
Change-Id: Id1a895b05fe31d118e8fb3fa64e5ccd67cff7923
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4088904
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
|
|
fd75686e
|
2022-12-07T16:40:54
|
|
Vulkan: Fix EGL image queue change vs threads
ANGLE records commands (a queue transfer and layout transition) when an
external image is bound to a texture or a renderbuffer. If another
thread starts using these resources, the recorded commands should have
been flushed. The application is not required to synchronize between
the threads in this case (or at least, there are applications that
don't).
Bug: b/261552549
Change-Id: I9f345316269baf5f10576dbef73b86924efd5c6f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4088903
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yiwei Zhang <zzyiwei@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
0103213e
|
2022-12-05T00:00:00
|
|
GL: Support clip and cull distance redeclarations
* Fixed gl_PerVertex qualifier string.
* Updated ValidateClipCullDistanceTraverser to output
redeclared array sizes and maximum constant indices.
* Made DeclarePerVertexBlocks available for non-Vulkan
outputs.
* Updated DeclarePerVertexBlocks to remove gl_ClipDistance
and gl_CullDistance redeclarations.
* Enabled DeclarePerVertexBlocks for ESSL output when
gl_ClipDistance or gl_CullDistance are redeclared.
* Updated ESSL output to use 3.10 shading language version,
when the context has GL_EXT_clip_cull_distance enabled.
* Updated ESSL output to enable GL_EXT_shader_io_blocks
when gl_ClipDistance or gl_CullDistance are redeclared.
* Updated extension exposure conditions.
* Fixed typos in ParseContext.
Bug: angleproject:7763
Change-Id: Ib87368a1953ad546a407d634d8b00f71cf92c40c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4083705
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f4e64938
|
2022-12-07T13:01:15
|
|
Vulkan: Remove CommandQueue::mQueueSerialMutex
This mutex lock is no longer used and needed, thus removed in this CL.
Also removed unused BufferAccess enum class.
Bug: b/261737134
Change-Id: I7391e84c5b2abcd87de6ce9e66ba85f81ff7dce3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4086934
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
db9ffea3
|
2022-12-08T22:08:51
|
|
Vulkan: Remove the unused shadowBuffer feature
Bug: angleproject:4339
Change-Id: I4f4524ba597af25bd6da3792bd7a85ae1b52962e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4089448
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
02cc4cd5
|
2022-12-07T12:03:26
|
|
Vulkan: Remove ImageHelper::mImageAndViewGarbage
This was introduced in crrev.com/c/3449450. At that time this is
necessary, because we can not copy mUse for immediate view garbage
collection. Now with recent work, mUse is copyable, we no longer need to
accumulate the view garbage. They can be released immediately with a
copy of image's mUse.
Bug: b/261737134
Change-Id: Ic4393f8c4ee7c0e3be4669a0a557507c909a77ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4087323
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eb1a13d8
|
2022-12-06T21:56:42
|
|
Improve PLS load and store op tokens
Define more new tokens that are more clearly named, as opposed to
recycling tokens that were meant for a different purpose.
Bug: angleproject:7279
Change-Id: I840e5ea168235c49eec2693b2231c2d329027b0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4082057
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
f7cf3226
|
2022-12-08T10:08:56
|
|
Capture/Replay: Only create active secondary contexts in MEC
This finalized the fix attempted in
b432c84c2b8cb6d20873e2b33b6684bee76db90d
Capture/Replay: Fix collecting the initialized contexts
Bug: angleproject:7858
Change-Id: Ie2bbcdb3f23fe4970ce3a9bb46df6f60fe6c8ab6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4084926
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
1193b664
|
2022-10-11T01:00:40
|
|
Vulkan: Use VK_EXT_pipeline_protected_access
This extension allows pipelines to be restricted to protected or
unprotected command buffers only.
Bug: angleproject:7714
Change-Id: Id07be4c2ffd7ca19b8b4a2a869828bc11e89e467
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3943535
Reviewed-by: Charlie Lao <cclao@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
7e378da9
|
2022-12-01T16:36:08
|
|
Vulkan: Remove synchronous commands from CommandProcessor
Some command tokens in CommandProcessor are doing synchronous calls. For
example, finishResourceUse() and waitIdle(). They are inserting a token
and then wait for CommandProcessor to drain. This CL removes these
commands from CommandProcessor and it just ask CommandProcessor to drain
and then call into mCommandQueue to finishResourceUse or waitIdle. This
is a minor clean up for now, but in future CL we will also avoid
waitForWorkComplete if the mUse has already been drained from
CommandProcessor.
Bug: b/261098465
Change-Id: I7672a9c0b1e477ea3537652cd83350aa97f7caa7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4072223
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
fa45eae4
|
2022-12-07T10:39:31
|
|
Vulkan: Remove QueryVk::hasUnsubmittedUse()
QueryVk has a list stashed query helpers and current queryHelper. The
mStashedQueryHelpers are always older than mQueryHelper. When we want to
check if all queryHelpers has been submitted or not, we really only need
to check the last one, which is mQueryHelper. There is no need to check
mStashedQueryhelper. This CL turns that check against
mStashedQueryhelper into an assertion inside finishRunningCommands.
Bug: b/261737134
Change-Id: I2369e6690c46bcd338d4bfcb679a77478d3fdb84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4087321
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
81a3c71e
|
2022-12-01T18:51:39
|
|
Enable tests on Win Intel Optiplex 7080 experimental bot
Suppress failing end2end tests and run single process
Suppress VUID-VkDescriptorImageInfo-imageView-06711
Bug: chromium:1349828, angleproject:7874
Bug: angleproject:7865, angleproject:7866, angleproject:7872
Change-Id: I18c9099af6635cf41f5368960dc1d35d9decc48c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4071925
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
|
|
f551faf7
|
2022-12-01T17:14:14
|
|
Use typed UAV loads for pixel local storage, when supported
D3D11.3 supports typed UAV/ROV loads on some hardware. Check for this
feature and use it when available.
I haven't been able to measure a meaningful performance difference from
this change, presumably because the bottleneck is memory bandwidth, but
it's simple and more consistent with the other backends.
Bug: angleproject:7855
Change-Id: I1713fc12842380ef1a685a6878948bc0293074c5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4072222
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Stephen White <senorblanco@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
ca263d4a
|
2022-11-23T12:11:49
|
|
Vulkan: Remove UsedInRunningCommands
The only difference of UsedInRunningCommands() and hasUnfinishedUse() is
the latter excludes the case where it has not submitted yet. But all
usages are already checked if it has been submitted or not. This CL
removes UsedInRunningCommands and uses hasUnfinishedUse instead.
Bug: b/255414841
Change-Id: I94ef0b63a0c888219cffcdfcecfa0a095fee616b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4053262
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
384ce5cf
|
2022-11-29T14:18:34
|
|
Capture/Replay: Corretly reset the UnpackAlignment at end of MEC
Direcly setting the value doesn't set the relevant dirty state,
use the appropriate setter call instead. This fixes the reported
difference between the UnpackAlignment value stored in the trace
and the one recorded ruring validation for MEC.
Bug: angleproject:7564
Bug: angleproject:7180
Change-Id: Ic931cac9b7e33519e992ae55ee5cab2adb2958ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4063892
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
982755e0
|
2022-12-05T15:32:42
|
|
Suppress VUID-vkCmdDraw-None-06887
* Suppressed the following VVLs:
* VUID-vkCmdDraw-None-06887
* VUID-vkCmdDrawIndexed-None-06887
Bug: angleproject:7861
Change-Id: I15cdf934bd87b5d5219e69eebc9d339d4c180660
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4082149
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3b57c2a8
|
2022-12-05T15:33:43
|
|
Add cmnt for VUID-vkDestroySemaphore suppression
Bug: angleproject:7729
Change-Id: I46d8afe9702b9263a776e9acfa9a3364b7184579
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4080592
Reviewed-by: Ian Elliott <ianelliott@google.com>
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
2d87551d
|
2022-12-05T10:47:40
|
|
Vulkan: Make mLargestAllocatedIndex atomic
TSAN is complaining mLargestAllocatedIndex not thread safe. This CL
makes it atomic and make it mean " the largest queue index we have ever
allocated/seen" so that it will be thread safe. It is impossible to use
a queueIndex before it been allocated. But it is still possible that
some mUse still referencing a queueIndex after it is been released. The
only downside is that we may get into slightly less optimal code path
for GetBatchCountUpToSerials if we ever get into more than 64 queueIndex
and then get bellow 64 again, but that should not a real concern.
Bug: angleproject:7860
Change-Id: I4c99bae24e9d72298253e43f8d108444a8f46ebc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4080590
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bd79968a
|
2022-12-02T14:17:14
|
|
Vulkan: Make sure program's pipeline cache is created
The condition to create or use the program's pipeline cache has become
quite complicated. This change simplifies things by making sure the
pipeline cache is created if and when it's used, instead of guessing how
it will be used and pre-create it.
Bug: angleproject:7369
Change-Id: I7f3558e55f391da8c701e359d2f88d248c820de4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4076508
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8181c056
|
2022-11-22T15:34:48
|
|
Vulkan: Remove RenderPassSerial
RenderPassSerial was introduced to uniquely identify a
RenderPassCommands. With the work of per current context queue serial,
now every started RenderPassCommands already have a unique QueueSerial.
This CL removes RenderPassSerial and use renderPass's queueSerial
instead.
Bug: b/255414841
Change-Id: Id0a87319a9132cdb74aba195f1f05aa31454592b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4049966
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
87815de2
|
2022-12-01T00:00:00
|
|
Adjust GetFramebufferAttachmentParameterivBase validation
GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT state queries
should be allowed for ES 2.0 clients when floating-point
color buffer extensions are enabled.
Bug: angleproject:7853
Change-Id: I4a0a3b336e44648635233be54f598a3ab20cf717
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4071926
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3fedd435
|
2022-12-05T10:15:22
|
|
Overlay: Switch font to RobotoMono
Which has an Apache 2.0 license
Bug: b/260423572
Change-Id: Ibc4b664ddfe844be08ccbac57c27e81951940490
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4079268
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
650f2274
|
2022-12-02T15:51:09
|
|
Vulkan: Remove fixed VVL errors
Bug: angleproject:7338
Change-Id: I4d2b05c5fd5ad505fda2089dbfa2119e8db8ac16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4076515
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
0790a807
|
2022-12-01T23:58:36
|
|
Capture/Replay: Add ResourcesToDelete
For resources that are deleted but not recreated by the app,
we need to skip the delete call we've been making for
ResourcesToRegen. To support this, track which resources need
to be deleted.
We've gotten by without this for so long because most apps
will immediately recreate a resource after deleting it. When
they simply delete starting resources, we can't try to delete
them again.
Test: MEC of multiple apps
Bug: angleproject:4599
Change-Id: I226ba7887e2b7b31d4ce9a75d6a8d0a24f3f32ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4075486
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
58d7ace2
|
2022-11-22T16:08:07
|
|
Vulkan: Add memory allocation log support in debug
* Added a memory tracker to the renderer object to keep track of the
memory allocations and deallocations in more detail.
* This feature is used for debugging only.
* To enable it, set angle_enable_memory_alloc_logging=true in GN args
(added in renderer/vulkan/BUILD).
* It is related to ANGLE_ENABLE_MEMORY_ALLOC_LOGGING in the code.
* The tracker are updated in the memory allocation tracking functions
if the feature is enabled. (The counter is always updated, even if
the feature is disabled.)
* At the end of a RendererVk object, it checks for and logs any
remaining allocated memory from MemoryAllocationType members.
* The data is stored in the map object "mMemoryAllocationTracker".
The key used for it is currently of type angle::BacktraceInfo.
* If angle_enable_unwind_backtrace_support is disabled, or not on
Android, the key is an empty object.
* MemoryAllocInfoMapKey is used as a key to access the allocation
information.
Bug: b/242641395
Change-Id: If701a4bdea2f8738a830ee47e0c7c5cdacf95b87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4050103
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
66a7117a
|
2022-11-30T10:34:30
|
|
GLES1: Use less precision for color and tex coords
Per the GLES1 spec, color and tex coords are satisified by
half-precision floats.
Bug: angleproject:6644
Change-Id: Ia3f8e45d4c35557a25373f9ad572e87708bc2001
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4067803
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2e5ca217
|
2022-11-18T10:44:49
|
|
Vulkan: Let each current context has its own QueueSerial.
This CL makes every current context has its own queueSerial. At context
creation time or when context becomes current, it allocates a QueueIndex
from renderer. When it becomes non-current, it releases QueueIndex for
others to reuse. This way we significantly reduces the max number of
QueueIndexs for reasonable usage. Each CommandBuffer has its own unique
QueueSerial and we use that to determine if a resource is being used by
the given CommandBuffer. The QueueSerial for RenderPassCommands is
deferred until renderPass starts, and when we generate queueSerial for
renderPassCommands, we also reserve a range of serials for
outsideRenderPassCommands so that we can do incremental submission of
outsideRenderPassCommands without need to close renderPassCommands. In
rare situation, if that reserved serials runs out, we also close
renderPassCommands to ensure the ordering of serials matches ordering of
command buffers.
With per current context queue serial, this CL is able to set resource
queue serial as it is being used. This CL completely removes usage of
ResourceUseList class since it was introduced due to deferred setSerial.
This CL also get rid of refCount from ResourceUse since there we no
longer add it to a ResourceUseList. With that, we also able to remove
SharedResourceUse class since access to ResourceUse itself is now thread
safe since we are able to make a copy of it when we add it to
GarbageList.
Because RenderPassCommands now has its own unique QueueSerial as it
encodes command, we can use it to detect if a resource is being used by
it or not, thus this CL also removes usage of CommandBufferID.
Bug: b/255414841
Change-Id: I36dcbeaa7bc996f04e6c04bf9ad44cd0d630f61a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4038096
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
db557905
|
2022-12-02T11:32:10
|
|
Vulkan: Fix -Wbitfield-enum-conversion
Bug: chromium:701384
Change-Id: I8c729934365c035a682e81467679fb7149864aac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4076505
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
aaee3c23
|
2022-11-30T14:24:13
|
|
Build and test ANGLE with Vulkan secondary CBs.
This will allow us to run tests with both permutations of
ANGLE (custom secondaries & Vulkan secondaries) in the same
build directory. It will also allow us to run these configs
as tests on our infra. This CL adds a few simple test to CI.
Bug: angleproject:6811
Change-Id: I053f8cc5bafc2a7ab7d0665da9301f0ba7f8417f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4067806
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b432c84c
|
2022-12-01T10:40:03
|
|
Capture/Replay: Fix collecting the initialized contexts
The main context initialization function will be emitted as
"Shared" and not based on the context number, so only add the
secondary contexts to the list of contexts that need additional
setup.
Fixes: b301b82235ca686d036a8d29380da22bb2060060
Capture/Replay: emit context setup for pre-MEC contexts only
Bug: angleproject:7805
Change-Id: I4ac770a303ac93a448c9b46bf8c4cd58900ddd54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4068124
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7e1ed5f1
|
2022-12-02T02:32:40
|
|
Revert "Vulkan: Enable async pipeline cache sync by default"
This reverts commit c7414946b84410bfcc8705759a902577c13d9fc4.
Reason for revert: b/260752276
Original change's description:
> Vulkan: Enable async pipeline cache sync by default
>
> Bug: b/246683126
> Change-Id: I593650364250f8802e9f546ab9957cf1c30e596a
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4031487
> Reviewed-by: Cody Northrop <cnorthrop@google.com>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: b/246683126
Bug: b/260752276
Change-Id: I0ebac7e46e213790ac39e4124e89feda76551011
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4074765
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
eafdf206
|
2022-12-01T12:33:11
|
|
Reset thread context during threadCleanup
Once thread cleanup is complete reset its mContext
member to nullptr. Running CTS tests in batches sometimes
exposes a bug where Thread::mContext is accessed after
Display::threadCleanup is complete.
Bug: angleproject:6723
Bug: angleproject:6798
Change-Id: Ie252954e60b5d4565697095939fd19d002dfccf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4072208
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9bd9c1c2
|
2022-11-03T11:49:33
|
|
Workaround for AMD [[raster_order_group()]] bug
Metal [[raster_order_group()]] does not work for read_write textures on
AMD when the render pass doesn't have a color attachment on slot 0. To
work around this we attach one of the PLS textures to
GL_COLOR_ATTACHMENT0, if there isn't one already.
Bug: angleproject:7792
Bug: angleproject:7803
Bug: angleproject:7818
Change-Id: I7567ed28ed30c7e3ca23dc52778ed90f2fdff965
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4004529
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
938f4372
|
2022-11-30T15:30:23
|
|
Move trace_event into anglebase
This originates from Chromium's base/trace_event/ so it doesn't need to
be under a third-party folder.
Bug: b/260093525
Change-Id: Iab7a40569b6c1f91454f099c07bf51e3ce4b65df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4068342
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c991eb22
|
2022-12-01T14:05:07
|
|
Move the anglebase folder up a level
This code originates from Chromium's base/ directory so it doesn't have
to be under a third-party folder.
Bug: b/260093525
Change-Id: I0bf6950095c685f36c5c237093980a64cf6e74f0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4068339
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Nicolas Capens <nicolascapens@google.com>
|
|
8ee1b89f
|
2022-11-04T13:10:37
|
|
Refactor pixel local storage options
The various different PLS options were getting scattered and unruly. We
are also in need of more backend-specific PLS options that would be
difficult to add as-is. This CL refactors them into a single
"ShPixelLocalStorageOptions" struct that gets initialized all in one
place, and shared between the compiler and the backends.
Bug: angleproject:7279
Change-Id: Ic58dccb8d1ba350a0b6cc5848ce15bd687e30fad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4006715
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
a4db9477
|
2022-10-06T10:35:39
|
|
Implement pixel local storage with metal::read_write textures
Metal's programmable blending feature isn't available on non-Apple
Silicon, so on these devices we have to polyfill pixel local storage
using read_write textures, which can also be coherent if
raster_order_groups are supported.
This change leverages the existing PLS transformation to images, and
implements just enough shader image functionality in Metal to support
the pixel local storage usecase. Missing shader image features are
marked with UNIMPLEMENTED().
Bug: angleproject:7279
Bug: angleproject:7792
Bug: angleproject:7794
Bug: angleproject:7797
Bug: angleproject:7803
Change-Id: Ia96a714693d352d57351a1bae4f45437dde000e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993363
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
fa37af38
|
2022-07-12T22:47:22
|
|
Translator: Support SSO's built-in redeclaration
EXT_separate_shader_objects requires that gl_Position and gl_PointSize
be redeclared in the vertex shader. This is not adopted by GLES3.2, but
is nevertheless required to be supported if the shader enables this
extension explicitly.
Bug: angleproject:6590
Change-Id: I3428851ff9f00fb63573e4322bb62fe04bf0a095
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3757918
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2ecb3217
|
2022-11-28T15:24:39
|
|
Vulkan: Turn CPU throttling into fail safe
CPU throttling is moved back to after queue present instead of before.
Doing it before was a mistake, as the app had already recorded the
command buffers, there was no point in delaying its submission.
Proper throttling would have been moving the wait from after recording
commands (before present of frame i+2) to before recording (after
present of frame i+1). However, throttling is the responsibility of the
app and this change triggers throttling one frame later (after present
of frame i+2) as a fail safe.
Currently, CPU throttling is relied upon for acquire semaphore
recycling. If the two are untangled, CPU throttling can be removed.
CPU throttling can also be trivially weakened by increasing
kSwapHistorySize (currently 2).
Bug: angleproject:7268
Change-Id: Ib7a8be6f8e72c6b8589d4e8b5de7ceaf6a28bb8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4060454
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
31c40936
|
2022-11-25T12:28:27
|
|
Vulkan: Rework present semaphore recycling
Present semaphores and old swapchains are now associated with a fence
for clean up. The fence is the one coming from the _next_ acquire of
the same image index.
See doc/PresentSemaphores.md for more details.
Bug: angleproject:7847
Change-Id: I16891ccf6df7ac39d8b17328aac35afc422eede0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4058286
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
90b4541c
|
2022-11-28T11:39:24
|
|
Vulkan: Pass signal semaphore by value to async thread
Otherwise the signal semaphore is pointing to whatever was passed in
from the main thread. Currently, this is ok because:
- For external semaphores, ensureNoPendingWork is called
- For surfaces, there's a fixed buffer of semaphores
However, an upcoming change passes a semaphore specified on the stack,
and the thread should not be referencing it.
Bug: angleproject:7847
Change-Id: I9a823214bde59b9d7ff23313694c1749a76e6b8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4060453
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
7f4caaf5
|
2022-11-23T15:40:53
|
|
Vulkan: Fix VulkanPerformanceCounterTest.SubmittingOutsideCom
VulkanPerformanceCounterTest.SubmittingOutsideCommandBufferDoesNotCollectRenderPassGarbage
depends on the implementation detail on how we flush and submit
commands. The recent change crrev.com/c/4038095 fixes one issue that we
are now having one less submission on pixel 6 device. This CL adjust the
test to account for that.
This CL also changed to set mHasDeferredFlush to true only when there is
a started renderpass upon FBO bind.
This CL also opt in swiftshader into preferSubmitAtFBOBoundary feature
for test coverage and ease of debugging since ARM GPU (which enables
this flag) is not been tested on CI.
Bug: b/255414841
Change-Id: I295cec33a8ca257a5d5a98604b8c4c0c29e97cdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4054101
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
1434697f
|
2022-11-23T14:47:38
|
|
Add a vk feature flag to only enable precision match fixer on IMG
According to
https://gitlab.khronos.org/vulkan/vulkan/-/merge_requests/5273,
RelaxedPrecision does not need to match in the interface matching
rules. However, removing the precision match is causing triangle
clipping issues on IMG hardware. This change adds a feature
flag to only run the code path that applies precision match in
SpirV if the hardware is IMG.
This is a follow-up change to https://crrev.com/c/4049421.
Instead of adding back the code path that handles varying
precision mismatch for every hardware, only enabling the code
path if the vendor is IMG.
Test:
On Pixel6:
$ adb shell setprop debug.angle.feature_overrides_enabled
varyingsRequireMatchingPrecisionInSpirv
$ out/AndroidDebug/angle_end2end_tests
--gtest_filter="GLSLTest_ES3.MismatchPrecision*" --verbose
Bug: angleproject:7488
Change-Id: Ia0155f14d523195df2f47b852ed6642918270e2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4054100
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
2de99d47
|
2022-11-17T12:19:35
|
|
Reset instance/device extensions in RendererVk::onDestroy()
RendererVk::initialize() adds a nullptr to the end of
RendererVk::mEnabledInstanceExtensions (presumably to ensure the
VK implementation crashes if it tries to read past?). If
RendererVk::onDestroy() fails to clear this nullptr, it can lead
to a crash when sorting the extension lists when the renderer
is re-initialized the second time.
Bug: b/249457381
Test: cvd start --gpu_mode=guest_swiftshader
Test: EGLDisplayTest.InitalizeTerminateInitalize/ES3_Vulkan_NoFixture
Change-Id: Ib24af11024cad6b28284f3a75cc862c48abec258
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4035646
Commit-Queue: Jason Macnak <natsu@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b301b822
|
2022-11-07T09:37:14
|
|
Capture/Replay: emit context setup for pre-MEC contexts only
When a context is made current for the first time it is added to
the shared context set. If this happens after the mid execution
capture has started, then the call to the context setup function
is created, but the according function implementations was not
emitted leading to compilation failure of the so created trace.
Since a context that was never current doesn't actually have any
setup that needs to be done when starting a MEC replay. Hence,
there is no need to emit the calls fot SetupReplayContextXX.
So track which context where actually in the shared context set
when MEC started, and only emit the according calls to the setup
functions.
Bug: angleproject:7805
Change-Id: I83f8714733ead5c0d71560013c360b5671f0822a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4008199
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Gert Wollny <gert.wollny@collabora.com>
|
|
000b3bfa
|
2022-11-28T15:06:06
|
|
Vulkan: Init mLast***Serials from CommandQueue::initialize
Exposed by a recent test from Jason crrev.com/cl/4035646, If RendererVk
gets re-initialized, we can't rely on CommandQueue's constructor to do
initalization. We have to manually initialize mLastSubmittedSerials to 0
since destroy will set it to Infinite.
Bug: b/249457381
Change-Id: I90e654981fb821324cbfb177712f604b67ccc70c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4063046
Reviewed-by: Jason Macnak <natsu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b00fa5e5
|
2022-11-23T12:10:47
|
|
Vulkan: Pipeline graph dump vs pipeline libraries
The pipeline graph dump code is now made aware of partial pipelines.
Vertex input and fragment output pipelines are also output. As a
collateral, UtilsVk pipelines are also included.
Bug: angleproject:7369
Change-Id: I327fbd07b83ae42d27766847d70637ada04d86cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4051623
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
35d1736f
|
2022-11-28T09:27:06
|
|
Update enabled instance extenion handling
- Null terminating the instance extensions at the end of
initialize to potentially avoid having the nullptr interact
poorly with other initialization code that scans through the
enabled instance extensions.
- Ensure the enabled instance extension sort happens after all
desired instance extensions have been added.
Bug: b/249457381
Test: cvd start --gpu_mode=guest_swiftshader
Change-Id: I2a479065444ffdfd97ecbf281fe6a777e22d584c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4060238
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jason Macnak <natsu@google.com>
|
|
86a194c3
|
2022-11-24T00:00:00
|
|
Fix expected texture target for 3D blocks
ASTC 3D blocks are supported only for TEXTURE_3D targets.
Bug: angleproject:3675
Change-Id: I5fa2ee87666bd69272419dc1d604348f7376aa46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4055649
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
71ead7b4
|
2022-11-20T15:56:42
|
|
Tests: Add Diablo Immortal trace
Test: angle_trace_tests --gtest_filter="*diablo_immortal*"
Bug: angleproject:7402
Bug: angleproject:7837
Change-Id: I7c7ccc0099707714213564740f58f04f7965a275
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4041134
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|