|
99c47333
|
2025-10-15T13:21:19
|
|
[metal] Fix data race in commands scheduled sync
The recently added commands scheduled sync object adds a callback to
the command queue to be invoked when the scheduled handler for the
committed command buffer runs. This callback could be called after the
sync object is destoyed, so make sure it doesn't reference the original
sync object, but only a thread-safe ref-counted state object.
Bug: chromium:444702048
Change-Id: Ifaef54eae5dfdb0b6eb6b767120947e66a6a6964
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7046662
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
774bca93
|
2025-10-08T18:41:13
|
|
[metal] Add commands scheduled sync object
We need a thread-safe way to wait for ANGLE Metal command buffers to be
scheduled for IOSurface synchronization with DrDC + Graphite on Mac.
The existing eglWaitUntilWorkScheduledANGLE API isn't thread-safe as it
reaches into ContextMtl innards to flush the command buffer.
This CL adds the EGL_ANGLE_metal_commands_scheduled_sync extension which
introduces a EGL_SYNC_METAL_COMMANDS_SCHEDULED_ANGLE sync object type.
This sync object is signaled when pending Metal commands are scheduled
to run on the GPU (MTLCommandBufferStatusScheduled). These sync objects
are thread-safe - eglClientWaitSync() can be called on any thread even
without a current context which is needed for DrDC + Graphite on Mac.
Bug: chromium:444702048
Change-Id: Ia13b352385a6fefaa026526ef74f6e596a6a6964
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/7027996
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
|
|
e3dc97b1
|
2025-09-22T16:38:28
|
|
Metal: fix SDK condition macro for mathMode.
It was missing conditions for tvOS and visionOS and the conditions were
> instead of >=.
Bug: chromium:383994655
Change-Id: I0a565a7028a3fe43b745419d9bac1da0abcc99be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6972592
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
0e719508
|
2025-09-22T11:37:36
|
|
Metal: Gate mathMode usage on compile time SDK versions.
Integrators of ANGLE who compile with SDK versions lower than macOS 15
would get compile errors by referencing mathMode.
Bug: chromium:383994655
Change-Id: I152403977c1233e4049f13f3d99cdd12fdf87073
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6973058
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
|
|
1b5fc24c
|
2025-09-17T16:36:33
|
|
Metal: Avoid deprecated fastMathEnabled on newer MacOS.
Use the mathMode and mathFloatingPointFunctions properties instead. The
new enum properties are set to the equivalent bool value from before.
Bug: chromium:383994655
Change-Id: Ia28f5b8358fe0721183dd6041432856d25e16475
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6962694
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
2f564f1c
|
2025-09-16T16:46:36
|
|
mac: handle Metal toolchain being unbundled from Xcode 26
The Metal toolchain was formerly part of Xcode, but in Xcode 26, it has
been unbundled and is now a separate install. Attempting to use the
Metal toolchain without installing it results in a build error, such as:
error: error: cannot execute tool 'metal' due to missing Metal
Toolchain; use: xcodebuild -downloadComponent MetalToolchain
By running the suggested command, the Metal toolchain can be installed,
but the existing angle build does not know how to find it correctly.
For system Xcode installations, tools from the Metal toolchain (`metal`
and `metallib`) can be run via `xcrun`. This construct should work
equally well for older Xcode versions, for situations where it’s still
in use.
For the hermetic toolchain, we’ll continue splicing the Metal toolchain
into the location it had previously been avialable (see
https://chromium-review.googlesource.com/c/6950738), although this is
subject to change in the future.
Bug: chromium:423933062, chromium:445400016
Change-Id: I139eca51938f7cecfec9b90fd488947160ef4ec9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6955000
Auto-Submit: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a02670d6
|
2025-08-26T20:41:16
|
|
Move unsafe buffers inside header guard macros
While this is exactly opposite of what Chromium has chosen to do,
there is an issue with clang-format trying to indent preprocessor
directives four spaces relative to include guard. This is because
Angle's .clang-format file specifies IndentPPDirectives: AfterHash
but Chromium's does not. The current placement is sufficient to
throw off clang-format's guard detection since the guard macro no
longer covers the entire file.
Bug: b/436880895
Change-Id: Ic6b99c8cef6213939cdf9b42af8730e1eb423065
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6885892
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
25390156
|
2025-08-21T00:13:19
|
|
Suppress unsafe buffers on a file-by-file basis in src/ [1 of N]
In this CL, we suppress many files but stop short of actually
enabling the warning by not removing the line from the
unsafe_buffers_paths.txt file. That will happen in a follow-on
CL, along with resolving any stragglers missed here.
This is mostly a manual change so as to familiarize myself with
the kinds of issues faced by the Angle codebase when applying buffer
safety warnings.
-- Re-generate affected hashes.
-- Clang-format applied to all changed files.
-- Add a few missing .reserve() calls to vectors as noticed.
-- Fix some mismatches between file names and header comments.
-- Be more consistent with header comment format (blank lines and
trailing //-only lines when a filename comment adjoins license
boilerplate).
Bug: b/436880895
Change-Id: I3bde5cc2059acbe8345057289214f1a26f1c34aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6869022
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
86a8d11c
|
2025-08-11T16:45:39
|
|
Metal: Fix potential incorrect format used for texSubImage
TextureMtl caches the most recent format used for a texture
redefinition in mFormat. During subImage calls, this format may not be
the same as the image being uploaded to.
Pass ImageDefinitionMtl to these functions which reference mFormat, it
contains the format of the image being updated.
MacOS OpenGL is skipped because the driver generates errors in
glCompressedTexImage2D.
Bug: chromium:435683799
Change-Id: Idec6f71870c2d376cad3a5e3628b957009bdced9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6838878
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
fa29f604
|
2025-07-02T13:23:31
|
|
Remove sharedContextLock from {Enable|Disable}VertexAttribArray
VertexArray objects are per context objects. In theory they do not need
to protected by shared context lock. The reason we are taking locks
because all these functions end up accessing Buffer object which are
shared. In prior CLs we have removed subject observer usage from
VertexArray which means VertexArray no longer accessed from other
thread. In prior CLs we also split VertexArray into two classes:
VertexArrayPrivate which has no buffer, and VertexArray which is
subclass from VertexArrayPrivate and owns buffer. In this CL,
glEnableVertexAttribArray and glDisableVertexAttribArray calls no longer
take shared context lock. ContextPrivateEnableVertexAttribArray and
ContextPrivateDisableVertexAttribArray are called from these two APIs
and they only have access to StatePrivate. State Private holds a
VertexArrayPrivate pointer, which means they do not have anyway to
access buffer objects. The main challenge I run into here is
mCachedActiveClientAttribsMask, mCachedActiveBufferedAttribsMask,
mCachedActiveDefaultAttribsMask, mCachedHasAnyEnabledClientAttrib,
mCachedNonInstancedVertexElementLimit,
mCachedInstancedVertexElementLimit. These StateCache variable needs to
be updated when these two APIs are called, and calculating these
variable needs access to buffer object. The solution here is adding a
bool mIsCachedActiveAttribMasksValid in the PrivateStateCache so that
instead of immediately update these mCached* variable, we just set
mIsCachedActiveAttribMasksValid to false. Then whenever any of these
mCached* variable is needed, we will check
mIsCachedActiveAttribMasksValid and calculate these cached variables. It
adds one if check when accessing these caches, but the other benefit is
that we may have avoided duplicated calculation when multiple states
changed.
Bug: b/433331119
Change-Id: I3227c72bc40501712db93fb3d540b835f07150b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4514436
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
|
|
5fd368aa
|
2025-07-30T14:45:55
|
|
Replace Surface::getWidth/Height() with getSize()
Most places in the code use both `getWidth/Height()` methods at the same
time. On some back-ends it is more optimal to have single method.
For example, `WindowSurfaceWGL` first uses `GetClientRect()` Win32 API
inside each method to then calculate width and hight in each method,
causing repeated `GetClientRect()` call.
The only place where only one of the methods may be used is from
`SurfaceImpl::getUserSize()` when one of the parameters is `nullptr`,
which is only possible from `QuerySurfaceAttrib()` function. This
method is rewritten to use new `getSize()` method and then use whatever
dimensions is requested by the caller. This may cause
`QuerySurfaceAttrib()` inefficiency on some back-ends that get width and
height of the surface differently (`SurfaceEGL` for example). In such
cases `getUserSize()` is overridden to avoid returning a dimension
which is not required.
After this change all places in the code that previously used both
`getWidth/Height()` methods (like `Surface::getAttachmentSize()`) will
be more efficient. The `QuerySurfaceAttrib()`, on the other hand, will
have slightly more overhead on back-ends where base
`SurfaceImpl::getUserSize()` method is used, which only happens on
back-ends with trivial `getSize()` implementation.
Bug: angleproject:397848903
Change-Id: I4a22701a1e62ee4e7d07e77cac5b388050d98e4d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6802440
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Igor Nazarov <i.nazarov@samsung.com>
|
|
b4d84458
|
2025-05-23T18:08:19
|
|
Move Buffer from VertexBinding to VertexArray
In later CL we will not taking shared context lock for certain
VertexArray API calls. VertexArray itself is per context, so this sounds
reasonable to do. The main challenge here is a lot of VertexArray
function end up accessing gl::Buffer object, which could be modified by
other shared contexts. In order to safely not taking the shared context
lock, we need to separate out Buffer object out of VertexArray itself so
that these lockless APIs will take VertexArray that does not have access
to buffer.
In this CL, VertexArray is split into two classes: VertexArrayPrivate is
everything in VertexArray except buffers. VertexArray is a subclass of
VertexArrayPrivate and owns all the buffers. Buffer is removed from
gl::VertexBinding class. In order to let back end access to buffers,
VertexArrayImpl holds a weak reference to
VertexArray::mVertexArrayBuffers (which is a vector of buffers).
Further, VertexArrayBufferBindingMask mBufferBindingMask is moved from
VertexArrayState into VertexArray class well, since it tracks which
index has a non-null buffer. The bulk of change are due to the
VertexARrayImpl constructor change, since it now takes
vertexArrayBuffers argument. Other bulk of changes are due to
VertexBinding no long has the buffer, but you need to get it directly
from VertexArray or VertexArrayImpl.
This CL also reverts some of the change in crrev.com/c/6758215 that
mVertexBindings no longer contains kElementArrayBufferIndex.
BYPASS_LARGE_CHANGE_WARNING
Bug: b/433331119
Change-Id: I15f4576f7c5c8d8f4d9c9c07d38a60ce539bfeea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6774702
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
8dca0efe
|
2025-07-21T15:29:10
|
|
Replace VertexArray::DIRTY_BIT_LOST_OBSERVATION with API call
This dirty bit was added so that back end can inspect buffers and set
proper VertexArray::DirtyBitType. The same thing can achieved by add a
virtual function on VertexArrayImpl class. The advantage of virtual
function on VertexArrayImpl is that all back end essentially have the
same implementation and we can just implemented in VertexArrayImpl
instead of duplicate in each back end. The other advantage is after this
CL DIRTY_BIT_BINDING_n and DIRTY_BIT_BUFFER_DATA_n will be well aligned
instead of offset by 1 caused by DIRTY_BIT_LOST_OBSERVATION. The other
motivation of this change is in later CL I want to move
mBufferBindingMask out of VertexArrayState, which means back end will
not have access to it. By using VertexArrayImpl API, I can pass
mBufferBindingMask directly to the back end via function parameter. So,
this CL removed DIRTY_BIT_LOST_OBSERVATION, added
VertexArrayImpl::checkBufferForDirtyBits().
Bug: b/433331119
Change-Id: I5c8cbc9bace63db416e86c2ae3631f74a12b20b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6775986
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b7582680
|
2025-02-24T18:04:32
|
|
Reland: GL: Allow untranslated shaders to pass through on GLES
Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
uses the NULL translator and passes the original shader to the driver.
The parser is still used for shader reflection.
Always enable the null compiler backend. It has almost no binary size
cost and is now potentially used when the null ANGLE backend is not
enabled.
Bug: angleproject:398857482
Change-Id: Id528189ccbbacb1c444eacb151baadfda9fcc04b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6488609
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
2ac49bb6
|
2025-07-01T12:11:12
|
|
Reland "Vulkan: Move VertexArray::ElementBuffer away from observer"
This reverts commit 79ac1a8cd767a32cce6401203e20c4bd4ca4d539.
Reason for revert: the regression bug is fixed in PS6
The regression bug with the original CL is caused by when we bind a
vertex array without element buffer rebind, we missed to reset
mIndexRangeInlineCache. The other bug is that VertexArray::mDiryBits is
64 bit but VertexArrayBufferBindingMask is 16 bit, in
VertexArray::setDependentDirtyBits(), bufferBindingMask.to_ulong() <<
DIRTY_BIT_BUFFER_DATA_0 is only producing the 32 bit value on windows
platform due to unsigned long is 32 bit value. bits() is used and bit
shift is operated on to uint64_t here to avoid dropping high bits on
windows.
Two tests are added that reproduce the regression bug caused by
the original CL.
Bug: angleproject:400711938
Original change's description:
> Revert "Vulkan: Move VertexArray::ElementBuffer away from observer"
>
> This reverts commit 3f012a43ee2c101543785720eedfeaa80708479d.
>
> Reason for revert: https://issues.chromium.org/427064102
>
> Bug: angleproject:400711938
> Original change's description:
> > Vulkan: Move VertexArray::ElementBuffer away from observer
> >
> > Right now, VertexArray's element buffer is always observing buffer's
> > change. In previous CLs, we have moved vertex array away from
> > subject/observer usage. This CL moves element buffer away from
> > subject/observer as well. Since the gl::Buffer tracks buffer's binding
> > to each context's current vertex array's binding point,
> > kElementArrayBufferIndex is added to VertexArrayBufferBindingMask bits
> > so that the element buffer is tracked exactly the same as other vertex
> > array buffer bindings. The VerextArray code has been modified to handle
> > this special bit, since element buffer has its own binding point
> > VertexArrayState::mElementArrayBuffer as opposed to
> > VertexArrayState::mVertexBindings. After this CL, VertexArray object
> > should be completely off subject/observer usages.
> >
> > Bug: angleproject:400711938
> > Change-Id: I662ddfabc95034bdc7734939c944ab033f41801c
> > Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6552160
> > Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> > Reviewed-by: Geoff Lang <geofflang@chromium.org>
> > Commit-Queue: Charlie Lao <cclao@google.com>
>
> Bug: angleproject:400711938
> Change-Id: I9487ba8b108baaeda1c8a27189dba64f77616774
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6663539
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Bug: angleproject:400711938
Change-Id: I3f47ad1238c41f12b5cbd7a59b84be3fce1e9562
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6664004
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
d28c6adf
|
2025-06-19T09:41:26
|
|
Modernize for macOS 12
macOS 12 is the minimum OS requirement, so remove the "main port"
workaround and do other modernization.
Bug: b/40250210
Change-Id: I9638014732f0589fc6171c0fe617b3c563f00c28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6655558
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
beae1b4a
|
2025-06-19T00:00:00
|
|
Metal: Remove obsolete workarounds
Removed Intel-specific Metal workarounds
that are not used on macOS 12 and later.
Removed a redundant version check.
Bug: angleproject:427600175
Change-Id: I34c7e53108f7e030512c9436ab2b9ae38ad17946
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6672312
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
94ee620d
|
2025-05-22T10:07:05
|
|
Metal: Allow optimization of simple loops
Reimplement the feature to avoid undefined behavior of infinite loops.
Add EnsureLoopForwardProgress rewrite pass that inserts a volatile
variable access to all loops that it cannot analyze as being finite.
Detect loops of form `for (; i <op> x; ++i)` as being finite.
The <op> can be any of <,<=,>,>=,==, != operator.
The i can be int or uint.
The ++i can be -- or ++, -=1, +=1.
This assumes that backends using the feature emit signed int arithmetic
with defined wraparound semantics.
Uses volatile write instead of asm("") due to asm not forcing the
behavior in some compiler versions. The volatile variable access is
defined in C++ as forward progress, and by inheritance this works in
MSL.
Later commits may remove injectAsmStatementIntoLoopBodies if
ensureLoopForwardProgress is appropriate for all use-cases.
Bug: angleproject:418918522
Change-Id: Ic9c29f57044b792195386483208632354d24c854
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6575051
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
c6b3440b
|
2025-06-06T23:34:33
|
|
Vulkan: Add G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 support.
Add support for YCBCR_P010 format.
Bug: b/408996471
Change-Id: I899533b604e5b2fd0ad1fb1e940dd1f119179794
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6628658
Reviewed-by: Solti Ho <solti@google.com>
Auto-Submit: Shashank Sharma <shawshanks@google.com>
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
27a1b2c9
|
2025-03-13T09:10:54
|
|
Metal: Fix crash with 3d tex, alpha, depth
Fix a crash when generating mipmaps for a 3d texture that has
mipmaps with w,h == 1, i.e. depth > max(2*w, 2*h).
Bug: angleproject:419755713
Change-Id: I7bf7f1f71c03b2bf6f8a30df30dc77ad06d433fe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6580167
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
150f1242
|
2025-03-11T18:34:37
|
|
Metal: Provoking vertex conv. reads out of buffer
The provoking vertex helper would encode the addresses of index count
and primitive count variables, not their values. This would cause
the provoking vertex conversion shader to read overly many indices.
Not testable easily from the API, as the excessive read is hard to
test. Would cause context loss on the existing tests when run with
validation.
Bug: angleproject:419755715
Change-Id: Id81ecc66513c0eac1e95d11937f12d9bebb5e11e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6578202
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
937cf23c
|
2025-05-13T16:11:47
|
|
Vulkan: Remove VertexArrayBufferContentsObservers
When vertex array needs to convert buffer's data, right now it uses
Subject/Observer to subscribe notifications from buffers about the data
change. Since we always dirty all binding point when we bind
VertexArray, or app has to rebind buffer to vertex array if its on the
other context, this notification really is only needed for the current
context's vertex array. In prior CLs we already moved notification from
buffer to the current context's vertex array away from Subject/Observer
usage pattern. This CL did similar things to
VertexArrayBufferContentsObservers::mContentsObservers.
VertexArrayBufferContentsObservers has been deleted in this CL. Each
VertexArrayImpl now tracks the need of content observer with a bit mask
of each bindingIndex (which is tracked by
mContentsObserverBindingsMask). When a buffer's content changes,
gl::Buffer will retrieve this bit mask from backend and pass it to the
current gl::Context, which sends to current VertexArray object, which
then set proper DATA dirty bits on VertexArray based on the binding bit
mask. If back end think it does not need any data conversion, then the
bit mask is zero and nothing will be done. This further removes
dependence on subject observer, which enables us to avoid taking shared
context lock for glEnableVertexAttribArray and
glDisableVertexAttribArray.
Bug: angleproject:400711938
Change-Id: Ieb0c09c042a560dd121242b63ec24478482399b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6549157
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a06e4d49
|
2025-05-08T00:00:00
|
|
Metal: Implement InsertEventMarker
* Added a missing command buffer call.
* Renamed related symbols to match Metal API.
* Removed ConvertMarkerToString helper because
marker length is now handled in the frontend.
Bug: angleproject:417857731
Change-Id: Ifa9edaafaf16af9913420554e5847a5a25b8d2f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6549282
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
3bbdee0f
|
2025-03-28T11:55:24
|
|
Vulkan: Remove Subject/Observer from BufferImpl
Right now the gl::Buffer back end send message to the front end and then
gl::Buffer propagate the message to the observers (vertex array,
textures, transform feedback). We are seeing many of these kind of
message passing (mainly to vertexArray), and each message is a virtual
function call. The message call also lacks of context information that
we can not do certain optimizations. This CL adopts the new API feedback
argument approach for buffer APIs from the back end to the front end.
The only difficulty I ran into is D3D backend where the message could be
delivered from draw calls. For now the subject/observer code path is
still kept in the gl::Buffer, but no back end will use it except D3D11.
That will be removed in the later CL when D3D11 switch to use feedback
mechanism.
BYPASS_LARGE_CHANGE_WARNING
Bug: angleproject:400711938
Change-Id: I5fb3b660fd4260b9ba691239ad777b575b31e2ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6408892
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
60d6c94f
|
2025-04-24T00:00:00
|
|
Metal: Implement draw_elements_base_vertex extensions
Fixed: angleproject:40096829
Change-Id: I288a38fbfa6a39cd9d683302722ebfaf495ba8db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6527729
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8ea69d84
|
2025-05-07T12:26:48
|
|
metal: Synchronize imported IOSurfaces with command buffer
We want to skip the various Metal waitUntilScheduled calls in Chromium
on single GPU systems and use only shared events for synchronization.
However, this doesn't work correctly today because ANGLE can do CPU
readbacks from the IOSurface without synchronizing with the command
buffer which contains the shared event wait. This is because ANGLE
doesn't know about the dependency between the IOSurface texture and the
shared event wait in the command buffer.
This CL makes BindTexImage mark the IOSurface texture as used so that we
wait for command buffer execution if we do a CPU readback. It reuses the
setWriteDependency mechanism on mtl::CommandBuffer.
Bug: chromium:40273077
Change-Id: I5d480f2c28abbd6d36cf1e1045461c84b3e4a1f0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6514098
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
|
|
cdcf6a63
|
2025-04-22T10:19:33
|
|
Add R10X6G10X6B10X6A10X6 support on angle
Bug: angleproject:409355677
Change-Id: I8115ca73a038360f673552532e9d9b87ff846867
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438114
Commit-Queue: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
07eeca12
|
2025-04-17T20:58:19
|
|
Metal: prevent padding in state cache's structs.
Fixed: angleproject:411845677
Change-Id: I8a9635634e66f86c132205f75825a916481f7ad0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6468239
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
f6a350de
|
2025-04-17T20:43:08
|
|
Metal: fix rasterSamplecount not used in comparing render passes.
RenderPassDesc's rasterSamplecount was not used to comparing two
render passes' descriptors.
Note: no reported bug found related to this missing comparison yet.
This bug most likely affects render passes without any attachment
(PLS?). Because if the 2 render passes have the same attachments, their
rasterSamplecount values must also be equal.
There was also a missing rasterSamplecount comparison in
RenderPipelineOutputDesc::operator==. However, this function is not
used. When comparing two render pipelines,
RenderPipelineDesc::operator== is used instead, which is currently
implemented using memcmp. So removing the former to avoid confusions.
Bug: angleproject:411845677
Change-Id: Ic9b1867226561d096c1fb8ca2194b657d29daa18
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6468238
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
4b9525b2
|
2025-04-04T00:00:00
|
|
Remove all getClientMajorVersion helpers
Client version checks should use
proper struct compare operations.
Bug: angleproject:408843436
Change-Id: I92cd91d1e7e6daa761f79060835aa534c5671264
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6467460
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5dd05578
|
2025-04-14T07:34:57
|
|
Revert "GL: Allow untranslated shaders to pass through on GLES"
This reverts commit 4e77552b86a89b449ada6d6c18f84285f5812b1d.
Reason for revert: breaks ChromeOS and fuzzers
Bug: angleproject:398857482
Original change's description:
> GL: Allow untranslated shaders to pass through on GLES
>
> Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
> uses the NULL translator and passes the original shader to the driver.
> The parser is still used for shader reflection.
>
> Bug: angleproject:398857482
> Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:398857482, angleproject:410423936
Bug: chromium:410114655, chromium:410100607, chromium:410121218
Bug: chromium:410052365, chromium:410290507, chromium:410178288
No-Presubmit: true
Change-Id: I45b01960637a1cda05d21a7df6d07465f6a8f5e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448984
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
4e77552b
|
2025-02-24T18:04:32
|
|
GL: Allow untranslated shaders to pass through on GLES
Add an EGL extension EGL_ANGLE_create_context_passthrough_shaders which
uses the NULL translator and passes the original shader to the driver.
The parser is still used for shader reflection.
Bug: angleproject:398857482
Change-Id: I7c5fcc318c7e11931f78c08dcbf4764bf77d397d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6297527
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
595d79e4
|
2025-04-04T00:00:00
|
|
Do not expose GL_ARB_sync
That extension does not exist in OpenGL ES.
Fixed: angleproject:409717088
Change-Id: I82234f0051c2c646ef15c22e1a0da1704ef3a35b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6448233
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
02ae054c
|
2025-04-07T13:48:29
|
|
Translator: Fix init of inactive output variables
Bug: chromium:398401939
Change-Id: I0df494b945b8d0e805a62cf7645d06bf233f36ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6438495
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4d478713
|
2025-04-03T08:10:40
|
|
Revert "Metal: Make StateCache descriptors hash consistent"
This reverts commit 4334125be506e0c2c5dde4cfc29b31a7ff2bdec6.
Reason for revert: Pipeline creation failures.
Bug: chromium:407310859
Original change's description:
> Metal: Make StateCache descriptors hash consistent
>
> Various descriptors would compare equality and do hashing based on the
> underlying storage. The storage contains alignment padding and
> bitfields. The contents of these are not defined, even when the
> constructors tried to memset and memcpy.
>
> The various hash and compare functions also seemed to be missing some
> elements, like rasterSampleCount.
>
> Missing == on fields and hashing unused memory may lead to inconsistency
> where a==b is true but hash(a) != hash(b).
>
> Fix by:
> Remove the memset/memcpy and write out the operator== and
> hash() consistently.
>
> Initialize the members to their default values.
>
> Use uint32_t : 1 instead of bool if the struct tries to optimize for
> size, since mixing types stops the packing.
>
> Use uint32_t to get the alignment to uint32_t, which is mostly what
> is expected.
>
> Use uint32 someVar : N where N is payload bits + padding bits for
> the last member. This way the assignment clears the padding bits.
> The goal os to get the operator== to compare the padding bits, which
> lets the compiler elide the memberwise compares and use word-wise
> compares where it makes sense.
>
> This is an attempt to fix rare crashes related to map inserts
> and lookups. std::unordered_map will crash if operator== is not
> consistent with hash.
>
> Bug: angleproject:403372465
> Change-Id: I0a3a2ff327ac9f65e7d41bc9585cda54ce93ab86
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355828
> Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
> Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:403372465
Change-Id: Id111c0728b603776fd8085fd395819bb5aa14722
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6428466
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0f9feb49
|
2025-03-15T23:51:04
|
|
Metal: Use render passes for B2T PBO copies.
This would make it possible to avoid setting ShaderWrite usage to all
textures in future.
Bug: chromium:392521084
Change-Id: I25145f3578589c71ee469df08162d3a3f17c8cbe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6356129
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
ecc378cc
|
2025-03-03T16:43:33
|
|
Reland "Dont use Subject/Observer for SwapchainImageChanged"
This is reland of the following CL
https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Change-Id: I017b0e8934b5194a520828fa5c4af1d6e3ef9aac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6404621
|
|
4334125b
|
2025-03-14T16:12:32
|
|
Metal: Make StateCache descriptors hash consistent
Various descriptors would compare equality and do hashing based on the
underlying storage. The storage contains alignment padding and
bitfields. The contents of these are not defined, even when the
constructors tried to memset and memcpy.
The various hash and compare functions also seemed to be missing some
elements, like rasterSampleCount.
Missing == on fields and hashing unused memory may lead to inconsistency
where a==b is true but hash(a) != hash(b).
Fix by:
Remove the memset/memcpy and write out the operator== and
hash() consistently.
Initialize the members to their default values.
Use uint32_t : 1 instead of bool if the struct tries to optimize for
size, since mixing types stops the packing.
Use uint32_t to get the alignment to uint32_t, which is mostly what
is expected.
Use uint32 someVar : N where N is payload bits + padding bits for
the last member. This way the assignment clears the padding bits.
The goal os to get the operator== to compare the padding bits, which
lets the compiler elide the memberwise compares and use word-wise
compares where it makes sense.
This is an attempt to fix rare crashes related to map inserts
and lookups. std::unordered_map will crash if operator== is not
consistent with hash.
Bug: angleproject:403372465
Change-Id: I0a3a2ff327ac9f65e7d41bc9585cda54ce93ab86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6355828
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
3cfc0ce2
|
2025-03-24T07:41:33
|
|
Revert "Vulkan:Dont use Subject/Observer for SwapchainImageChanged"
This reverts commit 48103cb2f2b292cb50cc5a29546b358b2e47fd29.
Reason for revert: assert fails
https://ci.chromium.org/ui/p/angle/builders/ci/android-arm64-exp-test/7085/overview
I 22:27:33.697 77.533s _RunTestsOnDevice(17221FDF6000A4) [ RUN ] EGLAndroidAutoRefreshTest.SwapCPUThrottling/ES3_Vulkan_NoFixture
INFO:root:ERR: SurfaceVk.cpp:3165 (getCurrentFramebuffer): ! Assert failed in getCurrentFramebuffer (../../src/libANGLE/renderer/vulkan/SurfaceVk.cpp:3165): mAcquireOperation.state == ImageAcquireState::Ready
Original change's description:
> Vulkan:Dont use Subject/Observer for SwapchainImageChanged
>
> Because we do deferred ANI (VkAcquireNextImage) call until image is
> needed, we need a way to force Context to go through
> FramebufferVk::syncState call (FramebufferVk::syncState calls
> WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
> Right now we uses subject/observer mechanism, by sending
> angle::SubjectMessage::SwapchainImageChanged to all observers of
> WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
> redirects this message to its observers, which are all gl::Framebuffer's
> attachments: color, depth, stencil. Even though only color attachment
> needs to be notified, but because we don't have a separate list of
> observers, depth/stencil attachment also receive the notification and
> they early out. Then gl::Framebuffer sets
> DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
> angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
> and ReadFBO and dirty cached state. Note that this is specific for swap
> image changed case, there is no surface property change (surface
> property change will still trigger the subject/observer message with
> SubjectMessage::SubjectChanged message, but this occurs rarely). This
> gets worse for apps that uses multiple contexts, for the example
> pokemon_masters_ex has three contexts, each context has its own default
> frame buffer that attach to the same surface, and we never remove
> non-current context from the observer list. This end up with
> egl::Surface has 12 observers and for every frame, it loop over the list
> of 12 observers and send message (virtual function call) to each of
> them. Color attachment also ends up sending two messages to Context, one
> for Read FBO and another for Draw FBO. There are total 21 virtual
> function calls. Even for single context usage, you have 6 virtual
> function calls, for every frame.
>
> EGL spec says "an EGLSurface must be current on only one thread at a
> time", any other context must call EGLMakeCurrent in order to use this
> surface, which will add all necessary dirty bits at that time. So we
> really only need to notify current context. In this CL,
> SwapchainImageChanged no longer uses subject/observer mechanism, so this
> message is removed.
>
> This CL still uses subject/observer mechanism to send DirtyBitsFlagged
> from Framebuffer back to context. We could call setDrawFramebufferDirty
> and setReadFramebufferDirty directly, but that will require to remove
> the "const" decoration out of gl::Context which generates too much code
> diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
> used.
>
> Bug: angleproject:400711938
> Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
> Commit-Queue: Charlie Lao <cclao@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Yuxin Hu <yuxinhu@google.com>
Bug: angleproject:400711938
Change-Id: Ib7899d1ac63a1f86af0953a1d25922578c470fc9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6387755
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
48103cb2
|
2025-03-03T16:43:33
|
|
Vulkan:Dont use Subject/Observer for SwapchainImageChanged
Because we do deferred ANI (VkAcquireNextImage) call until image is
needed, we need a way to force Context to go through
FramebufferVk::syncState call (FramebufferVk::syncState calls
WindowSurfaceVk::getAttachmentRenderTarget, which end up calling ANI.
Right now we uses subject/observer mechanism, by sending
angle::SubjectMessage::SwapchainImageChanged to all observers of
WindowSurfaceVk. In this case it is egl::Surface. Then eglSurface
redirects this message to its observers, which are all gl::Framebuffer's
attachments: color, depth, stencil. Even though only color attachment
needs to be notified, but because we don't have a separate list of
observers, depth/stencil attachment also receive the notification and
they early out. Then gl::Framebuffer sets
DIRTY_BIT_COLOR_BUFFER_CONTENTS_0 dirty bit and send the
angle::SubjectMessage::DirtyBitsFlagged to Context, which dirty DrawFBO
and ReadFBO and dirty cached state. Note that this is specific for swap
image changed case, there is no surface property change (surface
property change will still trigger the subject/observer message with
SubjectMessage::SubjectChanged message, but this occurs rarely). This
gets worse for apps that uses multiple contexts, for the example
pokemon_masters_ex has three contexts, each context has its own default
frame buffer that attach to the same surface, and we never remove
non-current context from the observer list. This end up with
egl::Surface has 12 observers and for every frame, it loop over the list
of 12 observers and send message (virtual function call) to each of
them. Color attachment also ends up sending two messages to Context, one
for Read FBO and another for Draw FBO. There are total 21 virtual
function calls. Even for single context usage, you have 6 virtual
function calls, for every frame.
EGL spec says "an EGLSurface must be current on only one thread at a
time", any other context must call EGLMakeCurrent in order to use this
surface, which will add all necessary dirty bits at that time. So we
really only need to notify current context. In this CL,
SwapchainImageChanged no longer uses subject/observer mechanism, so this
message is removed.
This CL still uses subject/observer mechanism to send DirtyBitsFlagged
from Framebuffer back to context. We could call setDrawFramebufferDirty
and setReadFramebufferDirty directly, but that will require to remove
the "const" decoration out of gl::Context which generates too much code
diff, so onStateChange(angle::SubjectMessage::DirtyBitsFlagged) is still
used.
Bug: angleproject:400711938
Change-Id: I61354516fd0aa307714b7abd30c6b6e45ff7b496
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6319893
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuxin Hu <yuxinhu@google.com>
|
|
c36d0cf0
|
2025-03-14T14:09:41
|
|
Metal: Improve ColorBlitUtils shader key hash
Did not hash transformLinearToSrgb.
Bug: angleproject:403372465
Change-Id: Ie06cf3535775f753e0468505e8b31fd513130b98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6356891
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
292bb458
|
2025-03-14T12:17:49
|
|
Cut MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_ANGLE
Since the number of real devices that support framebuffer fetch, but do
not support draw_buffers_indexed, is effectively zero,
MAX_COLOR_ATTACHMENTS_WITH_ACTIVE_PIXEL_LOCAL_STORAGE_ANGLE is an
unnecessary complication. These hypothetical devices can fall back on
shader images or just not support pixel local storage at all.
This closes the door for WEBGL_shader_pixel_local_storage to ever be
implemented on top of the ES2 extension that inspired it all,
EXT_shader_pixel_local_storage, but WebGL can just use framebuffer fetch
instead, or maybe even EXT_shader_pixel_local_storage2 some day.
This dramatically simplifies the WEBGL_shader_pixel_local_storage
extension.
Bug: angleproject:40096838
Change-Id: I9c51f2ce000620f883cb7917d4e8618c8e9ee803
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6354657
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
|
|
f64a9547
|
2025-03-15T23:45:33
|
|
Metal: remove "Compute" from EnsureComputeShaderInitialized() name
Previously this function was named EnsureComputePipelineInitialized()
because it would create a compute pipeline. However at some point, the
pipeline's creation was moved to a pipeline cache. Thus this function
now only creates a shader function. This can be used to create both
compute & graphics shader functions so we should remove the "Compute"
part from its name.
Bug: None
Change-Id: I73d101142ec1fc72d150579bc409b1dea3196940
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6357511
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
62bf97d9
|
2025-03-10T14:23:31
|
|
Metal: Fix line loop indexes for primitive restart
Use the existing code to generate line strips from line loops.
Bug: angleproject:401284933
Change-Id: Ie131199c23b93364fabb8f0dc6766f7e8d5f2b8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333539
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
9a753dba
|
2025-01-16T13:00:07
|
|
Metal: remove unused, buggy primitive restart code
Remove functions related to primitive restart that are not used and
are buggy.
Bug: angleproject:401284933
Change-Id: I4b64fda45f2d1654fafd180aeaaf17fe365d5016
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6333537
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
cfb430c8
|
2025-02-10T13:19:05
|
|
Remove angle::ErrorStream helper
Most uses of the helper either use just the code or a fixed string,
which compiles to a few instructions. Using this helper adds 200+ bytes
of assembly to each use, due to the unneeded instantiation of
ostringstream which allocates a buffer etc. The combined effect of this
CL on an Android perf build is ~12KB (0.2%) reduction in size.
The cases where the message is actually formatted are converted to an
explicit use of ostringstream. Removing the helper so that the new code
is explicit about the intent to use ostringstream, or an alternative way
to format the message.
Discovered accidentally while looking into size reduction due to
__builtin_unreachable()
Semi-automated code change, risk of copy-paste mistakes should be
minimal.
Bug: angleproject:394129077
Change-Id: I47c2642d750d31416b08a1cfa435d5463c294e35
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6250078
Commit-Queue: Roman Lavrov <romanl@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
|
|
869dde72
|
2025-02-07T15:44:12
|
|
Remove code paths for invoking the offline Metal compiler
We experimented with invoking the Metal shader compiler directly to
create cacheable shader libraries but the project did not show useful
gains.
It is currently all dead code, remove it.
Bug: b/391990604
Change-Id: I6d13278d1a27d8b3ae961a0846f31292f2506b23
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6245258
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d4083c79
|
2025-01-31T15:06:36
|
|
Metal: Make ObjCPtr available to all modules
Move ObjCPtr implementation to src/common/ObjCPtr.h,
angle::ObjCPtr so that it's available also outside libANGLE.
Bug: angleproject:393263506
Change-Id: I8ecd5632c7ae33ef4b409fc820fad229e91bc0ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219318
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
4e5f2ca3
|
2025-01-31T14:30:05
|
|
Metal: Rewrite AutoObjCPtr as ObjCPtr
Rewrite without WrappedObject base class, the base class only
convolutes things and does not help. This way the class can be
moved upwards in the software layers in subsequent commits.
Fix the class so that it can be used with ObjCPtr<T> and ObjCPtr<id<P>>
signatures, to resemble other smart pointers.
Remove the Auto prefix, ObjCPtr should be relatable to other smart
pointers such as unique_ptr.
Bug: angleproject:393263506
Change-Id: Ia5a5728514b7f9182c2ec8380c04716e8b9d2351
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219317
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
1675d47f
|
2025-01-31T10:05:03
|
|
Metal: Remove incorrect AutoObjCPtr construct on T &&
The T && constructor and operator= were incorrectly marked up as
"ownership transfer", clearing the source. However, there is no
ownership transfer in the assignment, and the call sites only work
due to the T source holding is never unretained directly.
Consider correct sequence (T is NSMutableArray *):
NSMutableArray *obj = [[NSMutableArray alloc] init];
AutoObjCPtr<NSMutableArray *> myHolder = std::move(obj);
[obj release];
Since the construct was retaining, the correct operation would need
a release on the original raw obj-c pointer. However, the T &&
constructor would clear out the raw obj-c pointer, and thus calling
release on the original pointer would not be possible.
Remove the T && constructor, and use just normal T constructor.
There's no ownership transfer when constructing AutoObjCPtr -- it is
a retaining operation. The constructor does need T &&,
raw obj-c objects are just passed normally as pointers, T.
Call sites keep their std::move()s, which are no-ops. When
functions accepting obj-c pointers get changed to accepting
AutoObjCPtrs, the move will start actually transferring the ownership.
Bug: angleproject:393263506
Change-Id: I5847f2ec98ab372343d0d2559c92dee9a327e126
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6219316
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bee34ea7
|
2025-01-30T18:39:00
|
|
Metal: Remove redundant AutoObjCObj template alias
Some members were held with AutoObjCObj<T> and some with
AutoObjCPtr<T *>. Use the latter.
Bug: angleproject:393263506
Change-Id: I9d8d56e9ffe3281d5e9087de7959249cbb4b9bd4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216872
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
81412e88
|
2025-01-30T16:46:26
|
|
Metal: Avoid using retainAssign()
Use more native C++ name for assign: operator=.
Bug: angleproject:393263506
Change-Id: Ia31a79fbb15474ba754034338340ef5c3ed6e8ec
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216871
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a04cb42a
|
2025-01-30T16:26:44
|
|
Metal: Remove autorelease use from libANGLE parts
Use adoptObjCPtr() instead of AUTORELEASE to make all code uniform
and more easy to reason about.
Bug: angleproject:393263506
Change-Id: I15ea7e29784bcbe6bee6341fe288b340db813538
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6216870
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
c411081f
|
2025-01-30T15:18:20
|
|
Metal: Remove RenderUtils mtl::Context base
RenderUtils is not using mtl::Context error
handling for anything.
Bug: angleproject:392938089
Change-Id: I1ef86db8f03ff34bb54726a0aad31d07fb1b44ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218788
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
7d37d970
|
2025-01-30T13:47:59
|
|
Make error messages end in a dot
Some messages had dot and some not.
Fix by adding dot to all error message string literals.
Best effort, for free form string literals, check ANGLE_CHECK invocation
sites only.
Bug: angleproject:392938089
Change-Id: Idedc3fe1d1e186fb91b5e54407df87f6830995a0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6218460
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5325904b
|
2025-01-29T14:43:35
|
|
Metal: Simplify error checking
Use normal ANGLE_CHECK, ANGLE_CHECK_GL_ALLOC, ANGLE_CHECK_GL_MATH
when appropriate.
Use ANGLE_MTL_CHECK for checking Metal NSError return value.
Remove mtl::ErrorHandler::handleError variant that responds to NSError.
Uses "Internal error." that occur due to implementation bugs. Binary
size is already expended with __FILE__ et al to disambiguate the
location. The descriptions were not actionable for the API client and
sometimes wrong cut-and-paste.
Bug: angleproject:392938089
Change-Id: If9525d3d1610d5bc757855053600d78d2a1526c3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6211841
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
43e7384d
|
2025-01-28T18:28:44
|
|
Metal: Fix a race in failing compilation subtasks
Program link invokes two link subtasks, one MSL compilation per shader
in program. If these tasks would fail, they would race to write the
error message to the error string held in link object.
Fix by recording the error message to the compile tasks and forwarding
it to the context when sub task result is fetched.
Bug: angleproject:392652319
Change-Id: Icb369f7bd62da5155d7915f2743ac53d91d61ea8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6207769
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
2f9047cd
|
2024-10-21T21:56:14
|
|
Add CHECK when MTLCommandBufferErrorOutOfMemory occurs
Bug: angleproject:374574265
Change-Id: I3c1f6cdf86f9ad73b10f1299f4bd4e348dffb001
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5947983
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
e6c8f06a
|
2024-11-29T00:00:00
|
|
Metal: Remove line markers from internal shaders
Line markers generated by Clang preprocessor are
platform-dependent and cause extra git noise.
Metal shader compiler does not need them anyway.
Fixed: angleproject:382564808
Change-Id: I792a523ac9269a097c7f52a4cd64a24ed6145567
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6074518
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
a504b6a2
|
2024-11-25T15:59:05
|
|
Support GL_OES_required_internalformat
Enable GL_OES_required_internalformat GLES extension.
Bug: angleproject:364069034
Change-Id: Ia57548469abff189472aa20b13ca99179c45f2c0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6038448
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Panfeng Hou <panfeng.hou@arm.com>
|
|
4aaeffd8
|
2024-11-25T11:33:30
|
|
Metal: Limit simulator texture size to 8k
Regressed in commit d44204893a1725a74cd20b332fbb6f595b0975c3.
Bug: angleproject:380712807
Change-Id: Ic5e298412b35451e87b76f70d5b1b253ed1406cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6039222
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
239ef680
|
2024-11-21T00:00:00
|
|
Metal: Support ANGLE_texture_multisample
* Added explicit multisample texture creation support
* Added support for SAMPLE_MASK frontend state
* Adjusted Metal backend caps
Fixed: angleproject:380475003
Change-Id: I90250e14da52869cb954b5a61d9c670e958a526c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6048958
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
8e9dc1a6
|
2024-11-19T11:08:31
|
|
Validate anonymous struct names with namespace
Consider GLSL:
struct { vec4 e; } g;
struct sbbf { vec4 f; };
The struct name validation would fail if user chosen struct name would
clash with a symbol name that ANGLE internally gave to an anonymous
struct.
Fix by importing Name abstraction from MSL backend. A symbol name is
a pair (namespace, string).
Move operator<<(std::ostream &os, const ImmutableString &str)
to sh namespace because that is more natural for operator overloading
name resolution. MSVC works with this.
Bug: angleproject:379758201
Change-Id: Icc9b02aa8cb532e1d925e2fba4c45468f01b9144
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6035029
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
a402f9cb
|
2024-11-11T15:08:41
|
|
Metal: Do not use number digit separator in .mm
The review system turns ' to strings for Obj-C
syntax highlighting.
Bug: angleproject:378421872
Change-Id: I201f6561def7c4b945f37e3e02ec0b8915954e8e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011209
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
eb614d7e
|
2024-11-11T13:24:35
|
|
Metal: Avoid leaking library and binary sources
Reland: Fix build with
metal_internal_shader_compilation_supported = false
Fix leak of dispatch_data during binary load. The dispatch object
was not released. Dispatch objects are Obj-C objects, so hold with
AutoObjCPtr.
Fix leak of MTLLibrary objects when creating the objects.
The method newLibraryWithData returns +1 due to being "new" type
method. This ref must be adopted.
Avoid using autoreleased objects, use AutoObjCPtr.
Some leaks regressed in commit c5ab1cebccaab0f8de466e5f797faa3d5a84bea5.
Bug: angleproject:351165323
Change-Id: I08bc6bcb787cdc3f71e9487d80a44e24b01b6b4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6017845
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b2d84a66
|
2024-11-12T20:14:48
|
|
Revert "Metal: Avoid leaking library and binary sources"
This reverts commit 6359ec111595c57e6be04b0468ca866f91593f2f.
Reason for revert: https://chromium-review.googlesource.com/c/angle/angle/+/6011208/comments/c1453ef2_2c6a5e49
Original change's description:
> Metal: Avoid leaking library and binary sources
>
> Fix leak of dispatch_data during binary load. The dispatch object
> was not released. Dispatch objects are Obj-C objects, so hold with
> AutoObjCPtr.
>
> Fix leak of MTLLibrary objects when creating the objects.
> The method newLibraryWithData returns +1 due to being "new" type
> method. This ref must be adopted.
>
> Avoid using autoreleased objects, use AutoObjCPtr.
>
> Some leaks regressed in c5ab1cebccaab0f8de466e5f797faa3d5a84bea5.
>
> Bug: angleproject:351165323
> Change-Id: If23859fbddd21693d923f66f6fb015eed494f06e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011208
> Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Note: the revert merges the changes of https://crrev.com/c/6011902
Bug: angleproject:351165323
Change-Id: Iec1a14c8043e0883190723edf7302127c27f2de4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6013090
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f5b9e0ed
|
2024-11-11T16:06:30
|
|
Metal: Query MSL print env var with bool getter
Use angle::GetBoolEnvironmentVar.
Bug: angleproject:378404988
Change-Id: I45778690e215325e9e4eb67c6feefa9b17941f49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011902
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
6359ec11
|
2024-11-11T13:24:35
|
|
Metal: Avoid leaking library and binary sources
Fix leak of dispatch_data during binary load. The dispatch object
was not released. Dispatch objects are Obj-C objects, so hold with
AutoObjCPtr.
Fix leak of MTLLibrary objects when creating the objects.
The method newLibraryWithData returns +1 due to being "new" type
method. This ref must be adopted.
Avoid using autoreleased objects, use AutoObjCPtr.
Some leaks regressed in c5ab1cebccaab0f8de466e5f797faa3d5a84bea5.
Bug: angleproject:351165323
Change-Id: If23859fbddd21693d923f66f6fb015eed494f06e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/6011208
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d4420489
|
2024-10-25T08:53:17
|
|
Add check for iOS simulator when initializing caps in metal
On Intel-arch MacBook, the system API
[supportsFamily:MTLGPUFamilyApple3] returns false on the iOS
simulator, causing maxVertexOutputComponents to be set to 60,
which is below than the required value of 64, resulting in
WebGL2 initialization failure on chromium iOS.
Add a TARGET_OS_SIMULATOR check to ensure the values of caps can be
set correctly in the siumulator environment.
Bug: angleproject:375244081
Change-Id: Iafc44a2aa62130b09127bbec7ea6940506a4165c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5961039
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
2ee914a4
|
2024-03-04T06:54:29
|
|
CL: Add cl_image_format map autogeneration
* Added map JSON files containing CL image formats
* Updated ANGLE format table generator to include CL foramts
Tests-Passing: GN Build
Signed-off-by: hoonee.cho <hoonee.cho@samsung.com>
Bug: angleproject:42266936
Change-Id: I2967ea6d26f69223ffa3ca12d469c05a3844200f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5798054
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafay Khurram <r.khurram@samsung.com>
|
|
166b72c9
|
2024-09-30T19:07:26
|
|
GL_ANGLE_blob_cache implementation.
Bug: chromium:370538323
Change-Id: Ic51a951e78b48b315e36f518bcc39ff2d54660a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5900761
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
cd10ad46
|
2024-09-30T00:00:00
|
|
Metal: Rework allowSamplerCompareGradient feature
* AMD drivers may fail when a sample_compare function is
used with explicit derivatives. To avoid such failures,
the effective level is computed from the texture size,
passed derivatives, and texture coordinates, if needed.
The level value is then used for sample_compare instead
of the explicit derivatives.
* Apple2 GPUs do not support setting texture sampler compare state
via Metal API. As a result, all sample_compare functions including
those without LOD options do not work on Apple2 GPUs. This feature
was attempting to incorrectly emulate a subset of sample_compare
functions with a hard-coded compare state.
There are no plans to support shadow samplers on Apple2 GPUs,
as it would require non-trivial emulation, so this feature is
no longer relevant for that platform.
* Metal on macOS 10.15 only supports constant zero as
the level parameter for sample_compare functions.
Ignoring the passed derivatives and using zero LOD on old OS
versions is a better fallback than dropping the derivatives
altogether because many applications use the derivatives to
set the level to zero anyway.
Bug: angleproject:365066518
Bug: angleproject:368059227
Change-Id: I4028421b785ae49328b72658e0a9783275461779
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5903970
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
a921694b
|
2024-09-30T00:00:00
|
|
Metal: Support EXT_texture_shadow_lod
Bug: angleproject:365108862
Change-Id: Ieb0b53253c5d9091e0c74baccf808622d9578d5f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5907407
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
d550d96f
|
2024-09-30T00:00:00
|
|
Metal: Remove allowSamplerCompareLod feature
* Apple2 GPUs do not support setting texture sampler compare state
via Metal API. As a result, all sample_compare functions including
those without LOD options do not work on Apple2 GPUs. This feature
was attempting to incorrectly emulate a subset of sample_compare
functions with a hard-coded compare state.
There are no plans to support shadow samplers on Apple2 GPUs, as it
would require non-trivial emulation, so this feature is not needed.
* Metal on macOS 10.15 only supports constant zero as
the level parameter for sample_compare functions.
Ignoring the requested level and using zero on old OS versions is a
better fallback than dropping the parameter altogether because many
applications set the level to zero anyway.
Bug: angleproject:365066518
Bug: angleproject:368059227
Change-Id: I2cdc0bda5842842d62ad5663427da7f1f37bddda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5907619
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
b16d105f
|
2024-10-03T10:25:32
|
|
Remove Desktop GL front-end support
For Desktop GL applications, please use Zink!
Bug: angleproject:370937467
Change-Id: Ie734634bb62a2e98c80e1b32d8b3d34624da3c04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5905428
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8c12874c
|
2024-09-12T11:26:29
|
|
vulkan: add double buffer swapchain for fifo mode.
Double buffer swapchain usually drop the performance.
But at B* the default fps cap for silver device still at 30fps.
This change is for reduce latency.
Bug: b/311022968
Change-Id: Ida4044f439bbe3f235d53f5d1d2f945533cbb094
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5858255
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d40d1a67
|
2024-09-05T14:56:46
|
|
Metal: Fix OverrideMTLClearColor handling of no texture
It's possible for OverrideMTLClearColor to be called with no
texture. This can happen with multiple draw buffers where the bound
program executable and framebuffer has incompatible component
types. When the render pass is prepared by a drawing command, these
incompatible attachments are skipped.
As demonstated by the new test case, when switching to the framebuffer
that has previously been prepared by such a draw, if the state is clean,
the render pass attachments are not updated and |texture| is unavailable
for use in determining any emulated clear color.
Fixed: angleproject:364687937
Change-Id: I1ec9b564dc8cdb5faf7a1ed0f935d38502ca5514
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5836314
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a0126d55
|
2024-09-06T11:58:58
|
|
Metal: Clear mRenderPassesSinceFlush to avoid infinite recursion
When there is more than kMaxRenderPassesPerCommandBuffer render passes
with active occlusion query, it's possible for the Metal backend to end
up in infinite recursion of the following call sequence:
`ensureCommandBufferReady` -> `flushCommandBufferIfNeeded` ->
`flushCommandBuffer` -> `endEncoding` -> `endRenderEncoding` ->
`prepareRenderPassVisibilityPoolBuffer` ->
`getBlitCommandEncoderWithoutEndingRenderEncoder` ->
`ensureCommandBufferReady`
This recursion is caused by the checks in flushCommandBufferIfNeeded not
being disarmed once the flush has started and is most likely caused by
|mRenderPassesSinceFlush| exceeding |kMaxRenderPassesPerCommandBuffer|.
This change moves the clearing of |mRenderPassesSinceFlush| to the top
of of `flushCommandBuffer`, before any calls to `endEncoding`, breaking
the need to call `flushCommandBuffer` via
`getBlitCommandEncoderWithoutEndingRenderEncoder`.
Additionally, |OcclusionQueryPool::mUsed| is set to false before the
results are cleared. This will also break the recursion and is added for
the `mCmdBuffer.needsFlushForDrawCallLimits` case in
`flushCommandBufferIfNeeded`.
Change-Id: Ib54c0a87ae9c5365ae56d487b6bef99b681d9f59
Fixed: chromium:362791944
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5839224
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
edc6d2fc
|
2024-09-02T19:02:11
|
|
Metal: Fix watchOS supports32BitFloatFiltering use
Avoid using supports32BitFloatFiltering on watchOS, turns out it is
not available.
Bug: angleproject:360147119
Change-Id: I9ac7101b72d05e06807ba2d18e0fabe7579f62a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5830352
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
8b8b3d4d
|
2024-09-02T21:04:11
|
|
Metal: Flush with NoWait on iOS when hitting renderpass count limits
Avoid deviating between iOS and macOS in this regard. The behavior
should be the same for the caller as well as the implementation.
Bug: chromium:1466696
Bug: angleproject:363984104
Change-Id: I39160bcc0a54ea9c767e1109d80cb4d71ecdf207
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5830799
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8c211b10
|
2024-06-20T13:51:20
|
|
Metal: Clear depth pbuffers to 1 for robust init
Robust resource initialization would init depth pbuffers as 0.0
instead of 1.0. This would differ from the FBO initialization, where
the uninitialized depth buffers would be initialized to 1.0.
Bug: angleproject:348199042
Change-Id: I0f251e85d6e08ce992fe323b257a0906d237f5b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5642763
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
|
|
e2afdd3c
|
2024-08-29T00:00:00
|
|
Metal: Fix depth/stencil FBO attachments validation
Simplified and fixed depth/stencil attachments
validation to match Metal behavior;
added a new error message.
Updated allowSeparateDepthStencilBuffers feature
condition to enable it on Apple silicon Macs.
Fixed: angleproject:362901599
Change-Id: Ib60020f157976240ebfd652254d63380341cddbd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5823534
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
3f5ede8f
|
2024-08-20T00:00:00
|
|
Metal: Remove obsolete availability macros from context
MTLSharedEvent
* macOS 10.14 (min deploy 10.15)
* iOS/tvOS 12.0 (min deploy 15.0)
MTLDevice.hasUnifiedMemory
* macOS 10.15 (min deploy 10.15)
* iOS/tvOS 13.0 (min deploy 15.0)
Bug: angleproject:360147119
Change-Id: I8c7e09b1fd9d16cf2bc9dcdca50a7fe577ad25a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5816833
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
e39d08b9
|
2024-08-20T00:00:00
|
|
Metal: Remove obsolete code from caps and extensions init
MSL 2.1
* macOS 10.14 (min deploy 10.15)
* iOS/tvOS 12.0 (min deploy 15.0)
MSL 2.2
* macOS 10.15 (min deploy 10.15)
* iOS/tvOS 13.0 (min deploy 15.0)
Volume BC textures
* macOS 10.15 (min deploy 10.15)
Depth clipping mode
* macOS 10.11 (min deploy 10.15)
* iOS/tvOS 11.0 (min deploy 15.0)
Dual-source blending
* macOS 10.12 (min deploy 10.15)
* iOS/tvOS 11.0 (min deploy 15.0)
Bug: angleproject:360147119
Change-Id: I00d33d2b6b5c80a305bfbe9316c0ea670b9a4b04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5814950
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
b52f281a
|
2024-08-20T00:00:00
|
|
Metal: Remove unused and obsolete availability macros
* Both usages of ANGLE_APPLE_AVAILABLE_XC are obsolete.
* ANGLE_APPLE_AVAILABLE_CI and ANGLE_APPLE_AVAILABLE_I
are unused.
* iOS and tvOS SDK version ranges are supported without
redefinitions.
* Mac Catalyst is defined in the supported SDK versions.
Bug: angleproject:360147119
Change-Id: I8e7730c31f73c03d491373a0a5d316432513d8a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5817148
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
2609e02c
|
2024-08-20T00:00:00
|
|
Metal: Remove unused branches from StartFrameCapture
The used APIs are supported on all deployment targets.
Bug: angleproject:360147119
Change-Id: Ieaa8662e97b71e97bdab3cd0f5c5ef6db3d1b305
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5817150
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8cfb9ea2
|
2024-08-20T00:00:00
|
|
Metal: Align OS macro usage
Consistenty used TARGET_OS_* macro instead
of ANGLE_PLATFORM_* in the Metal backend
code for better searchability.
Bug: angleproject:360147119
Change-Id: I754ddc158daa6b1894b0b4fb0489d59f14605b66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5816828
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6ef39db0
|
2024-08-20T00:00:00
|
|
Metal: Remove obsolete compile guards for texture helpers
MTLDevice.supports32BitFloatFiltering
- macOS 11.0 (min compile 12.0, min deploy 10.15)
- iOS 14.0 (min compile 17.0, min deploy 15.0)
- tvOS 16.0 (min compile 17.0, min deploy 17.0)
MTLDevice.supportsBCTextureCompression
- macOS 11.0 (min compile 12.0, min deploy 10.15)
- iOS 16.4 (min compile 17.0, min deploy 15.0)
- tvOS 16.4 (min compile 17.0, min deploy 17.0)
MTLPixelFormatPVRTC* enums
- macOS 11.0 (min compile 12.0)
- iOS 8.0 (min compile 17.0)
- tvOS 9.0 (min compile 17.0)
Bug: angleproject:360147119
Change-Id: Iafb010efc233f9c677a2c6f65cb4efdf0bb9cf9c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5805290
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
939fafc8
|
2024-08-20T00:00:00
|
|
Metal: Remove MSL version compile guards
MTLLanguageVersion1_0
- Deprecated
MTLLanguageVersion2_3
- macOS 11.0 (min compile 12.0, min deploy 10.15)
- iOS/tvOS 14.0 (min compile 17.0, min deploy 15.0)
MTLLanguageVersion2_4
- macOS 12.0 (min compile 12.0, min deploy 10.15)
- iOS/tvOS 15.0 (min compile 17.0, min deploy 15.0)
Bug: angleproject:360147119
Change-Id: I4a0da9d92ef86e899766bc860f3bc6e7e614f4a9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806332
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
966d0a1a
|
2024-08-20T00:00:00
|
|
Metal: Cleanup memoryless storage mode support detection
Bug: angleproject:360147119
Change-Id: Ic47f1d84e748f65194aa819a39418db66b1948c3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5802956
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
003737c8
|
2024-08-20T00:00:00
|
|
Metal: Adjust texture storage mode compile guards
Used managed mode only for macOS
and Mac Catalyst compile targets.
Fixed compilation for visionOS.
Bug: angleproject:360147119
Change-Id: I88fae28ff6d1ecb5ba303d32c4a3874bf3f8aa87
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5802959
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
a36c459e
|
2024-08-20T00:00:00
|
|
Metal: Remove redundant symbol redeclarations
MTLBlitOptionRowLinearPVRTC
- macOS 11.0 (min compile 12.0)
- iOS/tvOS 9.0 (min compile 17.0)
MTLBarrierScope
- macOS 10.14 (min compile 12.0)
- iOS/tvOS 12.0 (min compile 17.0)
MTLBarrierScopeRenderTargets
- Moved compile guards to call sites
MTLRenderStages, MTLRenderStageVertex, MTLRenderStageFragment
- macOS 10.13 (min compile 12.0)
- iOS/tvOS 10.0 (min compile 17.0)
Bug: angleproject:360147119
Change-Id: I7dac46accde63be486a7de918284bbd6e8367a4e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5806896
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|