|
6ddbfa39
|
2022-05-09T09:06:16
|
|
Metal: Log the shader source when a shader fails to translate
Refactor Metal logging to include a message string.
Bug: chromium:1322521
Change-Id: I3a7b5c36fcf140b3664ad96a9da924819326bf94
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3634725
Reviewed-by: Quyen Le <lehoangquyen@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
1bd1a3db
|
2022-01-06T15:08:48
|
|
Metal: Canvas resizing causes webpage to run out of memory
For https://bugs.webkit.org/show_bug.cgi?id=232122
Introduce a maximum resident amount of memory that a single
command buffer can use, before forcing a flush.
As part of ensuring that a command buffer is ready,
check to see if this limit is exceeded. if so,
flush the command buffer, and create a new one.
Bug: angleproject:6880
Change-Id: I5e89735d05adbc174237ab79b006a75bbe89e560
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3369922
Reviewed-by: Gregg Tavares <gman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
f13f440e
|
2021-12-15T15:11:05
|
|
Reland: Metal: Fix Webkit warnings in ANGLE build
Fix nullable warnings, unused functions
Add in additional function specification to FormatStringIntoVector
to correctly fix warning
Bug: angleproject:6781
Change-Id: I26af2d698f14d353832802aa7b5ce34c5a1f4b95
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3366796
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
1da7e3af
|
2021-12-21T15:55:38
|
|
Revert "Metal: Fix Webkit warnings in ANGLE build"
This reverts commit 6706799186683dd3733c4610de09d84721aa08c8.
Reason for revert: Includes pragma that disables a warning.
Original change's description:
> Metal: Fix Webkit warnings in ANGLE build
>
> Fix nullable warnings, unused functions
>
> Bug: angleproject:6781
> Change-Id: I063331e60d31a55b3cc9df0b41ace014d7d13659
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343174
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Commit-Queue: Kenneth Russell <kbr@chromium.org>
Bug: angleproject:6781
Change-Id: Id5fce2afd0381030a974871b99e8adf075677bd1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3352086
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
67067991
|
2021-12-15T15:11:05
|
|
Metal: Fix Webkit warnings in ANGLE build
Fix nullable warnings, unused functions
Bug: angleproject:6781
Change-Id: I063331e60d31a55b3cc9df0b41ace014d7d13659
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3343174
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
3e7e2758
|
2021-12-14T15:48:42
|
|
Metal: Fix macOS ANGLE build on Catalina (10.15) SDK
macOS Catalina does not have an enum for AppleGPUFamily6
In addition, platform includes for macOS 11.0
should use 110000, not 101600 (10.16)
Bug: angleproject:6814
Change-Id: I9c6a0587aa22fb2e58d02fcb1779060de2632963
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3340104
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
42bd4fc2
|
2021-12-10T14:58:17
|
|
Metal: add ANGLE_metal_create_context_ownership_identity.
This Metal-specific EGL extension allows a given context
and the GPU resources it allocates to be associated with
a particular task ID on the system, for system-level
bookkeeping purposes.
Bug: angleproject:6795
Change-Id: I19ee0993564169b01c4a450e63dcfacd339b98b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3335172
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
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>
|
|
54d4bfe5
|
2021-09-28T17:27:57
|
|
Update ANGLE Metal to Webkit at Sept 29 2021
This commit merges changes from Webkit into ANGLE upstream.
The following commits were used:
Current:
https://git.webkit.org/?p=WebKit.git;a=commit;h=e01d0bda8f4b7dc2fd834b92802d15d8c15735f
Previous:
https://git.webkit.org/?p=WebKit.git;a=commit;h=492f078198748e8ff248eea0bb979cf79e5f5adfj
The following commits were merged in from the Webkit Repository:
(Hashes from git://git.webkit.org/WebKit-https.git)
03ea44c78ce5665d4ec9add271260121cbc7bc6c
Problems with drawElements in some conditions
https://bugs.webkit.org/show_bug.cgi?id=230107
c8dc8e0c4d1109d39a62eb197b45e95132380290
ANGLE Metal: single-component swizzles do not compile
https://bugs.webkit.org/show_bug.cgi?id=230472
7285dbaaf5af15877d6c332b30ef7a4d67225460
webgl-compressed-texture-s3tc-srgb.html fails on Intel+AMD Metal
https://bugs.webkit.org/show_bug.cgi?id=229941
4c72f92967ecd2a095666fef431384c4f5f60fb4
fragcolor-fragdata-invariant.html fails
https://bugs.webkit.org/show_bug.cgi?id=223317
cd943145467f54e5928793c0dd3dfa2313c007dd
ANGLE Metal index buffer restart range cache could be maintained..
https://bugs.webkit.org/show_bug.cgi?id=227451
f075ff77e592eabd54dd659a8e13617cc5faedc8
ANGLE Metal infinities and NaNs generated with incorrect syntax
https://bugs.webkit.org/show_bug.cgi?id=229439
5862073269122f4b2d43d96d3922757557755e86
[Metal ANGLE] Fix over-autorelease of
rx::DisplayMtl::getMetalDeviceMatchingAttribute()...
<https://webkit.org/b/229128>
85f797ad31db048cb82cbafd428ef77f0b839312 ANGLE Cocoa compiles....
https://bugs.webkit.org/show_bug.cgi?id=228987
a67918ba279ad4842b6ae84a79c3f1c0cdc35ace Avoid infinite recursion...
https://bugs.webkit.org/show_bug.cgi?id=228978
d341f67de0033adcf1ec6373ace6a54b06c4a031
Cherry-pick ANGLE: Revise WebGL's shaderSource validation
https://bugs.webkit.org/show_bug.cgi?id=228951
1e2714d981e97de8234ba055570dfdf56e8b6944
3.5 MB system-wide footprint impact due to thread-locals...
https://bugs.webkit.org/show_bug.cgi?id=228240
d32e5cca34081997d32504b0b56c18b9703ff3be
Build Default Metal library offline
https://bugs.webkit.org/show_bug.cgi?id=227333
33702279faccfd4c8d1c8a6d549925f9ca9a4e8f
WebGL2 demo doesn't work due to failing compilation....
https://bugs.webkit.org/show_bug.cgi?id=226865
0a075885d242db38c4e435a6597173dc3b082173
rAF driven WebGL submits excessive amount of GPU work...
https://bugs.webkit.org/show_bug.cgi?id=227059
f38a92b3e7c17efda269caa7066e7ffe2f828e72
WebGL shader link error in iOS 15 beta: "Internal error..."
https://bugs.webkit.org/show_bug.cgi?id=227723
98d48f011d561531470d97f26a022767b5452fb7
REGRESSION (r279466): [Big Sur] webgl/1.0.3/conformance &...
https://bugs.webkit.org/show_bug.cgi?id=227596
Bug: angleproject:6471
Change-Id: I07166d0dc4b5c3579d98353485b3245b81c7b882
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3194322
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kyle Piddington <kpiddington@apple.com>
|
|
7dd2361b
|
2021-09-17T15:43:22
|
|
Metal: ANGLE Metal AutoObjCPtr == nullptr comparison is inverted
Port the fix from Webkit for this inverted comparsion
Unify the nullptr type throughout all functions
Bug: angleproject:6351
Change-Id: Id856af31c9eea5cc79993c3454e452d1c14d0d0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3169436
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Gregg Tavares <gman@chromium.org>
|
|
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>
|
|
f2aa9d5d
|
2021-04-11T14:55:19
|
|
Reland: Metal: Support importing external metal textures
This relands I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0.
Fixes:
- uninstantiated ImageTestMetal error
- failed ImageTest.ANGLEExtensionAvailability on ARM mac.
Bug: angleproject:5763
Bug: angleproject:5814
Change-Id: I906fe52baefd6be3c6e00f594795bd527df01616
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2820178
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
|
|
256100b2
|
2021-04-02T01:45:14
|
|
Revert "Metal: Support importing external metal textures"
This reverts commit 2ec3e0a1e6890da56de9dfd3da5c9f31a3f7fbb7.
Reason for revert: Test suite ImageTestMetal never instantiated https://anglebug.com/5814
Original change's description:
> Metal: Support importing external metal textures
>
> via KHR_image_base and ANGLE_metal_texture_client_buffer
>
> Bug: angleproject:5763
> Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811
> Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
> Reviewed-by: Kenneth Russell <kbr@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
Bug: angleproject:5763, angleproject:5814
Change-Id: Ia862aa37a6c914f6e21f9b3121c7c36d449475ea
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2801155
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
2ec3e0a1
|
2021-03-13T22:17:49
|
|
Metal: Support importing external metal textures
via KHR_image_base and ANGLE_metal_texture_client_buffer
Bug: angleproject:5763
Change-Id: I4d4a88cfbb77d8b7508b787c7fec44073d3b11b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2757811
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ffd80394
|
2021-03-06T13:32:09
|
|
Metal: Enable iOS pixel formats on macOS 11
Bug: angleproject:2634, angleproject:5672
Change-Id: Idd1cc325067e73b02f4f82b2d78d20420e50645b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2739729
Commit-Queue: Alexey Knyazev <lexa.knyazev@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8a50b42b
|
2020-10-24T19:29:12
|
|
Metal: Convert index & vertex format on GPU when possible.
- When converting vertex buffer:
- if there is no render pass active, use compute shader to convert.
- if there is a render pass active and device supports explicit memory
barrier then convert the buffer in vertex shader with direct buffer
write and insert a memory barrier.
- if there is a render pass active and device doesn't support explicit
memory barrier then convert the buffer on CPU.
Bug: angleproject:2634
Change-Id: I5346e3a2adb855f40e46a3912d9db404a4482e0f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2434025
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
83539557
|
2020-09-27T16:27:16
|
|
Metal: Implement texture swizzle
Only enabled on macOS 10.15 and iOS 13.0 for now.
Bug: angleproject:2634
Change-Id: Ic44a245198e32f076e429312cae844c510e864d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433333
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
|
|
9ff58e26
|
2020-09-27T15:27:12
|
|
Metal: Implement sampler object & shadow compare mode
Note: GL_TEXTURE_COMPARE_MODE=GL_NONE is not supported on shadow sampler
for now.
Bug: angleproject:2634
Change-Id: I470bad6322e78ef1408e4334e1e778821df7cbf1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433332
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
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>
|
|
6dfd855a
|
2020-03-25T03:02:08
|
|
Metal: Implement fence sync
Bug: angleproject:2634
Change-Id: If1f7bb12c0e661c8e4b5677798a92440995819e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2433325
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6136cbcb
|
2020-09-23T21:31:05
|
|
Metal: Implement transform feedback
- XFB is currently emulated by writing to storage buffers.
- Metal doesn't allow vertex shader to both write to storage buffers and
to stage output (i.e clip position). So if GL_RASTERIZER_DISCARD is
NOT enabled, the draw with XFB enabled will have 2 passes:
+ First pass: vertex shader writes to XFB buffers + not write to stage
output + disable rasterizer.
+ Second pass: vertex shader writes to stage output (i.e.
[[position]]) + enable rasterizer. If GL_RASTERIZER_DISCARD is
enabled, the second pass is omitted.
+ This effectively executes the same vertex shader twice. TODO:
possible improvement is writing vertex outputs to buffer in first
pass then re-use that buffer as input for second pass which has a
passthrough vertex shader.
- If GL_RASTERIZER_DISCARD is enabled, and XFB is enabled:
+ Only first pass above will be executed, and the render pass will use
an empty 1x1 texture attachment since rasterization is not needed.
- If GL_RASTERIZER_DISCARD is enabled, but XFB is NOT enabled:
+ we still enable Metal rasterizer.
+ but vertex shader must emulate the discard by writing gl_Position =
(-3, -3, -3, 1). This effectively moves the vertex out of clip
space's visible area.
+ This is because GLSL still allows vertex shader to write to stage
output when rasterizer is disabled. However, Metal doesn't allow
that. In Metal, if rasterizer is disabled, then vertex shader must
not write to stage output.
- See src/libANGLE/renderer/metal/doc/TransformFeedback.md for more
details.
Bug: angleproject:2634
Change-Id: I6c700e031052560326b7f660ee7597202d38e6aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2408594
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
1677cf14
|
2020-09-13T20:14:59
|
|
Metal: Implement Uniform buffers
Uniform buffer is implemented in two forms:
- If number of ubo used in shader program is low, each buffer will use
one discrete Metal buffer slot.
- If number of ubo used is large, they will be embedded into one Metal
argument buffer. Argument buffer is similar to Vulkan descriptor set.
This is due to limit of number of Metal's discrete buffer slots which
is only 31 and over half of them are already used by vertex
attributes, default uniforms, driver uniforms, etc. The downside is
that whenever a buffer binding is changed, the argument buffer must be
updated also.
Added empty TransformFeedbackMtl implementation to enable ES3 context
creation on Metal.
Bug: angleproject:2634
Change-Id: I69325696fac735cb45ab88ab55468c0991abc317
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2408593
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
69da0b92
|
2020-09-13T20:00:19
|
|
Metal: Use shared memory for small dynamic buffers.
- If BufferMtl is static or large size, don't use shadow copy. Use one
MTLBuffer and map directly on it.
- If BufferMtl is dynamic and small size, use shadow copy and buffer
pool of 10 MTLBuffer (s). The MTLBuffer is allocated in shared memory
in this case (PCI-E memory for example). MTLBuffer in shared memory
region doesn't need to sync content between CPU and GPU.
- When copyBuffer, if BufferMtl is being used by GPU use blit command to
do the copy on GPU side.
- Also implemented GL_MAP_UNSYNCHRONIZED_BIT.
Bug: angleproject:2634
Change-Id: I7a5aab309d24c76106a7087358ee5883ee05d250
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2408592
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>
|
|
d7149f2a
|
2020-08-26T19:44:54
|
|
Metal: Disable unused attribute slots.
If an attribute slot is unused and user enables it but doesn't bind any
buffer, Metal validation layer will complain that a buffer slot is
missing (even though the slot is not used inside shader).
Fix: if shader program doesn't use an attribute slot or there is no
buffer bound to it, then disable that attribute.
Bug: angleproject:2634
Change-Id: Ib56e0bf64bab13efce8b2972bfe386e26f45e50e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2392171
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>
|
|
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>
|
|
50704dc3
|
2020-08-04T12:08:00
|
|
Metal: Implement EXT_occlusion_query_boolean.
- Metal's occlusion(called visibility) query operates per render pass.
Implementation details are in
src/libANGLE/renderer/metal/doc/OcclusionQueries.md.
- New tests:
- OcclusionQueriesTest.ClearNotCounted.
- OcclusionQueriesTest.MultiQueries (failure on OpenGL/D3D11
back-end).
Bug: angleproject:2634
Change-Id: Idd1327b5472d0e8c2b69307a7f04a1da4a847a40
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2336121
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Reviewed-by: back sept 10 - 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>
|
|
113c5e29
|
2020-05-11T22:49:03
|
|
Metal: deferred render command encoder creation.
MTLRenderCommandEncoder creation will be deferred until a render pass
ends.
Commands will be stored into a back-end owned buffer during render pass.
At the end of the render pass, those commands will be re-encoded into an
actual MTLRenderCommandEncoder.
Benefits:
- Useful for future implementation of occlusion query buffer where it
could be allocated right before the end of a render pass to be big
enough to store all queries within the render pass.
- It's possible to change load option (deferred clear) as long as there
is no draw call issued yet. This is not implemented yet.
- Possibility of commands' re-ordering.
Bug: angleproject:2634
Change-Id: I1348716aa882c0540d9120bf175d8dac13fb58bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193196
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5e13757b
|
2020-05-11T00:50:00
|
|
Metal: Fix array of structs containing array of samplers bug.
Previously ProgramMtl could try to bind fixed slots to samplers based on
layout (set=..., binding=...). However, GLSL layout model is different
from Metal slots assignment. For example, The following is valid layout
in GLSL:
- array samplers A[2] is bound to index 0.
- array samplers B[2] is bound to index 1.
It is invalid to do so in Metal, since A occupies 2 slots, thus samplers
B[2] must be bound to slots starting from 2.
New binding method: let spirv-cross auto assigns the texture slots and
retrieve them after compilation.
Incomplete textures moved to ContextMtl using IncompleteTextureSet.
New test added: GLSLTest.ArrayOfStructContainingArrayOfSamplers.
Bug: angleproject:2634
Change-Id: Ib0edaaf8b20512e1272c37c1d4b16a88a5b35e75
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2193193
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
ab42afa6
|
2019-11-21T10:13:44
|
|
Metal: fix vertex attribute's conversion lost after changing buffer binding.
After vertex buffer's attribute is converted and stored in conversion
buffer. Binding the same attribute to another buffer, then binding it
back to previous buffer will result in previous conversion
information lost. The conversion method would skip the conversion due to
buffer's content hadn't been changed, however it didn't reuse the old
conversion result.
This CL also changed the way binding offset is used in Metal backend.
- Previous, the offset would be assigned to the offset field of
MTLVertexAttributeDescriptor, then the buffer would simply be bound to
the command encoder with offset=0
i.e. setVertexBuffer(buffer, index, 0)
- However this approach has several disadvantages. Since Metal doesn't
allow MTLVertexAttributeDescriptor's offset to be larger than the
vertex attribute's stride, the old approach would force the back-end
to convert the attribute and store in conversion buffer.
New approach:
- MTLVertexAttributeDescriptor's offset will be zero. The offset will be
used to bind the buffer itself to the render command encoder.
i.e. setVertexBuffer(buffer, index, offset)
This way the "offset <= stride" restriction no longer exists. The only
restriction is the offset must be multiple of attribute's size.
Added 3 new tests:
- SimpleStateChangeTest.RebindTranslatedAttribute
- VertexAttributeTest.DrawWithLargeBufferOffset
- VertexAttributeTest.DrawWithLargeBufferOffsetAndLessComponents
Bug: angleproject:2634
Change-Id: I6c2fa8091436e4a24405d791f86d17d97df02d64
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1940009
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
d1860ea1
|
2019-11-19T23:04:00
|
|
Metal: support OES_depth_texture
Also added Depth32 & Depth16 texture data upload tests.
Bug: angleproject:2634
Change-Id: I103f1cda1dc915f0dc8b04f7aaa2d8c0f9220cda
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919281
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|