|
d10ba166
|
2020-05-19T18:00:38
|
|
Rename ProgramState::getProgramExecutable() to getExecutable()
The "Program" part of ProgramState::getProgramExecutable() is already
implied by being part of a ProgramState, so it can be removed.
Bug: angleproject:3570
Change-Id: I35ffb2af81196fa7f189f7d3a37158f5f1951141
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2209317
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
913f4f42
|
2020-04-15T00:54:37
|
|
Vulkan: Support VS, FS, and CS in the same PPO
This CL adds support for a Program Pipeline Object to have a VS, FS,
and CS attached to the same PPO and then using that PPO for both draw
and dispatch calls.
Bug: angleproject:3570
Test: KHR-GLES31.core.compute_shader.sso*
Change-Id: I262cdbdfd442f6db5ba2b45d1308003102b237cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2150078
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
dadd1986
|
2020-04-21T01:50:00
|
|
Implement GL_APPLE_clip_distance
- Built-in variable gl_ClipDistance has been added to compiler.
- Desktop GL: gl_ClipDistance is supported since GL 3.0. Enable/Disable
each gl_ClipDistances[i] works out of the box via glEnable().
- Vulkan/Metal: Use uniform variable to control writing to each
gl_ClipDistance. One bit flag controls one element in the gl_ClipDistance
array. The writing to the disabled element in vertex shader will be
ignored, and turned into zero assignment instead.
- Direct3D/Mobile GL: Not implemented yet.
- Added ClipDistanceTest to gl_tests and compiler unittests.
- GL_APPLE_clip_distance is a subset of GL_EXT_clip_cull_distance, so
GL_EXT_clip_cull_distance could be implemented in future if needed.
Bug: angleproject:4452
Change-Id: I571ac8b56826989808a680226a04bec4cf59988e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084324
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: 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>
|
|
405f8e7b
|
2020-02-24T17:38:10
|
|
Vulkan: Support Program Pipeline Objects
Add support for PPOs to the Vulkan back end.
Bug: angleproject:3570
Change-Id: I5403456929847c185467b008d810f31ecfcb60cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072652
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
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>
|
|
e4aa679c
|
2020-04-01T17:46:31
|
|
Texture: Pass explicit unpack buffer to setImage.
This will allow us to call setImage internally even if there's an
unpack buffer bound. Useful when implementing robust resource init with
copyTexImage in some edge cases.
Bug: angleproject:4517
Change-Id: I7e8e9536ab9222c620e572f7b6c20b08fa29d646
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2133088
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
b83b0f5e
|
2020-01-31T15:09:17
|
|
Add support for NV_read_depth, NV_read_stencil and NV_depth_buffer_float2 extensions
This cl adds the ability for the ReadPixels function to read other
attachments than the color attachment. Checks were added for both
depth and stencil attachments.
A new test was added (DepthStencilFormatsTest.DepthStencilReadback)
to test this new functionality. As the name mentions, it's used to
test reading from the depth and stencil attachments using ReadPixels.
Bug: angleproject:4295
Change-Id: I6fe9be11f05d6055a5883b4315f870e7c0ac41ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2031702
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
85c076ee
|
2020-02-20T17:54:35
|
|
Vulkan: Make mVariableInfoMap a gl::ShaderMap<>
The ShaderInterfaceVariableInfoMap information is specific to each
shader stage, since the locations are determined for each shader stage.
This change makes mVariableInfoMap a gl::ShaderMap<> to handle this,
which will make it easier to compile separable programs, determine the
variable locations, and transform the SPIR-V.
Bug: angleproject:3570
Change-Id: I28b71a37efe54bbcfe1dcd445fa03ee71e74f0a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2062741
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
abaa3573
|
2020-02-20T10:23:02
|
|
Vulkan: Only calculate variable locations once
Variable locations and descriptor set/binding values are calculated
multiple times:
- Compiling GLSL->SPIR-V
- Creating the Vulkan pipeline layout
- Updating descriptor sets
These values should instead be calculated once and reused throughout
since they won't change without recompiling the shader program.
Bug: angleproject:3570
Change-Id: I5d8767b3b2e2f741aade7fec9991eea53ee2eb98
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067101
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
68083e89
|
2020-03-04T15:55:53
|
|
Vulkan: Move cached samplers/images and has*() to ProgramExecutable
The active samplers and images are being moved from Program into
ProgramExecutable to unify interacting with them for Programs and
ProgramPipelines
Also, create some helper functions for gl::Program that ProgramExecutable can
call to make it easier for ProgramPipeline to respond to similar
queries for each of the Programs in the ProgramPipeline.
Bug: angleproject:3570
Change-Id: I0b37f1a379e56b9659d82d92f6d7a546beee11cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2087648
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b91d2630
|
2020-03-24T13:17:58
|
|
Speculative fix for assertion failure with samplers.
This was crashing for example here:
https://chromium-swarm.appspot.com/task?id=4b174a9710848410
https://chromium-swarm.appspot.com/task?id=4b214baec2ee7e10
With this stack:
libglesv2!gl::TextureState::isBoundAsSamplerTexture
libglesv2!gl::Texture::onUnbindAsSamplerTexture
libglesv2!gl::State::unsetActiveTexture+0x9
libglesv2!gl::State::updateActiveTextureState+0x2d2
libglesv2!gl::State::updateActiveTexture+0x3aa
libglesv2!gl::State::setSamplerTexture+0x4a1
libglesv2!gl::Context::bindTexture+0x1ab
libglesv2!gl::BindTexture+0x99
chrome!GrGLFunction+0x1f
chrome!GrGLGpu::bindTexture+0x1a0
chrome!GrGLProgram::bindTextures+0x1b9
chrome!GrGLOpsRenderPass::onBindTextures+0x50
chrome!GrOpsRenderPass::bindTextures+0x106
chrome!GrOpFlushState::bindTextures+0xf
chrome!`anonymous namespace'::FillRectOp::onExecute+0xd3
It's unclear how we could end up with a Texture bound that doesn't go
through the normal setter functions. I did see a potential hole where
textures might not get an unbind call when a Context is torn down. This
could lead to bugs in multi-context situations.
This protects the set/unset functions in a helper class to ensure we
always call onBind/onUnbind and forces the destructor to call unbind.
Bug: angleproject:4490
Change-Id: Ied64e02bbe3a37efcab6cbdd4bf2d1b6dcb8b3ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118254
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
07467b4a
|
2020-03-20T10:40:56
|
|
Remove GL_CHROMIUM_path_rendering
Bug: chromium:1063193
Bug: angleproject:4270
Change-Id: I35b24b7d8d892181955e49dd2495655bc57cb0df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112275
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e488d8b8
|
2020-02-26T16:11:29
|
|
Vulkan: Implement Android pre-rotation
As an Android GLES driver on top of Vulkan, ANGLE must pre-rotate
rendering on behalf of the application. This involves modifying the
vertex shader to multiply gl_Position with a mat2 "rotation matrix".
Not doing so means that SurfaceFlinger (SF) will perform a costly
rotation blit before presenting every image. Setting
WindowSurfaceVk::mPreTransform to mCurrentTransform tells SF to not do
the blit.
When the surface is rotated 90 or 270 degrees, the width and height
must be swapped for:
- The swapchain images, and for any depth, stencil, and/or multisample
attachments used with the swapchain image.
- The viewport, scissor, and render area.
Because the Metal back-end shares the TranslatorVulkan, it will define
the same preRotation (mat2) DriverUniform that is used for Vulkan.
Bug: angleproject:3502
Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b545
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038272
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8aea6d5a
|
2020-02-25T11:22:00
|
|
glslang: enforce initialize and release as once per process
Bug: angleproject:4354
Change-Id: Ice0912a90d4e9a4fe3fdaf67d67292afc0eba8a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2073201
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
468dfed3
|
2020-02-21T12:12:51
|
|
Reformat GN files
Otherwise this blocks the CQ at presubmit.
Bug: angleproject:3492
Change-Id: I3cf77c72daa358f5e1eabecf1dcb8808a1dc9e07
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068538
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ee89849b
|
2020-02-17T22:47:57
|
|
Metal: Fixed memory leak due to the CAMetalLayer still attached to super layer
When destroying SurfaceMtl, the CAMetalLayer should detach from its
super layer, otherwise memory leak could happen.
This memory leak caused the end2end tests to ran out of memory.
Bug: angleproject:2634
Change-Id: I8ea91cccdb42cf0ae8ef807cf01f1e05043dc7c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2060250
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9f4ab98d
|
2020-02-13T12:49:05
|
|
Return angle::Result from more label functions.
This is necessary for the new Vulkan implementation.
Bug: angleproject:4029
Change-Id: I07ef54145252ff102c74179361436587bb330fc7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055553
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9681190d
|
2020-02-05T12:51:25
|
|
Make Debug marker functions return angle::Result.
Allows error handling in these functions. Necessary for the Vulkan
back-end.
Bug: angleproject:4209
Change-Id: I2092e58e719c6ee562807e1c7e8ad26988342855
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040196
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e5385ea9
|
2020-01-27T13:40:18
|
|
Vulkan: Compile shaders at link time
Since line raster emulation was changed to use specialization constants,
it has been possible to compile shaders at link time. However, program
pipeline objects would have required keeping the shader sources around
for recompilation. Now that all necessary decorations are modified
directly in SPIR-V, it's possible to compile the shaders at link time
and forget about their sources. Program pipeline objects then simply
"reconfigure" the generated SPIR-V.
A next step could be to also create the Vulkan pipeline object at link
time. A number of failures due to gaps in CTS testing prevent that work
currently. In particular, in some situations the generated SPIR-V is
not per spec, for example it may contain vertex attributes with aliasing
locations, or have transform feedback capture of array elements
misconfigured.
Bug: angleproject:3394
Bug: angleproject:4253
Change-Id: I54c0884cf056b511a4a306225cc6ed2cef84d257
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2023186
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
58fc8b11
|
2020-01-31T19:03:12
|
|
Implement RGTC (BC4, BC5) compressed texture formats
gl.xml was modified as two enums were missing from their proper group.
dxgi_support_data.json was fixed to not expect BC4 and BC5 on FL9_3
Bug: angleproject:3149
Change-Id: Ieb97a8cf8e92258c1b44e090e823fac227997174
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033068
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
a36f8bd4
|
2020-01-29T12:10:17
|
|
Mark MemoryBuffer allocation functions as NO_DISCARD
Not all call sites were checking the return value of
MemoryBuffer::resize, mark the return value as NO_DISCARD and fix all
the warnings.
BUG=chromium:1030835
Change-Id: I762796e3d11efc131a814069d78a195b0d4c9f8f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2028151
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
71e6afb1
|
2020-01-14T14:12:31
|
|
Vulkan: Set set/binding in SPIR-V
This change introduces a SPIR-V transformer that modifies shader
interface variable decorations directly in SPIR-V instead of
manipulating the input GLSL. Currently, descriptor set and binding
indices are set by the transformer.
The shader translator outputs arbitrary set and binding indices. Once
compiled by glslang, the SPIR-V transformer modifies these decorations.
The ultimate goal is to be able to modify the SPIR-V again when program
pipeline objects decide a different set/binding is necessary.
Bug: angleproject:3394
Change-Id: If358265a72bf1fe9f5676562b39a632cb2e05dc4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001477
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1a1a1427
|
2020-01-23T13:57:21
|
|
Expose eglGetMscRateCHROMIUM from EGL_CHROMIUM_sync_control
When ANGLE is using the GL backend on GLX, we can expose
eglGetMscRateCHROMIUM via glXGetMscRateOML. Otherwise, this function
should return false.
Bug: chromium:1042393
Change-Id: Id9b308c2217e07ee9860e2869be0e23b7a0c7411
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2017048
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
135f8fcb
|
2020-01-13T16:18:41
|
|
Vulkan: Remove inactive uniforms in the translator
By removing inactive uniforms in the translator, glslang wrapper doesn't
need to comment them out. Additionally, inactive uniforms don't find
their way in the default uniform block, reducing its size if there's a
mix of active and inactive uniforms.
As collateral, it also fixes a bug where inactive uniforms of struct
type were not correctly removed by glslang wrapper.
Bug: angleproject:3394
Bug: angleproject:4211
Bug: angleproject:4248
Change-Id: I874747070e875fe24bf59d39d1322e319e280a16
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1999278
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b36e46ab
|
2020-01-08T15:49:18
|
|
Vulkan: Line raster emulation through specialization constant
In preparation for compiling shaders early at link time, this change
reworks line raster emulation such that it uses specialization constants
instead of a preprocessor condition. This means drawing both triangles
and lines with this program will still result in a one-time shader
compilation.
The compilation is still done at draw time in this change.
Bug: angleproject:3394
Change-Id: I0bf91398868d7f7147456533b728906b505192b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1992365
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
94de306d
|
2020-01-14T16:18:56
|
|
Extensions suffixes
Added NV/OES suffixes to relevant Extensions members.
Bug: angleproject:3104
Change-Id: Ia1798157086230bde8d11c6fcb4fe93211e996ab
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2013168
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
f02490d1
|
2019-12-23T14:06:12
|
|
Vulkan: clean up arguments to glslang wrapper
Some flags were sent as parameters while an Options parameter was added.
This change moves those flags to the GlslangSourceOptions struct.
Bug: angleproject:3394
Change-Id: Iff5c1c83dd564d7bcfcbd84e6df244b7356d669d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1984108
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c713abfd
|
2019-12-23T12:03:02
|
|
Vulkan:Transform/feedback instanced draw support
These fixes allow dEQP 3.1 KHR-GLES31.core.vertex_attrib_binding.basic-input*
test cases to pass.
This fixes a bug in instanced drawing with transform feedback buffers
where we were overwriting the initial transform feedback output as new
instances were drawn. To fix this, the vertices in each draw are passed
into a uniform value and the output is offset based on the current instance
and the number of vertices in the draw.
It also fixes a validation error where transform feedback descriptor
was sometimes setting a buffer range of 0. This is not allowed, so in
the 0 case we pull the actual buffer size from the bufferHelper object.
Bug: angleproject:4236
Change-Id: Ib72898a0e6caab96c446c1e996a6124d2c001193
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1979600
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
fbe6c1d2
|
2019-12-14T21:54:34
|
|
Metal: correctly clamp stencil reference values
According to GL spec:
- If stencil ref value is larger than max value the stencil buffer
can represent, clamp it to max value (2^bits - 1)
- The stencil clear value & mask will be truncated to stencil buffer's bits
instead of clamping.
Metal API is very vague on how it handles the stencil ref value larger than
the stencil bits can represent, so we need to handle it manually. In fact,
the Metal API seems to have bugs when dealing with large stencil ref value,
i.e. > 0xff for example.
Bug: angleproject:2634
Change-Id: I86f61f0bfd19dfc0fa459c84d98785a1af857a6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1966185
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
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>
|
|
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>
|
|
d6053daa
|
2019-12-05T17:46:23
|
|
Remove tabs from source files.
WebKit's Subversion repo refuses to commit source files that contain
tabs.
Bug: angleproject:3439
Change-Id: I0a804bcfa0375a98e19945e20297c90d31106827
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954410
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
caa6eccd
|
2019-10-27T13:46:56
|
|
Vulkan: Implement Transform Feedback support via extension
Implemented transform feedback extension path. Where
VK_EXT_transform_feedback is supported, extension path will be taken
over an emulation path. Extension path has advantages in terms of
performance.
BUG=angleproject:3206
Test: dEQP-GLES3.functional.transform_feedback.*
angle_end2end_tests --gtest_filter=TransformFeedbackTest*
Change-Id: Ia07c23afb289d9c67073469a97b714ec96f5265a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1882767
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
4cef8a49
|
2019-11-26T00:04:00
|
|
Metal: Support depthRange near > far
Metal doesn't natively support near > far depthRange, need to
emulate it via shader.
Bug: angleproject:2634
Change-Id: I1885cad3467478a0dcc4b25b7d41f980b9e03103
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919282
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
a825eb70
|
2019-11-21T11:37:17
|
|
Implement BaseVertex draw calls for Vulkan, OpenGL, NULL contexts.
This adds support for the following functions:
- glDrawElementsBaseVertex
- glDrawRangeElementsBaseVertex
- glDrawElementsInstancedBaseVertex
Bug: angleproject:3582
Bug: angleproject:3402
Bug: angleproject:4166
Change-Id: I83770f62e3a918c0965fd4ca8c7d9e598b8b4154
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1929083
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e5b474c6
|
2019-11-19T23:04:00
|
|
Metal: support ANGLE_instance_arrays/EXT_instance_arrays
Also added TRIANGLE_FAN & LINE_LOOP instanced draws test cases.
Bug: angleproject:2634
Change-Id: I84740a7221ab49710cf23767c81fa2d303aad364
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919280
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6fcc0bb8
|
2019-11-21T01:19:40
|
|
Metal: Re-add end2end test configs (running test is still disabled)
angle_test_instantiate.cpp & angle_test_instantiate_apple.mm:
- Disabled metal platform selection on pre-10.13 mac devices for
Bug: angleproject:4153
Explicitly disabled tests on metal:
- DifferentStencilMasksTest.DrawWithDifferentMask
- PointSpritesTest.PointSizeAboveMaxIsClamped
- WebGL2ReadOutsideFramebufferTest.CopyTexSubImage3D
This requires the crash fix in http://crrev.com/c/1924101
Bug: angleproject:4153
Bug: angleproject:2634
Change-Id: I95046d731a8ba7414cf1a1f4b6f2940282725872
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1926389
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
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>
|
|
f9c3eaf4
|
2019-11-19T15:19:04
|
|
Add ability to disable all ANGLE features
Chrome has a --disable-gpu-driver-bug-workarounds flag that needs to be
able to be forwarded to ANGLE
Bug: 1016377
Change-Id: Ied6c8656742e25c32d508b8bfe76a902d82bcf93
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1925249
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8392b118
|
2019-11-20T16:57:08
|
|
Revert "Metal: Enable end2end tests."
This reverts commit 0bb42e091b77f174632434a05789b2ce632bd902.
Reason for revert: https://bugs.chromium.org/p/chromium/issues/detail?id=1026633
Causing failures on Mac bots.
Original change's description:
> Metal: Enable end2end tests.
>
> Explicitly disabled tests:
> - DifferentStencilMasksTest.DrawWithDifferentMask
> - PointSpritesTest.PointSizeAboveMaxIsClamped
> - WebGL2ReadOutsideFramebufferTest.CopyTexSubImage3D
>
> Bug: angleproject:2634
> Change-Id: I76ab450c06d0e1be1e7469a8b9c6497684c3ca54
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906607
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jonahr@google.com,jmadill@chromium.org,le.hoang.q@gmail.com
Change-Id: Iaa4264834170a49c274f186d3d74f57714c84b32
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2634
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1926378
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
0bb42e09
|
2019-11-19T23:04:00
|
|
Metal: Enable end2end tests.
Explicitly disabled tests:
- DifferentStencilMasksTest.DrawWithDifferentMask
- PointSpritesTest.PointSizeAboveMaxIsClamped
- WebGL2ReadOutsideFramebufferTest.CopyTexSubImage3D
Bug: angleproject:2634
Change-Id: I76ab450c06d0e1be1e7469a8b9c6497684c3ca54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906607
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
53e45360
|
2019-11-09T17:26:58
|
|
Metal: support texture's incomplete image definitions.
glTexImage*, glCopyImage* will copy data to the image at the respective
index, then during draw call, the image data will be transferred to
real Metal texture.
Test done: MipmapTest.DefineValidExtraLevelAndUseItLater
For implementation notes, see
src/libANGLE/renderer/metal/doc/TextureDataCompleteness.md
Bug: angleproject:2634
Change-Id: I0ca24c8beff2e109a794260c436985e9f4650d83
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906609
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
deae1fce
|
2019-11-09T17:22:40
|
|
Enable Metal backend.
Metal will be secondary default backend after OpenGL for now.
The tests will be enabled for metal in
CL http://crrev.com/c/1906607.
Bug: angleproject:2634
Change-Id: I109c641d749c2a207bbb7d500bc281ffb0b13848
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906612
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
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>
|
|
c2f1f618
|
2019-10-28T13:06:42
|
|
Always use MTLPixelFormatBGRA8Unorm for SurfaceMtl.
Apple Features Table says BGRA8 is not always available but it turned
out not the case based on response from Apple dev.
Bug: angleproject:2634
Change-Id: I9e3465420f45fcd362cbdd385bb78169463a759d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1906606
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
a5a04ac0
|
2019-10-29T22:57:55
|
|
Metal backend pt3: shader translator
Implementation of GLSL to MSL translator
Bug: angleproject:2634
Change-Id: I66e2374b461548fac46163ea79790a488515e6b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1887251
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>
|
|
89eda11e
|
2019-10-22T08:08:30
|
|
Metal: Move ldflags to Metal backend config.
ldflags apparently don't work in source_sets.
Bug: chromium:1014228
Change-Id: I123900ae7f7ef3705301dc9b78cdf92ebd0e5c4f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1873235
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
05bd1896
|
2019-10-17T23:08:03
|
|
Report Metal as unavailable
Metal backend is not ready yet, so report as unavailable
to avoid DisplayMtl being created by frontend.
Bug: angleproject:2634
Change-Id: Ia45977cede01f62347967eefe661b63bef3575e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1865736
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e7b5c5e9
|
2019-10-14T16:33:40
|
|
Metal: Use -weak_framework to support OS 10.10.
This OS is still tested in Chromium configurations. e.g.:
https://ci.chromium.org/p/chromium/builders/ci/Mac10.10%20Tests/47668
Bug: chromium:1014228
Bug: angleproject:2634
Change-Id: Iadefd461ba8bbaec03dcc711227580f6ecdcad6a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1860105
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
25301999
|
2019-10-11T14:49:00
|
|
Metal implementation pt 1: autogen resources
Autogen format table and internal shaders for Metal.
Bug: angleproject:2634
Change-Id: I4d81fcd17a0e9959ba9c38a250acc7abb168f54c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1855067
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: 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>
|