|
e2cd9082
|
2024-11-05T04:07:17
|
|
Vulkan: Bugfix in setCurrentImageLayout
Make sure to update mLastNonShaderReadOnlyLayout and
mCurrentShaderReadStageMask when updating the current layout.
Bug: angleproject:40644776
Change-Id: Ie8652099a0d4caca9f9aea5bac38256a513b08e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5992020
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: mohan maiya <m.maiya@samsung.com>
|
|
84a24a1e
|
2024-07-02T11:56:25
|
|
CL: Implement clone for kernel object
clCloneKernel() can be used to make a shallow copy of a kernel object.
The returned object is an exact copy of the source kernel, with latest
calls to arguments sets applied to the kernel.
Implement a clone version at the front-end with replicating the
`clSetKernelArg` called on the source kernel. The
`clSetKernelArgsSVMPointer` and `clSetKernelExecInfo` are ignored as
they are currently unsupported.
Bug: angleproject:376023087
Change-Id: I2e21931d9ff799e35b153cffe91fd4a2adbbf88d
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5971715
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8dae26c6
|
2024-06-26T11:35:24
|
|
CL: Add missing validation checks
-1- Check on device enqueue support
Add a check for the device enqueue support before proceeding with the
device enqueue info queries.
-2- Validate the non uniform work groups
The spec requires reporting CL_INVALID_WORK_GROUP_SIZE when non-uniform
workgroups are not supported and supplied work sizes dont evenly
distribute the work items. Adding a check in the validation.
-3- Check for alignment on sub-buffer creation
The spec requires the sub-buffer origin to be aligned to
CL_DEVICE_MEM_BASE_ADDR_ALIGN value. Check for this in validation layer.
Bug: angleproject:42267011
Change-Id: I9dc086fea16b200cc05c0fca29e3608403099a2c
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5975419
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1daf17b5
|
2024-11-04T11:05:46
|
|
Tests: restore angle_end2end_tests --help on Android
https://crrev.com/c/5985232 added support for choosing the test runner,
but that inadvertently changed behavior with --help (or with certain
flags). This CL restores that behavior.
parse_known_args() exits the process by default, so add manual --help
handling.
Bug: b/344849382
Change-Id: I87f197f90a161ec141a6e1f46ba81cfbf01a2fec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5987387
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
47fafdb9
|
2024-11-04T10:05:12
|
|
Disable tracegz (trace interpreter) by default, remove from CI
Trace interpreter is incomplete and we've been punting on it.
Can be re-enabled with angle_enable_tracegz=true in gn args.
This avoids accidentally pulling trace sources into builds.
Bug: b/376300037
Change-Id: Ib755fa9f57885216b02a481fd670a1bb0266f0db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5987382
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
e43d3591
|
2024-11-01T16:23:27
|
|
Tests: allow choosing Chromium/our test runner + screen checks
Chromium test runner (build/android/test_runner.py) is currently the
default runner for most suites. One exception is angle_trace_tests where
we're always using our scripts instead (android_helper.py etc).
We do that by setting android_test_runner_script to our runner for that
angle_test instance.
This CL supports setting android_test_runner_script to our script but
then choose whether to run with the Chromium runner or android_helper
depending on the command-line arg (--angle-test-runner)
This CL also adds a check for the screen state which will be performed
regardless of the runner. This is to have a fast and clean failure when
the device wasn't properly initialized by the infra (see bug).
The check is based on the output of `dumpsys deviceidle | grep mScreen`
(this is the most generic check I found, I previously used nfc but that
depends on nfc and turns out the output is device-dependent)
This CL enables this mode for angle_end2end_tests. Bots will continue to
run with Chromium runner as before (but with the added screen checks).
Locally, we will now be able to switch to our scripts directly:
out/Android/angle_end2end_tests \
--gtest_filter='*ClearTextureEXT2DMSStencil*' \
--angle-test-runner
Now when running end2end tests locally (regardless of the runner) with
a locked device screen, we'll see the following error right away
instead of sporadic failures or stuckness during execution:
Exception: Unexpected device screen state: ['mScreenOn=false', 'mScreenLocked=true']; expected: ['mScreenOn=true', 'mScreenLocked=false']
The plan is to enable this mode for all suites, after which the current
local script run_angle_android_test.py will no longer be needed.
Bug: b/344849382
Change-Id: I77e7733804ab37e2f3d26bf3574a52a9553e4274
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5985232
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
eccfec93
|
2024-11-01T11:49:11
|
|
Metal: gl_ClipDistance fails validation
Failure is "Found child with two parents".
Result from reusing gl_ClipDistance in:
float gl_ClipDistance[8];
ClipDistance_0 = gl_ClipDistance[0];
...
Fix by creating new node for each symbol access.
Bug: angleproject:376718272
Change-Id: I7a866a10e389cc25d0cff4e6f18ae9c70ab376e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979781
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
7483897c
|
2024-10-01T17:23:37
|
|
CL/Vulkan: Add numeric versioning for extensions
With extended versioning support, the version number of extensions need
to be reported as well. Using the numeric versioning mode for adding
supported extensions.
Also, fix the version number for cl_khr_icd and
cl_khr_extended_versioning extensions.
Bug: angleproject:372085147
Change-Id: I7bf3157227f9579c69c351a63a88b92be7f07d71
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916159
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9ce9e678
|
2024-04-16T10:07:02
|
|
CL/Vulkan: Set storage buffer usage for cl buffers
clspv is setting all the buffer objects as storage buffers, so removing
the distinction on the CL MEM flags for now.
Bug: angleproject:365694588
Change-Id: I3bd65457d53a6a2fb5fd5c8f2a0b8c25094ed563
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916158
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2f8ad9c1
|
2024-09-26T20:34:34
|
|
CL/Vulkan: Add support for sub-buffer creation
Sub-buffer is setup to point to offset location of the parent buffer.
The copy buffer interface is updated to account for copies from the same
sub-buffer.
Bug: angleproject:372157566
Change-Id: I668c7182a8c4c12e265115f1c28d9bfbfe562bb0
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916156
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3c1e98a3
|
2024-05-22T01:46:52
|
|
CL/Vulkan: Fix clEnqueueMapImage/clEnqueueUnmapMemObject
* Updates slice_pitch and row_pitch parameters with relevant
values according to the spec.
* For mapping, image is copied to staging buffer, then copied
to dynamically allocated array
* For unmapping, the reverse is done with the array being freed
Tests-Passing: OCLCTS.test_cl_copy_images 2D,
test_cl_copy_images small_images 2D, test_cl_copy_images max_images 2D,
test_cl_copy_images 3D, test_cl_copy_images small_images 3D,
test_cl_copy_images max_images 3D,
Bug: angleproject:42266936
Change-Id: I0cd778244832ce66e72a58a228ed889a9002171e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961948
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Rafay Khurram <r.khurram@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bd9d0285
|
2024-10-26T01:12:23
|
|
Remove feature description / condition enums
Since ANGLE no longer produces anything for these strings, Chromium no
longer queries them and they can be removed.
Bug: chromium:371512561
Change-Id: I921cbd91a3328df99b15262d31d52986d4a7b806
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5966697
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2b8d6bbe
|
2024-11-01T11:23:35
|
|
Vulkan: Use UpdateFullTexturesDescriptorSet when cache missed
DescriptorSetDescBuilder::updateDescriptorSet() relies on the cache key
to build descriptorSet. UpdateFullTexturesDescriptorSet() builds
descriptorSet directly from state, it does not use cache key. Test shows
UpdateFullTexturesDescriptorSet is much faster than
updateActiveTexturesForCacheMiss and updateDescriptorSet pair. This CL
removes updateActiveTexturesForCacheMiss() function and uses
UpdateFullTexturesDescriptorSet for cache miss case.
The timing code is added around the cache miss functions to measure the
time.
Old:
asphalt_9 average 7,554 nanosec
gl_driver2_off: 20,354 nanosec
batman_telltale: 12,992 nanosec
New:
asphalt_9 average 916 nanosec
gl_driver2_off: 1,839 nanosec
batman_telltale: 3,437 nanosec
Bug: angleproject:372268711
Change-Id: I176d67ed732c3fe3a18a079df7c4973aa926087a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5984893
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
fbe34df7
|
2024-10-29T16:19:29
|
|
Vulkan: More texture descriptorSet code cleanup
Removed unused argument `pipelineType` from
updateActiveTexturesForCacheMiss().
Removed unused argument `context` from getReadImageView()
Rename getBufferViewAndRecordUse() to getBufferView() since there is no
"record use" happening.
Moved UpdateFullActiveTexturesDescriptorSet() function from
vk_cache_utils.cpp to ProgramExecutableVk.cpp anonymous name space,
since it is only used in this file.
Bug: angleproject:372268711
Change-Id: Ib7240c1063f727fb52588234e79fba349f9aff9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5977481
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
79b6c7ab
|
2023-10-09T13:29:07
|
|
CL/Vulkan: Add fillWithPattern interface
In CL, the buffer can be requested to filled with a pattern. Adding a
pattern fill helper routine that fills up the buffer from CPU side.
Bug: angleproject:42267074
Change-Id: I144e9b7c6f4d1263f21cabc2491c46e8951e604f
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916157
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1a3fadbf
|
2024-11-01T13:19:43
|
|
Vulkan: Enable imagelessFB for recent QualComm drivers
Qualcomm recent drivers has the fix for imageless framebuffer bug.
Re-enable supportsImagelessFramebuffer for drivers 512.802.0 or newer.
Bug: b/369693310
Change-Id: I33a69b8abfefed572880636ff7af2c788cee5688
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5984959
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
c0a28403
|
2024-05-06T12:42:28
|
|
CL/Vulkan: Enable clEnqueueNDRangeKernel for Images and Samplers
* Performs clspv reflection for ArgumentSampler, ArgumentStorageImage,
and ArgumentSampledImage
* Creates descriptor sets for performing enqueue
Tests-Passing: OCLCTS.test_basic readimage, readimage_fp32,
readimage_int16, writeimage, writeimage_fp32, writeimage_int16,
mri_one, mri_multiple, imagenpot
Bug: angleproject:42266936
Change-Id: I2b6c631e76556870c4342d2046c267ff5cf5105d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955597
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0baeb12e
|
2024-10-22T19:24:09
|
|
CL/Vulkan: Fix ImageDescriptor constructor
* Constructor should set the depth to 1 for 2D images rather than 3D
Tests-Passing: OCLCTS.test_basic imagecopy3d, imagearraycopy3d
Bug: angleproject:42266936
Change-Id: Id6fe927260a808732c29b3b051562274ee9bf50d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955542
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c3ff2bbe
|
2024-05-16T11:31:54
|
|
CL/Vulkan: Enable clGetSupportedImageFormats
* Returns formats that are supported by physical device from the
minimum list of image formats
Tests-Passing: OCLCTS.test_api min_image_formats,
OCLCTS.test_basic imagearraycopy, arrayimagecopy,
OCLCTS.test_computeinfo computeinfo
Bug: angleproject:42266936
Change-Id: I2bdb9a793b45f21c12c7c7d6a42e7a63295c2708
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5800266
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9db2e88b
|
2024-05-14T11:44:01
|
|
CL/Vulkan: Add support for required image formats
* Included adding cases for CL_DEPTH, CL_DEPTH_STENCIL,
CL_sRGBA, and CL_BGRA
Bug: angleproject:42266936
Change-Id: Ie7bd3ee6c6413d8fa89357c81d19f4c807883f36
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5800265
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a05a0e15
|
2024-09-25T22:33:36
|
|
Validate PLS shaders against context state
Add shader introspection for PLS uniforms and validate that they match
context state during draw calls.
Bug: angleproject:40096838
Change-Id: I76cdf8add03de8f8b0b3e772c15c0087c1d97e98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5893962
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
a21b7ad0
|
2024-04-24T02:11:42
|
|
CL/Vulkan: Add skeleton for CLSamplerVk
* It is setup to be a wrapper for the SamplerHelper interface
Bug: angleproject:42266936
Change-Id: Iac7e80c4d5262687d98a8188a60a24a9be190dc2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5801184
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b03f0148
|
2024-11-01T10:26:04
|
|
Metal: interpolateAtOffset fails validation
Fix validation error Found function prototype with an invalid qualifier.
The offset parameter was created with "global" qualifier.
Bug: angleproject:376718268
Change-Id: I6f314a42fe1d35d54bb673cfa7d58eba526c9ea5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979778
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
57ce489f
|
2024-07-02T10:25:35
|
|
CL: Check that arguments are set at enqueue call
On clEnqueueNDRangeKernel, all of the kernel arguments have to be set by
appropriate clSetKernelArg or clSetKernelArgsSVMPointer or
setKernelExecInfo calls. Add a validation check for the same.
For now, only clSetKernelArg are checked as the others are not supported
yet.
Bug: angleproject:42267011
Change-Id: I15be8efab80f475ae6093ab7e1798e7a04182ac0
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5971714
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5c26ffea
|
2024-10-29T11:11:38
|
|
Vulkan: Optmize descriptorSet cache disable code path
Right now the way it works is that it first computes the cache key and
then use the cache key to look in the cache. If cache misses, then it
builds descriptorSet out of the cache Key. This might make sense if
cache is enabled. If cache is disabled then no need to go through the
middle man. This CL skip all the cache key build up entirely and
directly build descriptorSet out of context state. In this CL,
updateFullActiveTextures() and updateDescriptorSet() are merged into one
function UpdateFullActiveTexturesDescriptorSet() which updates
VkWriteDescriptorSet directly.
Bug: angleproject:372268711
Change-Id: I7ba0c60a23b967d1ac903020d04022405c29e354
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972508
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
bf29a047
|
2024-10-28T11:07:57
|
|
Metal: Remove uniform struct decl separation code
Remove uniform specific struct declaration separation and anonymous
struct naming code.
This is already done by SeparateDeclarations.
Removes code for NameEmbeddedUniformStructsMetal.
Does not remove SeparateStructFromUniformDeclarations code as it is
used for SPIRV.
Bug: angleproject:375937551
Change-Id: I943d96897d97b23fd0f54155dc215a4490f63937
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972994
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
2156cd6e
|
2024-10-31T14:22:31
|
|
Metal: Fix rewritten array variables clashes
It was possible to generate MSL name clashes by declaring arrays,
such as in:
mat3 a[1]
mat2 a_0;
Complex GLSL outputs need to be linearized into primitive MSL types.
This would happen for struct outputs, arrays and matrices. For
these new MSL variables, the translator needs to invent new names
that match, generated from both VS and FS.
The clashes were due to the encoding scheme:
For arrays, the MSL vertex output variable was named with _0 suffix for
the array and _0 for the matrix row 0. In the example above, this
would create a clash since also non-array mat would be linearized
row-wise.
For structs, field `a.b` would be encoded as `a_b`. By selecting
different a and b, clashes could be generated trivially.
It is redundant to encode named semantics in the out variable names. The
only needed element is the discriminator which associates VS variables
to FS variables. Currently this is done by using the user-provided
root field name.
Fix by encoding only the root variable name to the MSL variable name.
The rest of the field discriminators are just a running number.
Each GLSL name `a` is unique. MSL names get fixed suffix form `a_X`,
and thus all of them are unique too.
This is a continuation of following fixes that turned out to be
incomplete:
6fe8a399dd Metal: Fix rewritten out variables with underscores
27423bffff Metal: Generate names for rewritten inputs
Bug: angleproject:376417347
Change-Id: I407db373d201b3e321c6d8414bafdbecfd82cf19
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979774
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
7c99c225
|
2024-04-03T01:48:57
|
|
CL/Vulkan: Implement clEnqueue APIs involving images
Review enables the functionality of:
- clEnqueueReadImage
- clEnqueueWriteImage
- clEnqueueCopyImage
- clEnqueueMapImage
- clEnqueueCopyImageToBuffer
- clEnqueueCopyBufferToImage
Tests-Passing: OCLCTS.test_basic imagecopy, imagerandomcopy,
OCLCTS.test_profiling copy_array_to_image
Bug: angleproject:42266936
Change-Id: Ifd4ccd0a9e16bac11dbff74d4634d9ca4c5b4284
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796530
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafay Khurram <r.khurram@samsung.com>
|
|
0624b4fb
|
2024-10-31T20:59:20
|
|
Metal: Make ToposortStructs compile on c++17
Use .find() != .end() instead of .contains()
for std::unordered_map.
Bug: angleproject:375352601
Change-Id: I2e550354e1df3b390b74fdea29427fd3a0326fe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979775
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6b9d3762
|
2024-08-22T15:29:00
|
|
Vulkan: Optimize full texture clears
Currently, a full texture clear (glClearTexImageEXT()) is treated as
a special case of a partial clear (glClearTexSubImageEXT() with image
dims as the input). However, it can be further optimized by treating
it as a clear update.
* For full clears from EXT_clear_texture, the clear update path is
taken.
* It leads to a more optimized path, including the usage of the
following APIs:
* vkCmdClearColorImage()
* vkCmdClearDepthStencilImage()
* It uses the following enum: ClearTextureMode
* If a partial clear uses the extents for the entire image, it is
treated as a full clear.
* Updated the method to determine if a texture is renderable in
clearSubImageImpl().
* Added perf counter: fullImageClears
* Added new unit tests
* Single 3D texture full clear (Clear3DSingleFull)
* 2D RGB SNORM clear (Clear2DRGB8Snorm)
* Added Vulkan perf counter test for 2D and 3D color image clear.
* Updated the related skipped tests on Pineapple.
Bug: angleproject:42266869
Bug: angleproject:375425839
Change-Id: I12ef3002dee190d7f8f43204f7d3f76e05d0b54f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806207
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
91ea8aef
|
2024-10-31T12:33:35
|
|
scripts: Add restricted_trace_perf as data dep
This gets it in to angle_trace_bundle.py.
Bug: b/376300037
Change-Id: Iebffb105d24bd45c346d6d7085051c432039e2ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5980801
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
66701c98
|
2024-10-31T11:37:44
|
|
Vulkan: Remove extra non-conformant flag check
In Vulkan, getMaxConformantESVersion() calls another function which
already checks which ES version to use (getMaxSupportedESVersion()).
It also uses the non-conformance flag to check if it should bypass
the ES 3.2 check if the flag is enabled. However, the former uses the
flag to cap the version to ES 3.1 if the flag is disabled. This check
seems unnecessary, and can cap the version for a device that does have
the ability to use ES 3.2.
* Removed the non-conformant flag check from getMaxConformant*().
Bug: b/374841339
Change-Id: I377e6ba2fe174aae7e2e1b19407b2acd89749157
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979643
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
02f88b31
|
2024-10-30T21:49:19
|
|
Improve CanSupportAEP Error Reporting
This change improves the error reporting for the `CanSupportAEP`
function. Previously, if the function returned false, it was difficult
to determine which requirement was not met. This change adds logging
that will list all unmet requirements, making it easier to debug AEP
support issues.
For Chromium logs, this logging is too much. Therefore, a switch is
used and by default the logging is off. ref:
https://crrev.com/c/5979208?tab=comments
Test: the default presubmit
Bug: b/268108262
Change-Id: I7f633cdb63f9cfeb501cd5f134b0ea7874465aed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979292
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8d12b278
|
2024-03-15T15:39:39
|
|
Make separated anonymous in/out structs work better
Fixes failing case for other backends than GLSL output:
VS:
out struct { .. } a, b;
FS:
in struct { .. } a, b
Make the ANGLE VS-FS interface matching work by using the anonymous name
as the variable structOrBlock name.
Bug: angleproject:42267047
Change-Id: If8107387c02b5520134857fb210a27a8f92a2db0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5372727
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
b8d546b2
|
2024-10-30T15:40:58
|
|
Fix immutable string concats with ints
`BuildConcatenatedImmutableString("a", 10, "b")`
would construct "a\nb" because the implementation lacked int overloads
and ints would be promoted to chars implicitly.
Fix by implementing simpler way to calculate digits for numbers
and then add useful overloads. Remove
ImmutableStringBuilder::appendDecimal() since the code is already
expecting << for all other types, and the bug was due to this
expectation.
Bug: angleproject:376417347
Change-Id: Iea5e14a6e2fede068b704754b9203db794dd5bf0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972641
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
d4a9fa51
|
2024-10-31T09:37:28
|
|
Vulkan: Re-enable dynamic rendering on newer ARM drivers
Bug: b/356051947
Change-Id: I03fbed2dbdb8f454ee1c429db4669d13e719b9bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5980610
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
7bb1e0f6
|
2024-10-29T13:18:49
|
|
restricted_trace_perf: Allow use of system ANGLE libs
This change allows the perf script to use built in ANGLE libs,
including from the system partition, instead of requiring a
separate package.
By default, the script will now use the ANGLE libs packaged in the
test APK (com.android.angle.test).
OpenGL/EGL calls will still go though the platform EGL loader, but
you no longer need to install a separate ANGLE APK containing libs.
To use the system libs, add the following flag:
--angle-package system
You can use it to point to *any* package that is queryable and
contains ANGLE libraries. To get the previous behavior, you'd use:
--angle-package org.chromium.angle
Also two small unrelated fixes:
* Fix typo when clearing shader cache
* Broaden the 'MODEL' skip in thermal throttling
Bug: b/376300037
Change-Id: I762cfd7516026e903a6a5de2949d50e96e766d48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5976899
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
236e0f48
|
2024-10-22T18:33:23
|
|
Add fix for create multi-window surfaces cause crash
This patch fix crash when created multiple window surfaces,
and not call corresponding eglDestroySurface, also added related test.
Bug: angleproject:374797737
Change-Id: I58941660130e84e213cf9d78806027d56d6efc8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5981430
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2df8d32b
|
2024-10-25T13:49:40
|
|
Vulkan: Tag DescriptorSets properly with every command buffer
When descriptorSetCache is disabled, there is a bug that the current
descriptorSet is not properly tagged with current ResourceUse. Right now
when we get a descriptorSet (from cache or reused or allocated new), we
retain to the current command buffer. But if we submit command buffer
and get a new command buffer, and draw with the same
program/buffer/textures, we will be reusing the current bound
descriptorSets, but it is not retained with new command buffer.
In theory, we have the same bug for pool eviction as well when cache is
enabled. It's just very hard to hit due to pool eviction occur very
rare. But with cache disabled, this is very easy to hit with multiple
tests.
In this CL, the retainResource call is moved from
ProgramExecutableVk::getOrAllocateDescriptorSet() call to
ProgramExecutableVk::bindDescriptorSets() call. Since bindDescriptorSets
is always get called when we get a new descriptorSet, and is always get
called when a new command buffer is allocated, this covers all usage
case.
And even better, with this change we are able to remove
commandBufferHelper from arguments of quite a few functions.
Bug: angleproject:372268711
Change-Id: I1f21a3e7e9ea34e2842e54025b5eb930dbf6c593
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4743599
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
913251aa
|
2024-09-25T17:42:59
|
|
Add clear tests related to layered image
* Added tests to bind a layered framebuffer to a 3D image and clear it.
Bug: angleproject:42266869
Change-Id: I488a26883d3e05daf0cc746ccf4b409ba470cb4a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5889409
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
63f5a328
|
2024-10-30T14:40:40
|
|
Revert "Improve CanSupportAEP Error Reporting"
This reverts commit fb655e43f4a86fbdf35bf0cb5d2978d728b949d9.
Reason for revert: Causes excessive logging and leads to flakiness
in Chromium
Original change's description:
> Improve CanSupportAEP Error Reporting
>
> This change improves the error reporting for the `CanSupportAEP`
> function. Previously, if the function returned false, it was difficult
> to determine which requirement was not met. This change adds logging
> that will list all unmet requirements, making it easier to debug AEP
> support issues.
>
> Test: the default presubmit
> Bug: b/268108262
> Change-Id: I48eb6b26358ca4991d760523f44568d97e8c35a6
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972497
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Solti Ho <solti@google.com>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: b/268108262
Bug: chromium:376380430
Bug: chromium:40266306
Change-Id: Ic5b1bbce16fe5c98af10ca0554d1035206d5c592
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5979208
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1652f8ed
|
2024-10-17T13:35:39
|
|
Vulkan: end2end tests when descriptorSetCache is disabled
Some end2end tests are testing specific descriptorSet cache behavior.
When cache is disabled, these tests failed. In this CL these perfCounter
based tests haven been modified to check total allocation to ensure the
descriptorSets are properly reused instead of cache hit/miss.
Bug: angleproject:372268711
Change-Id: I1d2f4cfcf622b05cdcb3317c8804416a80e72c48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3735732
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0a372f29
|
2024-10-28T22:59:53
|
|
Vulkan: Remove docs about OpenGL line rasterization emulation
The code that emulated OpenGL line rasterization has been removed.
Bug: angleproject:42265836
Change-Id: Ib1c1d8745b1790e0291a691a6a1c8e9438c34351
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5973239
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
fb655e43
|
2024-10-28T21:45:41
|
|
Improve CanSupportAEP Error Reporting
This change improves the error reporting for the `CanSupportAEP`
function. Previously, if the function returned false, it was difficult
to determine which requirement was not met. This change adds logging
that will list all unmet requirements, making it easier to debug AEP
support issues.
Test: the default presubmit
Bug: b/268108262
Change-Id: I48eb6b26358ca4991d760523f44568d97e8c35a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972497
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Solti Ho <solti@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
d0a0fd1a
|
2024-10-17T14:50:51
|
|
Vulkan: Skip pool eviction when cache is disabled
When cache is disabled, every time a new descriptorSet is allocated and
bind to program, the previous descriptorSet will be added to the tail of
garbage list, and the new descriptorSet is retrieved from the head of
the garbage list, if its GPU usage has been completed. This means there
will never have a situation that significant amount of descriptorSets
are needed, therefore no need for pool eviction. One possible situation
is that at one point you need a lot of descriptorSets and then after a
while you only need small amount of descriptorSets. In that case we
could delete the excessive unused descriptorSets. But since they are all
allocated from a pool, as long as there is still one descriptorSet in
the pool is used, you still can't destroy the pool. This means eviction
is really not much useful when cache is disabled.
Bug: angleproject:372268711
Change-Id: Id77b181b64e122f576ee43d11c39dc75bd681dcf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5941126
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
af73a7eb
|
2024-10-18T17:19:29
|
|
Vulkan: Add WeakPtr to mirror std::weak_ptr
This is a follow up from previous CL crrev.com/c/5938947. Because of
pool eviction is based on reference count, there is need to have a weak
pointer to the reference counted pool that does not add an extra
reference count. This CL adds WeakPtr that works similarly to
std::weak_ptr, and replaced direct RefCountedDescriptorPool pointer with
WeakPtr wrapper. This is safer than RefCountedDescriptorPool in a way
that it does not allow modification of underline reference count. Also
the use of WeakPtr has been reduced to minimum in this CL.
Bug: angleproject:372268711
Change-Id: Idd6fa77432a9351269c968c961785a7cf5fab50c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5944061
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
a7ef6444
|
2024-10-29T09:39:24
|
|
Tests: skip D3D11 dEQP-GLES2.functional.polygon_offset
Got re-enabled in
https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+/0d2b73e3a4b70d3117abca393e2b86ccf99f4c31
The GLES3 version is already skipped for this config
Bug: angleproject:42260109
Change-Id: Ief290695dd97d7ecf84f2e06f352d9135e0748b6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5974494
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
|
|
4397ff2f
|
2024-10-25T16:55:30
|
|
Metal: SeparateCompoundStructDeclarations fails validation
Consider GLSL:
struct S { int i; } s;
s=s;
SeparateCompoundStructDeclarations would rewrite this to:
struct S { int i; };
S s';
s=s;
The interm rewrite would rewrite the specification and declaration of s,
but not the use sites. The use sites would use the old type, and thus
something that was not in the tree anymore. This would fail the
validation.
This kind of bug was previously fixed for SeparateDeclarations
in commit 18fa02bebf901dd8501de3176f6052ae4ce984be.
Fix by adding the logic to SeparateDeclarations, as it is already
doing almost the exact task, separating `struct S { ..} a, b`.
The separation is tested in GLSLTests.StructInShader and various
other draw tests. These pass with MSL, but these would also fail
validation if that was enabled.
Bug: angleproject:375523825
Change-Id: I1697103d0ba47616dbd3159f36f9e71cb2831c4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5964899
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4a5b0284
|
2024-10-24T11:46:54
|
|
Disallow discarded uniform block references
Uniform block instances cannot be used by themselves, as there
is no way to refer to their type. Disallow the only typeless
access pattern, discarding via expression statement:
uniform MyBlock { int x; } b;
void main() {
b;
0, b;
}
Explained as disallowed in newer GLSL 300:
https://github.com/KhronosGroup/WebGL/issues/3644
The comma expression form would ASSERT in CollectVariables.
Bug: angleproject:42267026
Change-Id: I6c8b835482fd551bd97576c1bd24f005874da6af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961498
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
898a1c12
|
2024-10-24T13:09:36
|
|
Metal: Fix ToposortStructs validation == failures
ToposortStructs would convert mat, vec, struct == to ANGLE_equals()
calls. However, the functions called were not in AST. This would cause
"Found node calling previously undeclared function
<validateFunctionCall>" validation error and ASSERT.
Mat, vec equality calls would use prelude ANGLE_equals implementations.
The MSL emit already does the conversion from == to ANGLE_equals for
these builtins.
For user-defined structs the logic would be:
- collect struct decls, structs, create equality functions
- toposort
- for each sorted struct:
- insert struct decl
- insert equality function
Move the equality function creation after the toposort:
- collect struct decls, structs
- toposort
- for each sorted struct:
- insert struct decl
- create equality function
- insert equality function
This way the sort ensures that nested struct equality functions can
refer to previously introduced equality functions.
Bug: angleproject:375352601
Change-Id: I59efed98bca6d99b198abc2b5c7577cf5d1d5d83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961281
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
2a62e525
|
2024-06-26T13:27:37
|
|
CL: Fixup copying empty string
Bug: angleproject:375982192
Change-Id: I0703ecf068ca966e1b24169c8f406df4c8dbb5ac
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5971389
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0e0e5eae
|
2024-10-28T14:12:30
|
|
Minor clean up for mSamplerBindings usage
Use "const" keyword for samplerBinding.
Bug: None
Change-Id: Ic2c0b133c405012a111919ad07f45d84c07eecee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972764
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
08c1724f
|
2024-10-11T14:29:00
|
|
Vulkan: Support GL_ARM_shader_framebuffer_fetch_depth_stencil
Bug: angleproject:352364582
Change-Id: I63fd78314fa7ebccbf366c252e309a9c0f09c8c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938150
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
65fcf9c4
|
2024-10-26T10:53:18
|
|
Vulkan: Remove redundant dependent feature checks
Since [1], when a feature is overriden, the dependent features
automatically take the override into account. Tests no longer need to
account for dependent features, neither does the logic in the code.
[1]:https://chromium-review.googlesource.com/c/angle/angle/+/4749524
Bug: angleproject:42266725
Change-Id: I5440aba4a89cffbe710e26ad7de4cfee783e9bdf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5967414
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
c13e9963
|
2024-10-28T15:19:09
|
|
Tests: skip mac intel dEQP-GLES2.functional.polygon_offset
Got re-enabled in
https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS.git/+/0d2b73e3a4b70d3117abca393e2b86ccf99f4c31
The GLES3 version is already skipped for this config
Bug: angleproject:40096462
Change-Id: I8b6eca1faec9442c6de323000cd223b0c169e35d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5972595
Commit-Queue: Roman Lavrov <romanl@google.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Roman Lavrov <romanl@google.com>
|
|
ba65fc48
|
2024-05-01T15:53:20
|
|
ANGLE unit test to check const expression in a shader with uniform
Bug: b/338287961
Change-Id: I81586122fdb6cdfe650b9c9094582276220741f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5507766
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
|
|
0d5c0bd1
|
2024-04-25T10:26:08
|
|
ANGLE end2end test to check const expressions are handled correctly
Bug: b/337046547
Change-Id: I1bd368f8c95a9676aba13fe91313d0eaba32db03
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5490170
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
a769fad4
|
2024-10-24T20:46:42
|
|
Vulkan: Optimize and fix glFinish for single buffered surfaces
Fixed bug:
When calling `onSharedPresentContextFlush()` from `ContextVk::finish()`
need to also call `finishImpl()` to wait for submitted commands. This
bug was introduced in the original commit where
`onSharedPresentContextFlush()` was added.
Optimization:
Skip calling `onSharedPresentContextFlush()` from `ContextVk::finish()`
similarly to `ContextVk::flush()` when there is nothing to flush.
Bug: angleproject:42265370
Bug: b/229908040
Change-Id: Ide9f9c5d8757257c925970faece1e137acf10dec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961290
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
d9f8fba8
|
2024-09-27T15:56:36
|
|
CL/Vulkan: Fix event queue serials
Some of the events are finished at call site, dont set queue serials for
them.
Bug: angleproject:372157567
Change-Id: I4e0d568b76959be96bc7565bae7cdb5d4549619a
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916155
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a0586d6e
|
2024-10-26T00:32:27
|
|
Remove feature description / condition strings
These strings show up in chrome://gpu so they can marginally be useful,
but are otherwise dead weight for most uses of ANGLE / users of ANGLE.
While slightly less convenient, the feature name can always be linked
back to the source code if needed so the presence of such metadata is
not necessary either.
This shaves 40KB from the binary size of ANGLE when built with Vulkan
only on Android.
Bug: chromium:371512561
Change-Id: I3959961bb7de95cc60a85130d0ff38a7fd533fb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5968453
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5b4609de
|
2024-10-07T14:40:49
|
|
CL/Vulkan: Adjust the pushConstant size/offset to multple of 4
The spec[1] requires the push constants size/offset to be multiple of 4.
Adjust them as needed.
[1]: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdPushConstants.html#_description
Bug: angleproject:372157565
Change-Id: I8ea788dbd68e3aea262e12af56e40ac84087ceef
Signed-off-by: Gowtham Tammana <g.tammana@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5916154
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fe99836c
|
2024-10-25T14:34:23
|
|
Vulkan: Use ANGLE_PERF_WARNING when no serial for reserved serial
When we run out of OutsideRenderPassCommands' queue serial, we have to
call flushCommandsAndEndRenderPass() so that we can get a new set of
reserved serials for OutsideRenderPassCommands. The problem is that we
call ANGLE_VK_PERF_WARNING macro before calling
flushCommandsAndEndRenderPass(), which could insert a
CommandID::InsertDebugUtilsLabel command when debug marker is enabled.
This end up with mOutsideRenderPassCommands becomes not empty and
subsequent call of flushCommandsAndEndRenderPass end up with
flushOutsideRenderPassCommands and not able to early out due to command
buffer is not empty. This CL simply changes ANGLE_VK_PERF_WARNING to
ANGLE_PERF_WARNING to avoid getting into this situation. Assertion is
also added to catch the problem at at the spot it happens.
Bug: b/375661776
Change-Id: I2434af81b139c6b04d7ef1963f76035d60dfd471
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5967615
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Roman Lavrov <romanl@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4353d25c
|
2024-10-25T16:16:58
|
|
Fix ASAN bug in GLSL test
Bug: chromium:375344329
Change-Id: Id275ba7877c5092bf7b55c06fcfa80614886985c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5967933
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3a265f14
|
2024-10-24T17:34:15
|
|
Android tests: raise if --render-test-output-dir doesn't exist
For convenience when testing locally,
otherwise we get an obscure error later on
Bug: angleproject:370089935
Change-Id: I94f52aef90afb600baae45540e0e53f899554ee9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5960260
Auto-Submit: Roman Lavrov <romanl@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Roman Lavrov <romanl@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
ec262a32
|
2024-10-22T12:34:15
|
|
Trace tests: offscreen gles1 fix framebuffer binding handling
gles1 traces can call glBindFramebufferOES (ex: plague_inc) so we need
to intercept that for offscreen gles1 traces.
Also OES_framebuffer_object does not provide "read" bindings, only a
single framebuffer binding, so we need to special-case binding handling
in the gles1 case.
Bug: angleproject:370508393
Change-Id: Ia17df21ed67aa8a1e0aa45fe9bb929ce42852ba2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5953095
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
12584049
|
2024-10-21T14:04:55
|
|
Make SimplifyLoopConditions testable
Add ShCompileOptions::simplifyLoopConditions, so that tests can turn
it on. Later edits to simplify loop condition logic are simpler to
review when the testing related edits are landed separately.
Test the feature by having ESSL as the input and ESSL as the natural
output, to reflect how AST changes.
To make the test expectations more deterministic across code changes,
change SymbolTable::kLastBuiltInId to
SymbolTable::kFirstUserDefinedSymbolId. This is simpler as no code
needs to know exact last built in id, so we can just ensure that
the user defined symbol ids do not clash with the builtin ids.
Bug: angleproject:374585769
Change-Id: Iea0efb8ac2878691d0fd5ff5cfe9a49ac754515d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5946724
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
f2315dbe
|
2024-10-23T13:34:39
|
|
Reland: Vulkan: Update checks for promoted extensions
This relands commit c2219ef9ec03277b6f8ad18d6d1ade41ddf88ba6.
Features that depend on promoted extensions are now enabled when
the extensions are present, OR the version of Vulkan that they were
promoted to is present. This commit checks for Vulkan 1.1 because
that is the version currently supported.
In the reland, the promoted extensions are not added to the list of
extensions to be enabled, because the underlying driver may not have
exposed them as extensions at all.
Bug: angleproject:374483183
Change-Id: I98e004d3fb4ed673984859ab63d40702f877b535
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955635
Reviewed-by: Jason Macnak <natsu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
2dcc80dd
|
2024-10-17T13:59:23
|
|
Vulkan: allocateDescriptorSet to avoid repeated try on same pool
DynamicDescriptorPool::allocateDescriptorSet has a few steps. It first
tries to allocate from the same pool. Then tries to allocate from
mCurrentPoolIndex and then loops all existing pools. This CL keeps the
same basic logic, but avoids repeated tries on the same pool.
Bug: angleproject:372268711
Change-Id: Ic3099ac8c68688fe9afe452f808be29ac9063d51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5926182
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a05fc2bc
|
2024-10-23T13:36:54
|
|
Revert "Vulkan: Update checks for promoted extensions"
This reverts commit 9c1f96b8606a564b565d37208268b9b06efff03e.
Reason for revert: Still fails on Cuttlefish (which uses SwiftShader)
Bug: angleproject:374975259
Original change's description:
> Vulkan: Update checks for promoted extensions
>
> Features that depend on promoted extensions are now enabled when
> the extensions are present, OR the version of Vulkan that they were
> promoted to is present. This commit checks for Vulkan 1.1 because
> that is the version currently supported.
>
> Bug: angleproject:374483183
> Change-Id: I17d7956ac8a604f531e020e77c6f532e616b9dd5
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5954316
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Bug: angleproject:374483183
Change-Id: I1bef03f99b044bca91950a62e4015630a7c91530
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5956483
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Cody Northrop <cnorthrop@google.com>
|
|
9a4c7495
|
2024-10-15T13:05:28
|
|
Vulkan: Add feature flag to enable descriptorSet cache
So that we can disable it to compare the performance difference.
Bug: angleproject:372268711
Change-Id: I02da254e5d58815741080634a2dd005617aa7432
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5936135
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
31c80bbf
|
2024-10-17T10:56:16
|
|
Vulkan: Avoid redundant work in updateFullActiveTextures
ContextVk keeps mActiveTexturesDesc, which gets updated by
UpdatePreCacheActiveTextures(). This is only used for cache lookup. When
there is a cache miss, we end up call updateFullActiveTextures() which
recomputes DescriptorSetDesc again, which is redundant work.
This CL removes mActiveTexturesDesc from ContextVk.
UpdatePreCacheActiveTextures has been changed to be a
DescriptorSetDescBuilder method so that it can directly update the
mDesc. updateFullActiveTextures has been renamed to
updateActiveTexturesForCacheMiss which avoid mDesc calculation.
updateFullActiveTextures is still kept for now which will be used in
next CL when cache is disabled.
Bug: b/372268711
Change-Id: Ic9a0cdaa7cefca5f72b599d26d079cef14888f07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905766
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
922147f9
|
2024-10-22T18:20:44
|
|
Trace tests: offscreen sRGB traces use sRGB format
Without this offscreen screenshots end up darker.
Currently applies to 7 traces, can be found with:
% egrep 'DrawSurfaceColorSpace.*0x3089' src/tests/restricted_traces/*/*.json
Bug: angleproject:370089935
Change-Id: I4a05782de2e7400fcfcb5757d18acf758749d6ef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5953096
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
dd54eeec
|
2024-10-11T13:26:46
|
|
Reland "Vulkan: Track GPU progress for individual DescriptorSet"
This is a reland of commit 292102944add2ab30f4aa12a971cac456cc7726b
with the fix of garbage being added back to garbage list.
Original change's description:
> Vulkan: Track GPU progress for individual DescriptorSet
>
> Right now ProgramExecutableVk keeps VkDescriptorSet object, and
> DescriptorSetHelper is created when a cache entry becomes invalid.
> Further, DescriptorSetCache keeps the cache of {VkDescriptorSet,
> RefCountedDescriptorPoolHelper} pair. So we are having three different
> type of objects at different stages of life: VkDescriptorSet,
> DescriptorSetHelper, and {VkDescriptorSet,
> RefCountedDescriptorPoolHelper. This CL makes DescriptorSetHelper at
> creation and at cache and at garbage. With this change, you have a
> reference counted DescriptorSetHelper object (i.e, DescriptorSetPointer)
> during entire life cycle and is passed around between cache and program
> as is. This CL is preparation for the future CL where we may disable
> cache for descriptorSet. The descriptorSet will be added to garbage list
> and reused constantly without go through the cache code. We need to
> track the individual descriptorSet with ResourceUse so that it won't
> reuse until GPU is finished. This CL is making DescriptorSetHelper a GPU
> tracking object so that it will still just work when cache is disabled.
>
> Bug: angleproject:372268711
> Change-Id: I1cfb77cc5069b202d870388fd8809e265cdca90b
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918586
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:372268711
Change-Id: Ic920f99cc78cde1e94690bdbee3b885844fa155b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5954701
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
60da450e
|
2024-09-20T17:56:55
|
|
CL: Implicit cmd queue submit on release
From OpenCL spec (3.0):
https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#_flush_and_finish
clReleaseCommandQueue perform an
implicit flush of the command-queue.
Bug: angleproject:8639
Change-Id: I0a3b0f3c602075fd2a6e1ac0310345b3d568df64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5410931
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Austin Annestrand <a.annestrand@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
45cc47af
|
2024-10-22T21:41:22
|
|
Revert "Vulkan: Track GPU progress for individual DescriptorSet"
This reverts commit 292102944add2ab30f4aa12a971cac456cc7726b.
Reason for revert: Causing bot failure in later CLs
Original change's description:
> Vulkan: Track GPU progress for individual DescriptorSet
>
> Right now ProgramExecutableVk keeps VkDescriptorSet object, and
> DescriptorSetHelper is created when a cache entry becomes invalid.
> Further, DescriptorSetCache keeps the cache of {VkDescriptorSet,
> RefCountedDescriptorPoolHelper} pair. So we are having three different
> type of objects at different stages of life: VkDescriptorSet,
> DescriptorSetHelper, and {VkDescriptorSet,
> RefCountedDescriptorPoolHelper. This CL makes DescriptorSetHelper at
> creation and at cache and at garbage. With this change, you have a
> reference counted DescriptorSetHelper object (i.e, DescriptorSetPointer)
> during entire life cycle and is passed around between cache and program
> as is. This CL is preparation for the future CL where we may disable
> cache for descriptorSet. The descriptorSet will be added to garbage list
> and reused constantly without go through the cache code. We need to
> track the individual descriptorSet with ResourceUse so that it won't
> reuse until GPU is finished. This CL is making DescriptorSetHelper a GPU
> tracking object so that it will still just work when cache is disabled.
>
> Bug: angleproject:372268711
> Change-Id: I1cfb77cc5069b202d870388fd8809e265cdca90b
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918586
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:372268711
Change-Id: I4d3c34058d100112a098144276b52c0faf8d593a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5955529
Auto-Submit: Charlie Lao <cclao@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
|
|
9c1f96b8
|
2024-10-22T12:58:27
|
|
Vulkan: Update checks for promoted extensions
Features that depend on promoted extensions are now enabled when
the extensions are present, OR the version of Vulkan that they were
promoted to is present. This commit checks for Vulkan 1.1 because
that is the version currently supported.
Bug: angleproject:374483183
Change-Id: I17d7956ac8a604f531e020e77c6f532e616b9dd5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5954316
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
99ba07d3
|
2024-03-26T00:58:57
|
|
CL/Vulkan: Implement createImage
Enabling functionality of:
- clCreateImage
Tests-Passing: OCLCTS.test_api get_image<1d|2d|3d>_info
Bug: angleproject:42266936
Signed-off-by: Rafay Khurram <r.khurram@samsung.com>
Change-Id: I0281f092bff13cdd81b87d596fdd15b33dda7e46
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796527
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d774f75c
|
2024-10-21T00:00:00
|
|
Fix Python warning in overlay fonts generator
Fixed: angleproject:358565474
Change-Id: Ide48691fa4d52d063c5c80fc7cdbc16c99a97ed0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5953793
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
29210294
|
2024-10-11T13:26:46
|
|
Vulkan: Track GPU progress for individual DescriptorSet
Right now ProgramExecutableVk keeps VkDescriptorSet object, and
DescriptorSetHelper is created when a cache entry becomes invalid.
Further, DescriptorSetCache keeps the cache of {VkDescriptorSet,
RefCountedDescriptorPoolHelper} pair. So we are having three different
type of objects at different stages of life: VkDescriptorSet,
DescriptorSetHelper, and {VkDescriptorSet,
RefCountedDescriptorPoolHelper. This CL makes DescriptorSetHelper at
creation and at cache and at garbage. With this change, you have a
reference counted DescriptorSetHelper object (i.e, DescriptorSetPointer)
during entire life cycle and is passed around between cache and program
as is. This CL is preparation for the future CL where we may disable
cache for descriptorSet. The descriptorSet will be added to garbage list
and reused constantly without go through the cache code. We need to
track the individual descriptorSet with ResourceUse so that it won't
reuse until GPU is finished. This CL is making DescriptorSetHelper a GPU
tracking object so that it will still just work when cache is disabled.
Bug: angleproject:372268711
Change-Id: I1cfb77cc5069b202d870388fd8809e265cdca90b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5918586
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
47c66901
|
2024-10-21T12:47:22
|
|
Vulkan: Set gl_Layer to 0 if the framebuffer is not layered
Bug: angleproject:372390039
Change-Id: I29067c9488e06f6dd2e90f207fecb843267fb77c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5949263
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e869b426
|
2024-10-22T10:04:06
|
|
Revert "Removed checks for promoted extensions"
This reverts commit c2219ef9ec03277b6f8ad18d6d1ade41ddf88ba6.
Reason for revert: Possible cause of boot failures on cuttlefish
Bug: angleproject:374975259
Original change's description:
> Removed checks for promoted extensions
>
> Removed checks for Vulkan extensions that have been promoted into Vulkan
> 1.1, which is already the minimum required version for ANGLE. The
> dependent features now work when the extensions are missing because the
> extensions are no longer necessary.
>
> Bug: angleproject:374483183
> Change-Id: Iad92b33a8e724eaa8f4bfcbe406f5b6b8536d6d8
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5944678
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Charlie Lao <cclao@google.com>
> Commit-Queue: Charlie Lao <cclao@google.com>
Bug: angleproject:374483183
Change-Id: I92eb6681c6d1b8f7e2d0832bb4e1cbf4597bd1c6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5952279
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f4e776a8
|
2024-10-14T22:41:34
|
|
GLES1: Fix eye distance for fog
Distance should be non-negative, so use abs().
From the spec, OpenGL ES 1.1 ยง3.8. Note the 'abs' symbols.
An implementation may choose to approximate the eye-coordinate
distance from the eye to each fragment center by |z_{e}|.
Bug: b/369665616
Test: angle_trace_tests --gtest_filter="*minetest*"
Change-Id: Ic6c162ba2469600fa6a8c8d61e5bccf5c0cb12d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5933566
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Lina Versace <linyaa@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Lina Versace <linyaa@google.com>
|
|
4bdcdf0d
|
2024-10-16T11:44:49
|
|
Vulkan: Switch RefCountedDescriptorPoolBinding to use SharedPtr
This mostly a clean up. RefCountedDescriptorPoolBinding is replaced with
DescriptorPoolPointer, which is defined as
SharedPtr<DescriptorPoolHelper>. It has more intuitive semantics to use.
Bug: angleproject:372268711
Change-Id: I0397111b5228e896c1d226e00930851319d955a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938947
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
c52e8493
|
2024-10-11T14:21:19
|
|
Vulkan: Switch DescriptorPoolPointer to use SharedPtr
To make the reference counting easier to maintain, SharedPtr class is
added to automatically tracking the reference counting and object
creation/destruction. Right now we have BindingPointer class doing
similar things except it does not automatically manage the object
create/destroy, which makes it less robust as well as redundant code to
manage object life cycle. The other problem with BindingPointer is that
it does not work with normal assign/copy operator which made it hard to
read and use. SharedPtr uses exact same API semantics as
std::shared_ptr, which makes the reference counting very easy to use.
The main difference of SharedPtr and std::shared_ptr is that it does not
use any atomic or lock since it assumes user only uses it under thread
safe environment, which ANGLE's backend is.
This CL also changes mDescriptorPools to mDynamicDescriptorPools to make
it clear that it is dynamic descriptor pool not the descriptor pool.
This is also preparation CL for the next CL where we will use SharedPtr
to manage DescriptorSetHelper life cycle, which otherwise a bit
complicated to manually manage.
Bug: angleproject:372268711
Change-Id: I1033d9bf259bbc075a9b374d8a28e1f67d889873
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5926183
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bbe68963
|
2024-10-21T15:11:27
|
|
Vulkan: Fix `precise` vs `mat4(...)[index]`
Bug: angleproject:374801303
Change-Id: I45550abe406aaaf4d2c5eb5d7d694b2b30ab8e4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5949528
Reviewed-by: mohan maiya <m.maiya@samsung.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
5c2a2fd5
|
2024-10-21T16:00:25
|
|
Vulkan: Fix `vec4(...).zxwy[index]`
The code was actually correct, but included an unnecessary assertion.
The code incorrectly assumed `.zxwy[index]` is pre-processed with a
lookup table and turned into `[index']`, but it wasn't if the LHS is a
constructor.
The change just removes the assertion because it was correctly handling
that already.
Bug: angleproject:40096715
Change-Id: Ib1365f95a255ce3654831af55429361d35c026c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5949527
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ef55ca0a
|
2024-10-17T14:44:22
|
|
Update copy validation regarding ext textures
* Updated the validation functions for the following function to
accept TEXTURE_EXTERNAL_OES: glCopyImageSubDataEXT()
* Updated unit test CopyTextureTestES3.CopyImageSubDataToEGLImage
* Using TEXTURE_EXTERNAL_OES as target for glFramebufferTexture2D()
requires EXT_YUV_target. Therefore, the texture related to it is
used instead.
Bug: angleproject:361372990
Change-Id: I905d4cf89522ae3158516b42b15705d1044c6e97
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5940404
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
a19f0947
|
2024-10-17T22:42:30
|
|
Vulkan: Cache depth- and stencil-only views
Existing depth/stencil blit and resolve paths created temporary depth-
and stencil-only views. For
GL_ARM_shader_framebuffer_fetch_depth_stencil, such views are needed as
well.
In preparation for that extension, this change adds depth- and
stencil-only views to ImageViewHelper and allows them to be retrieved
through RenderTargetVk. The blit and resolve paths are consequently
simplfied as a side-effect.
Bug: angleproject:352364582
Change-Id: Ia822efb44ca7c82f63afce904eb19dd1bed02ff5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938149
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
c2219ef9
|
2024-10-20T04:49:44
|
|
Removed checks for promoted extensions
Removed checks for Vulkan extensions that have been promoted into Vulkan
1.1, which is already the minimum required version for ANGLE. The
dependent features now work when the extensions are missing because the
extensions are no longer necessary.
Bug: angleproject:374483183
Change-Id: Iad92b33a8e724eaa8f4bfcbe406f5b6b8536d6d8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5944678
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
4aa12e9e
|
2024-10-07T00:00:00
|
|
Metal: Remove macOS 11.0 availability checks
Chromium now requires at least macOS 11.0.
This also implies MSL 2.3 support.
Bug: angleproject:371829506
Change-Id: I6aaf4d9775bfe58747df28173d3931aa11fa8d25
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5912903
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
ff455e8c
|
2024-10-17T13:19:09
|
|
Add tests to check copy image with TEXTURE_EXTERNAL_OES
According to spec of EXT_copy_image, GL_TEXTURE_EXTERNAL_OES should be
accepted by glCopyImageSubDataEXT.
Add two tests to check copy image from gles texture to EGLImage and from
EGLImage to gles texture by API glCopyImageSubDataEXT.
As ANGLE does not support this currently, skip these two tests on all
platforms.
Bug: angleproject:361372990
Change-Id: Iceacb2d6af2277a314a215220c3ccdf47665561c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5940214
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
182aa407
|
2024-08-14T19:52:30
|
|
Reland "Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format."
This is a reland of commit f102d75a39ec8980a617c179034c24f337b12d1c
Nothing changed, it's just that the root cause was already fixed in
https://chromium-review.googlesource.com/c/angle/angle/+/5937060.
Original change's description:
> Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format.
>
> Currently when IOSurface is bound to a pbuffer with GL_RGB internal
> format, we asign angle format=B8G8R8A8_UNORM/R8G8B8A8_UNORM to it.
> And then disable alpha write to the respective MTLTexture.
>
> However, when an implicit MSAA texture is created for the above
> pbuffer, it will be assigned B8G8R8A8_UNORM/R8G8B8A8_UNORM angle format
> but has no knowledge about alpha write disable. Consequently, when a
> render pass uses this implicit MSAA texture, its alpha channel won't be
> cleared properly and would contain garbage values.
>
> In order to avoid the above bug, we should use
> B8G8R8X8_UNORM/R8G8B8X8_UNORM angle format for the IOSurface pbuffer.
>
> This will fix the render corruptions found in chromium:358957665.
>
> Bug: angleproject:42261786
> Bug: chromium:358957665
> Change-Id: I8aa1e24ace2de80dd08e21711445515ba4b339ff
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788801
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Bug: angleproject:42261786
Bug: chromium:358957665
Change-Id: I1e090886ed493eafce35d2ba98010c3be7bc16c9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5937061
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4b1e58d9
|
2024-10-17T09:33:53
|
|
Fix for float constant precision in the GLSL backend.
Increase the precision of floating point values written out
via std::ostringstream. 8 digits is not sufficient to represent
all floating point values.
Note: the reason the locale test was modified is because it was using
a value of 1.9, which has no exact fp32 representation. Increasing
the precision causes it to print as 1.8999998 instead of 1.9, failing
the test. I've adjusted the value to 1.5, since this does have an
exact fp32 representation. (However, note that I couldn't get the test
to fail when I removed the locale setting, with either 1.9 or 1.5.
Perhaps the locale is being handled at a different level.)
Bug: angleproject:374013421
Change-Id: Icb79eb9acd562c83d079f2cc2cdba253220e581e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938473
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2b329ee4
|
2024-10-18T01:37:10
|
|
Metal: fix memory leaks in Texture::getStencilView
The leaks were because we stored a strong ref to the texture itself in
mStencilView member if the texture already has a stencil format. This
caused a circular reference preventing the texture from being released.
This indirectly caused MSRTT's memory leaks in chromium:374072906 due to
MSRTT using getStencilView for blitting step.
Bug: chromium:374072906
Change-Id: I8ced300c2da2de1282c623780dd1affd9d45fb05
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5937060
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Auto-Submit: Quyen Le <lehoangquyen@chromium.org>
|
|
78f146e3
|
2024-10-14T00:00:00
|
|
Remove EAGL support
Fixed: angleproject:362530620
Change-Id: I6157655a7ad5b1e30c5d0a155d3ae3e8a81997e8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938872
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
5b96316b
|
2024-10-17T14:00:41
|
|
Revert "Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format."
This reverts commit f102d75a39ec8980a617c179034c24f337b12d1c.
Reason for revert: Suspecting this caused an GPU memory regression on Mac.
Bug: chromium:374072906
Original change's description:
> Metal: translate IOSurface pbuffer's GL_RGB to RGBX/BGRX format.
>
> Currently when IOSurface is bound to a pbuffer with GL_RGB internal
> format, we asign angle format=B8G8R8A8_UNORM/R8G8B8A8_UNORM to it.
> And then disable alpha write to the respective MTLTexture.
>
> However, when an implicit MSAA texture is created for the above
> pbuffer, it will be assigned B8G8R8A8_UNORM/R8G8B8A8_UNORM angle format
> but has no knowledge about alpha write disable. Consequently, when a
> render pass uses this implicit MSAA texture, its alpha channel won't be
> cleared properly and would contain garbage values.
>
> In order to avoid the above bug, we should use
> B8G8R8X8_UNORM/R8G8B8X8_UNORM angle format for the IOSurface pbuffer.
>
> This will fix the render corruptions found in chromium:358957665.
>
> Bug: angleproject:42261786
> Bug: chromium:358957665
> Change-Id: I8aa1e24ace2de80dd08e21711445515ba4b339ff
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5788801
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Bug: angleproject:42261786
Bug: chromium:358957665
Change-Id: I29238588f78f2d01c77a317b2a22670a8036d2e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5939455
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
831a52f2
|
2024-10-16T13:46:04
|
|
Hold on to error message in LinkTaskMtl as C++ string.
Make a copy of the incoming C string because the error message might
be dynamically allocated and deallocated by the caller.
Bug: angleproject:370425451
Change-Id: If4aaa93a90a1da8bc60f7839e29b705b0d2864e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5938484
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kenneth Russell <kbr@chromium.org>
|
|
2f644ed8
|
2024-10-16T00:00:00
|
|
Implement NULL translator output
Fixed: angleproject:373818287
Change-Id: If862e8e66a043ef968daea91d95717af97e3a0de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5937827
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
323187d9
|
2024-10-11T13:48:51
|
|
Vulkan: Fix color attachment limit with framebuffer fetch
ANGLE incorreclty assumed that the input descriptor limit is at least as
big as the color attachment limit. This is not true on Intel/windows
where 8 color attachments are available but only 7 input descriptors.
With this change, the color attachment limit is dropped to 7 in such a
case so that framebuffer fetch can continue to be supported.
Bug: angleproject:372873263
Change-Id: If836563b47399a23b293b74815f6bccb21aaf47c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5919759
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3fa74223
|
2024-03-26T17:13:52
|
|
Vulkan: Add check for VK_EXT_external_memory_host extension
Tests-Passing: GN Build
Bug: angleproject:42266936
Change-Id: Ie30f1cee939bc8a4b98d37f718e4526156916f05
Signed-off-by: Rafay Khurram <r.khurram@samsung.com>
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5796524
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|