|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
5cf94ffa
|
2024-08-20T10:41:40
|
|
Metal: Use pipeline rasterSampleCount
Use MTLRenderPipelineDescriptor rasterSampleCount instead of
sampleCount. This avoids the use of the deprecation macro.
Availability: iOS 8.0 (min: 15.0), mac Catalyst 13.1 (min: 16.5),
macOS 10.11 (min: 10.15), tvOS 11.0 (min: 15.0), visionOS 1.0+
Bug: angleproject:360147118
Change-Id: I7009a7d7b39ecb763e23f4b97441fb45a64a891d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5797134
Auto-Submit: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Kimmo Kinnunen <kkinnunen@apple.com>
|
|
a89ca6c8
|
2024-07-30T17:14:50
|
|
Metal: Fully implement unresolve step for MSRTT.
This CL also uses memoryless for implicit MS textures in
EXT_multisampled_render_to_texture render passes.
Bug: angleproject:42261786
Change-Id: Ic20450574c4c670d05ca846587ced05488012270
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746181
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1bfe5c57
|
2024-07-30T15:58:47
|
|
Metal: partially implement EXT_multisampled_render_to_texture.
Implement by implicitly attaching a multisampled texture to the render
pass. The content will be preserved across render passes by
loading/storing to the implicit multisampled texture.
However this won't work if the single sampled texture is used in
multiple render passes with different
glFramebufferTexture2DMultisampleEXT's sample counts. For that to work
we need to implement unresolve step to load the resolve texture's texels
into the implicit multisampled texture. That will be implemented in a
separate CL.
Bug: angleproject:42261786
Change-Id: I12be75af17ce5b98266946846417d0a43fcba455
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5746180
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
975674ea
|
2024-07-18T00:00:00
|
|
Metal: Fix PBO readback failures with small row length
Do not use blits when the row length is
smaller than the source area width to
avoid Metal validation failures.
Bug: angleproject:354005999
Change-Id: Ifa0f29a0d1d2fb3275ea254957c24f36807e6f66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5724790
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
18797bf2
|
2024-03-28T00:00:00
|
|
Metal: Handle incompatible attachments
Metal runtime fails if the attachment pixel
formats are not compatible with the program
outputs or if the corresponding render pass
and pipeline pixel formats do not match.
Added Metal-specific state tracking and forced
draw framebuffer syncronization for such cases.
Cleaned up and reduced Framebuffer::setAttachmentImpl.
Fixed: angleproject:5233
Change-Id: I4ee01889debe0e3cce54635e6cba62dbfdc02722
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5377813
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
085ff15a
|
2024-03-26T03:33:26
|
|
Metal: Fix RenderTargetMtl::getFormat() could return nullptr.
Bug: b/326301256
Change-Id: Ia8914e4bc77e34bd510661689837b97d5de82d92
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5394149
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
|
|
33a09305
|
2024-03-22T11:10:05
|
|
Metal: Remove work texture and work buffer from ContextMtl
These objects did not have lifetime management and would persist
until the destruction of the context which added significant memory
overhead when clients use many contexts.
Allocate them specifically for the ReadPixels call and destroy them
when finished.
Bug: chromium:330163368
Change-Id: I95e2c11e14fb4ad0728850a7a0fabcf53916b9ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/5388258
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e3054599
|
2023-09-04T23:20:19
|
|
Metal: Don't use implicit MSAA for render buffers.
This CL removes the usage of implicit MSAA from render buffers.
Implicit MSAA added an extra single-sampled texture & resolve step when
clients render to a multisampled render buffer. It is as if
EXT_multisampled_render_to_texture extension is always used even though
users might not request for it. Not to mention this extension's
implementation is incomplete.
Furthermore, it is hidden from users. Thus
the only way for them to use the render buffer after rendering
(presentting to screen, sampling the pixels, etc) is manually resolving
the render buffer with glBlitFramebuffer. This results in another
redudant texture copy operation.
This CL also removes no-longer used function
FrameBufferMtl::getReadableViewForRenderTarget()
Bug: angleproject:8301
Change-Id: I63053b9e1d1a5cf47a023291b8fcb31d3636d3ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4840154
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Quyen Le <lehoangquyen@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
aea88562
|
2023-05-19T16:52:43
|
|
Reland "Metal: Optimized BufferSubData per device"
This reverts commit ee64836f702332adaca58d9f452063a04b2da955 ,
relanding the patch stack described there.
Between patchsets 1 and 5:
- The shadow buffer allocation has been replaced with a multimap of
precisely-sized buffers, rather than rounding up buffer sizes.
- Garbage collection of shadow buffers is triggered in three situations:
- A certain number of context switches have occurred; this number
was hand-tuned to avoid GC every frame.
- A certain number of command buffer submissions has occurred; this
number was hand-tuned to GC no more often than every few seconds
on representative workloads.
- The total size of the allocated shadow buffers is more than 1 MB,
and either more than twice the size at the last garbage
collection, or 64 MB more than at the last garbage collection. In
this case, aggressive GC is performed in order to reclaim shadow
buffers more quickly.
Performance before and after these changes appears identical on
microbenchmarks. On one Figma test case, comparing GPU memory
allocated inside the BufferManager, peak consumption is decreased by
over 75%, and steady-state consumption decreases by over 88%.
Patchset 6 adds a needed workaround for a bug in the
AMDMTLBronzeDriver affecting uploads of client-side data, and
therefore some dEQP tests. It also streamlines the aggressive GC.
Bug: angleproject:7544
Change-Id: I81b061f0b33c27fa403527fa12d626f4e9c88ebe
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4497413
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
409bf134
|
2023-05-23T00:00:00
|
|
Metal: Adjust iOS and macCatalyst caps
* Fix swapped iOS and macCatalyst versions for
EXT_blend_func_extended and EXT_depth_clamp
* Always use 13.1 as the lowest macCatalyst version
Bug: angleproject:8121
Bug: angleproject:8047
Bug: angleproject:8015
Change-Id: I1f117de259d211cb8ce2463df59f8fee0e709ef5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4568323
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
fdbd6488
|
2023-04-12T14:02:44
|
|
metal: allow unequal size attachments.
OpenGLES3.0 allows FBO with attachments that have unequal size.
In Metal, an FBO is represented by a render pass pipeline, which
is created using MTLRenderPassDescriptor descriptor. The render
pass can have color attachments as well as depth and stencil
attachments. Those individual attachments must have a texture
attached, which works as a buffer. However, the documentation
does not specify any dimension restrictions for those textures.
Test: verify the FramebufferTest_ES3.AttachmentsWithUnequalDimensions
passes.
Test2: made a simple metal app that renders using an offscreen
render pass pipeline to a texture that has size of 32x16 with
a depth buffer attached (size of 16x32) and verified the
pixels on that. The content outside the common area had
undefined pixel data.
Bug: angleproject:7994, angleproject:6447
Change-Id: I257f8e3aad497772cfc7de08314818ee5f434b84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4418266
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
ee64836f
|
2023-02-11T17:56:06
|
|
Revert "Metal: Optimized BufferSubData per device"
This reverts commit 968041b54770af8917001d8fe9b52a881cfed0b2.
Includes the following patches:
git revert -n 995db1f66bcf87fc9e47d908fb2a885e810d2567 \
9a6c90c8f802b4d107a081bfccaf4be007e7af54 \
dbd47e378582ef86db52c7379cd220cf0b2c8193 \
369b320f92f54774879e8b8faff834fc8db0793e \
4abae6f97586448712e2dc1cced4a678b0901d7b \
968041b54770af8917001d8fe9b52a881cfed0b2
Several conflicts with top-of-tree were resolved during this revert.
The aim is to reland this with additional code which will reduce the
amount of excess buffer memory allocated, and release the resources
associated with temporary buffer allocations.
Bug: angleproject:7544
Change-Id: Ib7a6bc2ab1c2f23cb43112cd980106e2898c3826
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4240556
Reviewed-by: Kimmo Kinnunen <kkinnunen@apple.com>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
a4db9477
|
2022-10-06T10:35:39
|
|
Implement pixel local storage with metal::read_write textures
Metal's programmable blending feature isn't available on non-Apple
Silicon, so on these devices we have to polyfill pixel local storage
using read_write textures, which can also be coherent if
raster_order_groups are supported.
This change leverages the existing PLS transformation to images, and
implements just enough shader image functionality in Metal to support
the pixel local storage usecase. Missing shader image features are
marked with UNIMPLEMENTED().
Bug: angleproject:7279
Bug: angleproject:7792
Bug: angleproject:7794
Bug: angleproject:7797
Bug: angleproject:7803
Change-Id: Ia96a714693d352d57351a1bae4f45437dde000e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3993363
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Chris Dalton <chris@rive.app>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
|
|
81e9dc56
|
2022-11-04T00:00:00
|
|
Reland "Metal: Skip disabled draw buffers"
This is a reland of commit 4b084310d7bbb33631d58a461eb5814c12220926
Do not try to create a command encoder with no attachments
since it may crash some Metal drivers.
Do not reset pipeline descriptors.
Original change's description:
> Metal: Skip disabled draw buffers
>
> When creating render pass descriptors, do not
> assign textures to disabled color attachments.
>
> When creating pipeline descriptors, reset
> pixel formats of disabled color attachments.
>
> Exit early when MTLRenderCommandEncoder is not created.
>
> Added:
> * DrawBuffersTest.None
> * DrawBuffersTest.NoneWithDepth
> * DrawBuffersTest.NoneWithStencil
> * DrawBuffersTestES3.DrawWithDisabledIncompatibleAttachment
>
> Fixes:
> * conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html
>
> Bug: angleproject:6430
> Change-Id: I7f650c761f757985b027388c350c01340a83fd51
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003180
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:6430
Change-Id: I13977bd7ef32c4c85420706215b4f4d3a65629ca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4030310
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
91ee237f
|
2022-11-17T03:19:34
|
|
Revert "Metal: Skip disabled draw buffers"
This reverts commit 4b084310d7bbb33631d58a461eb5814c12220926.
Reason for revert: Crashing in webgl2_conformance_metal_passthrough_tests https://chromium-review.googlesource.com/c/angle/angle/+/4003180/comments/6e35ee21_38288238a
Original change's description:
> Metal: Skip disabled draw buffers
>
> When creating render pass descriptors, do not
> assign textures to disabled color attachments.
>
> When creating pipeline descriptors, reset
> pixel formats of disabled color attachments.
>
> Exit early when MTLRenderCommandEncoder is not created.
>
> Added:
> * DrawBuffersTest.None
> * DrawBuffersTest.NoneWithDepth
> * DrawBuffersTest.NoneWithStencil
> * DrawBuffersTestES3.DrawWithDisabledIncompatibleAttachment
>
> Fixes:
> * conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html
>
> Bug: angleproject:6430
> Change-Id: I7f650c761f757985b027388c350c01340a83fd51
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003180
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Bug: angleproject:6430
Change-Id: I485691bdcc4214ed6958f606591f23331bfbea53
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4032391
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Auto-Submit: Austin Eng <enga@google.com>
Reviewed-by: Austin Eng <enga@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4b084310
|
2022-11-04T00:00:00
|
|
Metal: Skip disabled draw buffers
When creating render pass descriptors, do not
assign textures to disabled color attachments.
When creating pipeline descriptors, reset
pixel formats of disabled color attachments.
Exit early when MTLRenderCommandEncoder is not created.
Added:
* DrawBuffersTest.None
* DrawBuffersTest.NoneWithDepth
* DrawBuffersTest.NoneWithStencil
* DrawBuffersTestES3.DrawWithDisabledIncompatibleAttachment
Fixes:
* conformance2/rendering/fs-color-type-mismatch-color-buffer-type.html
Bug: angleproject:6430
Change-Id: I7f650c761f757985b027388c350c01340a83fd51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4003180
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
9340f01d
|
2022-11-03T00:00:00
|
|
Metal: Restore load actions after attachment updates
Framebuffer invalidation sets attachment load actions
to MTLLoadActionDontCare. Restore them to MTLLoadActionLoad
after content changes, which may be caused by texSubImage uploads.
Fixes:
* SimpleStateChangeTestES3.InvalidateThenSubUploadThenBlend
* conformance2/renderbuffers/invalidate-framebuffer.html
Bug: angleproject:7397
Change-Id: I8a1b223c92b1fd082f4961161efafaf6b60f8698
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/4001808
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
968041b5
|
2022-08-19T12:11:23
|
|
Metal: Optimized BufferSubData per device
Adds a staging buffer path which means there are 4 paths
for bufferSubData.
1. direct copy
* get a pointer to the buffer
* copy the new data to the buffer
* if the buffer is managed, tell metal which part was updated
2. use a shadow copy
* copy the data to a shadow copy
* copy the entire shadow to a new buffer
* start using the new buffer
3. use a new buffer
* get a new buffer (or unused)
* put the new data in the new buffer
* blit any unchanged data from the old buffer to the new buffer
* start using the new buffer
4. use a staging buffer
* get a staging buffer
* put the new data in the staging buffer
* blit from the staging buffer to the existing buffer.
Further, there are 3 types of memory storage modes.
Managed, Staged, Private.
Based on the GPU type different storage modes and different
paths in different sitatutions are more performant.
So, add feature flags to select paths by GPU.
Bug: angleproject:7544
Change-Id: I741dd1874201043416374194bd2001ded8dbd9b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3842641
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
70e5e90f
|
2022-09-23T13:17:34
|
|
Metal: Avoid locking IOSurfaces in glReadPixels on AMD.
The AMD driver tends to crash when locking IOSurfaces. Avoid this by
using the copyIOSurfaceToNonIOSurfaceForReadOptimization feature to do
a texture-texture copy before reading back data to the CPU.
This is a *speculative* fix due to seeing crashes in the
ClientLockIOSurface function in the AMD driver.
Bug: angleproject:7573
Change-Id: Ia120f2a96eed65431b5f8a99cf1da7d7e85da639
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3915181
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
|
|
79aa846e
|
2022-08-17T13:40:33
|
|
Reland "Not recreate Framebuffer for eglMakeCurrent() call"
This is a reland of commit bf9c815263455403e587a9d2b0fdb9fb8e964208
Original change's description:
> Not recreate Framebuffer for eglMakeCurrent() call
>
> Right now, in eglMakeCurrent() call, ANGLE always release the
> default framebuffer object associated to the current context,
> and create a new default framebuffer object for the new current
> context. It impacts chrome performance, since chrome call
> eglMakeCurrent() a lot. With this CL, the default framebuffer
> will be created with gl::Context. When the surface is changed
> by eglMakeCurrent() call, ANGLE will detach the previous surface
> from the associated framebuffer, and attach the new surface to
> the next current context's default framebuffer.
>
> Bug: chromium:1336126
> Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
> Commit-Queue: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1336126
Change-Id: Iade19004a4335ac7bc6ca176a3c14d34afff8c9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877405
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
02e8497f
|
2022-09-07T01:12:31
|
|
Revert "Not recreate Framebuffer for eglMakeCurrent() call"
This reverts commit bf9c815263455403e587a9d2b0fdb9fb8e964208.
Reason for revert: compile errors
https://ci.chromium.org/ui/p/chromium/builders/try/linux-chromeos-rel/1303510/overview
Original change's description:
> Not recreate Framebuffer for eglMakeCurrent() call
>
> Right now, in eglMakeCurrent() call, ANGLE always release the
> default framebuffer object associated to the current context,
> and create a new default framebuffer object for the new current
> context. It impacts chrome performance, since chrome call
> eglMakeCurrent() a lot. With this CL, the default framebuffer
> will be created with gl::Context. When the surface is changed
> by eglMakeCurrent() call, ANGLE will detach the previous surface
> from the associated framebuffer, and attach the new surface to
> the next current context's default framebuffer.
>
> Bug: chromium:1336126
> Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
> Commit-Queue: Peng Huang <penghuang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: chromium:1336126
Change-Id: I7c07f62236f57523b29c536c04f9a9de79da2f4b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3877404
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Peng Huang <penghuang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
bf9c8152
|
2022-08-17T13:40:33
|
|
Not recreate Framebuffer for eglMakeCurrent() call
Right now, in eglMakeCurrent() call, ANGLE always release the
default framebuffer object associated to the current context,
and create a new default framebuffer object for the new current
context. It impacts chrome performance, since chrome call
eglMakeCurrent() a lot. With this CL, the default framebuffer
will be created with gl::Context. When the surface is changed
by eglMakeCurrent() call, ANGLE will detach the previous surface
from the associated framebuffer, and attach the new surface to
the next current context's default framebuffer.
Bug: chromium:1336126
Change-Id: Iaa747669250ae250245db383a716b4634df59ea4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3827751
Commit-Queue: Peng Huang <penghuang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
056c6c7c
|
2022-07-11T00:00:00
|
|
Metal: Skip invalidation of emulated formats
Fixes SimpleStateChangeTestES3.InvalidateRGBThenDraw
on Apple GPU.
Bug: angleproject:7397
Change-Id: Ice5677004b38c3d67a9fc938d15dd64a20723380
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3755782
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
|
|
94320a83
|
2022-05-27T17:41:29
|
|
Metal: Validate total bits used in color attachments
Metal has 2 limits for color attachments. 1 the number of
attachments supported. 2 the total number of bits it can
write per pixel. So for example Apple4 through Apple8 GPUs
can have 8 attachments but only 512bits of output. That
means you can attach 8 RGBA8 textures (256bits), but you
can't attach 8 RGBA32UI textures (1024bits).
If there are too many bits then return
FRAMEBUFFER_UNSUPPORTED from checkFramebufferStatus
and INVALID_FRAMEBUFFER_OPERATION from draws
Bug: angleproject:7280
Change-Id: I935aebad4d57664f59a60be20a927d6b69afb4ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3674322
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
8a0351a5
|
2022-05-26T14:29:21
|
|
Metal:Dynamically choose max draw buffers.
The code was hard coded to 4 which is lower than OpenGL's 8.
This implementation keeps a hard coded array of size 8 in
rx::mtl::RenderPassDesc and rx::mtl::RenderPipelineOutputDesc
but only uses up to the display's limit.
Bug: angleproject:7280
Bug: angleproject:5730
Change-Id: Idd7e64dc47697882b44540804159566158e1e924
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3671695
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
1a144edf
|
2022-04-13T17:15:29
|
|
Metal:ReadPixels AMD Copy Texture to Buffer optimization
On AMD GPUs it's faster to copy a texture to a buffer
for read back than to read via a texture.
For reading from a normal texture 24-27ms -> 6-9ms
For reading from a IOSurface texture 17-20ms -> 7-10ms
Bug: angleproject:7117
Change-Id: I7c7f276a3121e87f5c52a1a4287d13203a6b1b37
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584423
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
2dd13ebb
|
2022-04-21T11:25:00
|
|
Track Surface color & depth/stencil init separately.
This clears up some trace testing confusion due when robust
resource init is enabled, and the app clears color but not
depth on the default surface.
Bug: angleproject:7221
Change-Id: Id97871aec32ad831b663aaa9116e04b582ab5a36
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3600375
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3f800e5c
|
2022-04-18T18:36:03
|
|
Metal:Clear Backbuffer when Robust Resource Init enabled
In trying to optimize readPixels
(see: https://chromium-review.googlesource.com/c/angle/angle/+/3584423)
the test RobustResourceInitTest.SurfaceInitialized was failing.
Digging into it it turns out that backbuffer surfaces were not being
cleared.
WindowSurfaceMtl was losing initialization requests due to back-to-back
calls to ensureCurrentDrawableObtained. Refactor surface preparation and
track initialized state separately.
Bug: angleproject:7117
Change-Id: Ic7eac9e77c4412c55340039a21be63e39b2abc0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3590971
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
fcec6904
|
2022-04-13T14:18:06
|
|
Generate feature variable names from display names
The json file now only contains the feature display name. The variable
name is automaticaly derived.
For consistence with Chromium and other Chromium-based projects, the
display name is now always snake_case, and that's what's specified in
the json files. This also makes camelCase variable name generation
trivial (as opposed to the other way around).
Feature overrides now accept both snake_case and camelCase names to
ensure compatibility with existing scripts. This is done by removing _
and comparing override names with feature names in lower case.
Bug: angleproject:6435
Change-Id: I0b6ed2bbf5c312bc4f4be7b3c7d55dbaca2a9886
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3584630
Reviewed-by: Amirali Abdolrashidi <abdolrashidi@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
87187835
|
2022-04-07T13:51:10
|
|
Metal: For readPixels copy IOSurface to non-IOSurface texture
For intel GPU/Drivers, it's faster to copy an IOSurface texture
to a non-IOSurface texture and read from the copy than it is
to read directly from the IOSurface texture.
Bug: angleproject:7117
Change-Id: I786009444480f75be6feb05f09f87fb45a3186b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3573078
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
74f32702
|
2022-03-03T13:13:34
|
|
Metal: Fix for mulitsampled buffers losing their contents
Fixes tst included as well as WebGL CTS
https://www.khronos.org/registry/webgl/sdk/tests/conformance2/renderbuffers/multisample-draws-between-blits.html
Both fail on M1 without this fix.
Also fixes WebKit bug https://bugs.webkit.org/show_bug.cgi?id=237113
Bug: angleproject:7073
Change-Id: Id7baa2575c817561f8a0a99181c986b758376a8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3506089
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
91f92540
|
2022-01-14T18:34:44
|
|
Metal: Fix multisample resolves.
1) Only use MTLLoadActionDontCare if store action was
MTLStoreActionDontCare, ignoring MTLStoreActionMultisampleResolve.
2) For color, depth and stencil attachments, if they have implicit
multisample textures, use MTLStoreActionStoreAndMultisampleResolve
rather than MTLStoreActionStore.
This addresses bugs when resolving a multisampled framebuffer and
copying it to a texture, and fixes these two Three.js demos:
https://threejs.org/examples/webgl_framebuffer_texture
https://threejs.org/examples/webgl_decals
Added CopyTextureTestES3.DrawThenCopyThenBlend modeled after new WebGL
2.0 conformance test in:
https://github.com/KhronosGroup/WebGL/pull/3379
Confirmed to catch the bug. On Intel Macs, the Metal debug layers and
load/store action validation must be enabled:
MTL_DEBUG_LAYER=1 \
MTL_DEBUG_LAYER_VALIDATE_LOAD_ACTIONS=1 \
MTL_DEBUG_LAYER_VALIDATE_STORE_ACTIONS=1 \
MTL_DEBUG_LAYER_VALIDATE_UNRETAINED_RESOURCES=4 \
angle_end2end_tests ...
Bug: angleproject:6972
Change-Id: I7bcb7c19e434e22e24b800fdce4c480d10b1fc40
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3450033
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
812d5fff
|
2022-01-31T17:32:47
|
|
Metal: End the current render pass at glInvalidateFramebuffer.
Prior to this, glInvalidateFramebuffer calls were discarding the
effects of draw calls made afterward, in the same render pass.
Add StateChangeTestWebGL2.InvalidateThenDrawFBO reproducing the basic
problem reported, and document the variations attempted. Minimal code
was changed to fix this issue because other changes hypothesized as
necessary weren't testable.
Drive-by cleanup of FragDepthTest, after which StateChangeTestWebGL2
was patterned.
Bug: angleproject:6923
Change-Id: If79805dbf62fae76b7b9147940b5d9d301142baa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3426828
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Gregg Tavares <gman@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
194687e7
|
2021-12-06T13:40:24
|
|
Metal: Fix M1 and iOS synchronization for readPixels
ReadPixels does not implicitly flush context before reading
on iOS and macOS hardware due to shared memory. look for any pending
GPU Work, and flush the command buffer if needed.
Bug: angleproject:6803
Change-Id: I5688b031ecffcd7427263041d4e33ae256f68af6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3318592
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
ab426735
|
2021-10-29T13:54:09
|
|
Template gl::Rectangle so it can be used for float
Bug: angleproject:6598
Change-Id: I8cf5894f0e34c56a6ad856c978be93ea9d5ae113
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3253131
Commit-Queue: Gregg Tavares <gman@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
20ddb802
|
2021-10-28T11:01:12
|
|
Fix Blitting in Metal backend.
The Metal backend was clipping in integer space.
If the src and dst are not the same size,
say src is 3 wide and dst is 4 wide, and src
starts at -1, then src will be clipped by one
making the src 2 wide. It got 1/3 smaller so the
dst get 1/3 smaller making it 2.666 pixels wide.
The dst then needs to be expanded to pixels so 3 wide.
But, that means the src also needs to be expanded
0.3333 * 3(originalSrcWidth) / 4(originalDstWidth)
so its new left edge is -0.245 which is not an integer.
Bug: angleproject:6598
Change-Id: I2faa966b18b457f474a3e7f6844ef64bfa66dbe8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3251683
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Kyle Piddington <kpiddington@apple.com>
Commit-Queue: Gregg Tavares <gman@chromium.org>
|
|
fab88343
|
2021-10-07T15:02:35
|
|
WebGL Aquarium doesn't render with ANGLE Metal
Blits should not be using the context's write mask,
this leads to missed color information on blits.
Bug: chromium:1257769
Change-Id: Iaf4ff00a727b1bec2424b4d3939fddd4c802a8ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3212644
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
d33a2222
|
2021-04-26T16:56:15
|
|
Upstream Apple's direct-to-Metal backend: compile libANGLE.
This change is meant to merge the metal backend changes from Apple's
direct-to-Metal backend. Taken from Kyle Piddington's CL:
https://chromium-review.googlesource.com/c/angle/angle/+/2857366/
The goal of this CL is to merge the metal backend code in a state
that compiles, but not to switch the Metal backend over to using
the direct-to-metal backend yet.
Bug: angleproject:5505
Bug: angleproject:6127
Change-Id: If6783e06e0086b3a1dd25c6f53caca5cfc96cb86
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2950067
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
bccb0d56
|
2021-05-11T13:53:05
|
|
Add messages for framebuffer completeness errors.
This also creates a common code path for all framebuffer
completeness errors (FramebufferStatus::Incomplete) which
helps for adding a debug breakpoint.
Bug: angleproject:5949
Change-Id: Ib102dbf86e020777e56c6dc6b78dda8ebdba2127
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2888110
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9bc86c50
|
2020-10-13T13:26:08
|
|
Metal: Implement OES_draw_buffers_indexed
Bug: angleproject:2634
Bug: angleproject:4394
Change-Id: Id6e6c6bdea2b1ff3d974e92e067ed63e1b4e4582
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2465919
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d30f0114
|
2020-11-05T17:46:53
|
|
Metal: Early loop exit during attachments clear
Added BitSetIteratorTest.IterationOrder
Bug: angleproject:2634
Change-Id: I0e9c6ad4d19bbb7d691e46b7ec720e918b170371
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2520956
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9ff063e9
|
2020-10-25T03:08:25
|
|
Metal: fix max varyings, copyImage between mips, depth fmt
- GLSLTest_ES3.MaxVaryingWithFeedbackAndGLline failed before because
gl_Position takes up one slot from max varyings on Metal back-end.
FIXED
- Previously, copyImage() between mips of the same texture would fail.
Due to the read RenderTargetMtl is released before the copy happens.
FIXED
- GL_DEPTH_COMPONENT24 texture data upload didn't work due to the source
32 bit depth data wasn't handled properly. FIXED
- D24S8 format will be disabled on AMD for now, it will be converted to
D32S8 instead.
Bug: angleproject:2634
Bug: angleproject:5235
Bug: angleproject:5242
Change-Id: Ie7082f0545c0885ce5ec72df8a7ec4ee5d5de4b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2494525
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
80d4901a
|
2020-09-26T19:22:00
|
|
Metal: Support integer textures.
Bug: angleproject:2634
Bug: angleproject:5154
Change-Id: Iffea26fe2c683557b4fa7c13fddf3523294b47d4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433329
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0e5e6078
|
2020-09-26T23:31:24
|
|
Metal: Use MipmapNativeLevel class to store native mip lvl
This is to avoid wrong native level in Metal, for example, not taking
into account the OpenGL base level.
Bug: angleproject:2634
Change-Id: I3a7a3ac41bdbd91a47755bb4ca11bd579c182e04
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433326
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bdecaf33
|
2020-08-04T20:16:27
|
|
Metal: Implement PBO.
Bug: angleproject:2634
Change-Id: I77f085227298bf46361825d1886e04830dc9987a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336558
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
91004654
|
2020-08-25T01:08:00
|
|
Metal: Implement ANGLE_robust_resource_initialization.
Bug: angleproject:4929
Bug: angleproject:2634
Change-Id: Ib99b810059420e69d939f1bbb644c2b95de62850
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2374826
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
acda9dde
|
2020-08-08T18:36:57
|
|
Metal: Implement GL_OES_texture_3D
Bug: angleproject:2634
Change-Id: I8c46493ac28fe1bbfdb29ee3a60b23076bbc4c0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336119
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
4f247baf
|
2020-08-23T22:58:56
|
|
Metal: Implement EXT_draw_buffers & ANGLE_framebuffer_blit
Bug: angleproject:2634
Change-Id: I769ca7e113e660870e9b31dafb706c313db8ac24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2332146
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
81370214
|
2020-07-29T12:54:02
|
|
Pass the Command when sync'ing dirty objects
A new enum is being created that contains command types, which are then
passed to each dirty object when they are synced. This allows the
syncState() methods to perform special handling for each command type.
This change is in preparation for optimizing resolving multisample
images with glBlit, since the render pass needs to be updated before
it's ended.
Bug: angleproject:4753
Change-Id: I77701f79418d35cff689e864c8a8b47b6fca0255
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2327335
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9277ee74
|
2020-07-06T12:40:58
|
|
Metal: Implement MSAA default framebuffer.
GL_SAMPLE_COVERAGE_VALUE is implemented by inserting gl_SampleMask
writing logic to fragment shader.
New test added: MultisampleTest.ContentPresevedAfterInterruption.
- Skip on D3D11 (Bug: angleproject:4609)
Bug: angleproject:2634
Change-Id: Ib44daf0baccc36ea320596d81713156047da059c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2281783
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d4874cb3
|
2020-06-25T10:49:32
|
|
Reformat Framebuffer::readPixels
Reformat Framebuffer::readPixels and its overriding methods
to the following method signature
angle::Result readPixels(const Context *context,
const Rectangle &area,
GLenum format,
GLenum type,
const PixelPackState &pack,
Buffer *packBuffer
void *pixels);
This will allow capture replay tool to use its own PixelPackState
to read pixels from framebuffer without having to set the global states
Bug: angleproject:4787
Change-Id: Idc64179d8e8f6b5163ef0747f239cd5172a2491b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2267417
Commit-Queue: Manh Nguyen <nguyenmh@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ab372311
|
2020-05-14T23:27:06
|
|
Metal: refactor RenderUtils to split into multiple util classes.
This is useful for later modifications where blit/clear could be further
categorized based on texture format type (float/integer).
Bug: angleproject:2634
Change-Id: I877abd21761af9e91657686a60e189a43a33e3f4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193195
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1033d55d
|
2020-04-07T14:01:24
|
|
Pass binding enum to Framebuffer::syncState.
Will allow us to determine if we're clearing the read or draw FBO. Then
we can stash clears for the draw FBO only and issue them immediately
for the read FBO in the Vulkan back-end.
Bug: angleproject:4517
Change-Id: Ifc043317d6156a75749b13f9d2c44a17e14ee378
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139997
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c916fe8a
|
2020-04-02T16:57:49
|
|
Don't call syncState inside FBO queries.
This prevents a syncState ordering issue that was confusing FBO sync
when robust resource init is enabled. Also cleans up some redundant
format processing for the half float extensions.
Bug: angleproject:4517
Change-Id: Ieb13fc5203cf824a3e8affda96ea5cbbd89d78ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134411
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
75875885
|
2019-11-20T01:04:00
|
|
Metal: Fix glDisable(GL_DEPTH_TEST) didn't disable depth write
Per standard glDisable(GL_DEPTH_TEST) will disable depth write
also regardless of the value of glDepthMask()
Tests done:
- dEQP.GLES2/functional_fragment_ops_depth_stencil_stencil_*_no_depth
Bug: angleproject:2634
Change-Id: I3b101b8c0b3060f5ddbb18d3f97d7d6889cdec01
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1966184
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
05af7590
|
2019-11-20T01:04:00
|
|
Metal: Fix FramebufferMtl's read-after-delete
Due to late verification, ContextMtl might call onFinishedDrawingToFrameBuffer()
on a deleted framebuffer object inside syncState()
Fix:
- Switch to call onStartedDrawingToFrameBuffer() on new FBO instead of
calling onFinishedDrawingToFrameBuffer() on old (and possibly deleted)
FBO.
- Also discard framebuffer only takes effect per render pass. The
discard flag will be reset when render pass starts.
Bug: angleproject:4144
Change-Id: I7c6c96862892f1c241ce4af3b61862fa4b710a94
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1924101
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
405d4cf3
|
2019-11-09T02:28:49
|
|
Metal: multiple bug fixes
- ContextMtl: triangle fan draws should call setupDraw() with original
parameters. Not the modified parameters.
- SurfaceMtl: should initialize metal layer's drawableSize after layer's
creation.
- TextureMtl & FrameBufferMtl: Fix texture copySubImage CPU path
incorrectly copied unflipped area.
- mtl_render_utils: Fix wrong variable name used for trifan compute
pipeline cache table.
- mtl_resources: Fix texture & buffer memory leaks due to missing
ANGLE_MTL_AUTORELEASE.
- mtl_utils: Fix viewport flipping error due to arithmetic between
unsigned & signed values.
These bugs were discovered during dEQP tests running.
Bug: angleproject:2634
Change-Id: Ie01380910ab68a2b876718d9dac0b5b4c41b607c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906608
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
fe26bae4
|
2019-10-29T18:38:53
|
|
Metal backend implementation pt 2
This is without Metal specific shader translator implemented yet.
Bug: angleproject:2634
Change-Id: I95d589442251c9ba111bd05a2dc379a36739046c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1855069
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d200a77a
|
2019-10-10T00:44:01
|
|
Metal backend skeleton implementation.
Bug: angleproject:2634
Change-Id: I34be82f4a80a6851fecb53a51e069b134d82613a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1849079
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|