|
9819e9ed
|
2020-01-15T17:13:32
|
|
GL_EXT_read_format_bgra support
Implemented DetermineBGRAReadFormatSupport in order to allow enabling
readFormat when possible with the Vulkan backend.
While reading the spec, I realized that ANGLE only seems to care
about BGRA8888 and not the new types mentioned in the extension.
Logged a new issue (http://anglebug.com/4302) to track this.
Bug: angleproject:4294
Change-Id: I071ed89574de9b4088df2301c317d3769cb31ce6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2003237
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
eb06bc24
|
2020-01-14T10:35:01
|
|
GL_EXT_float_blend support
DetermineFloatBlendSupport was added to be able to set floatBlend to
true if requirements are met. Essentially GL_EXT_float_blend complements
GL_EXT_color_buffer_float by making any non-blendable formats blendable.
Bug: angleproject:4291
Change-Id: I40d6bb7a93b8847a63de2d25c6a8dc411d6d8fbb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001479
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
41f6150e
|
2020-01-14T16:18:56
|
|
Stubs for new required extensions
Added stubs for these soon to be added extensions:
- GL_OES_depth_texture_cube_map
- GL_EXT_read_format_bgra
- GL_NV_depth_buffer_float2
- GL_NV_read_depth
- GL_NV_read_stencil
Bug: angleproject:4293
Bug: angleproject:4294
Bug: angleproject:4295
Change-Id: I56cf1fda377e48521f30bd11f5776409bfb88701
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001480
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e0a28ba4
|
2020-01-14T09:44:27
|
|
Add blendable checks to GL_EXT_color_buffer_float
The GL_EXT_color_buffer_float spec
https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_color_buffer_float.txt
mentions that some of the formats must be blendable:
"Blending applies only if the color buffer has a fixed-point or
floating-point format. If the color buffer has an integer format,
proceed to the next operation. Furthermore, an INVALID_OPERATION
error is generated by DrawArrays and the other drawing commands
defined in section 2.8.3 (10.5 in ES 3.1) if blending is enabled
and any draw buffer has 32-bit floating-point format components."
So any non 32-bit floating-point must be blendable.
Bug: angleproject:4291
Change-Id: I850fb13b71e4ad03fd07e2a265896c9106bc0ce1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001478
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
920ef28a
|
2020-01-15T15:26:17
|
|
Fix FL10_0 multisampling
The last render-to-texture commit broke FL10_0 multisampling by
unconditionally asking for D3D11_STANDARD_MULTISAMPLE_PATTERN
quality setting.
Per the documentation on
https://docs.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_standard_multisample_quality_levels
applications can only request the standard multisample pattern on
feature levels 10_1 and above.
For feature levels 10_0 and below, we'll stick with asking for a
quality level of 0 like the code previous did.
Bug: chromium:1036367
Change-Id: I0dd7704cf144ebce952e1f7d5e148d3382891aed
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2003238
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
df0203a9
|
2020-01-15T14:05:33
|
|
EGL: Add support for EGL_EXT_pixel_format_float extension
Add support for floating point configs. On backends that
support rendering to floating point formats, add them to
EGL's frambuffer config list
Bug: angleproject:3958
Tests: dEQP-EGL.functional.wide_color.*fp16*
angle_end2end_tests --gtest_filter=EGLFloatSurfaceTest*
Change-Id: Ie65f63013483267985c2b308567bf5025acf750e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993686
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d151b459
|
2020-01-14T09:44:27
|
|
Blendable check
- Added a blendable check to InternalFormat
- Set the blendable check to the same as the Renderbuffer check for
most formats, except true integer formats and 32F formats
- True integer formats never support blending
- 32F formats support blending based on the GL_EXT_float_blend
Bug: angleproject:4291
Change-Id: Icffdd3e6d8791303bdfdad9ec01cfd9a1d511af0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1999495
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
|
|
441b72f0
|
2020-01-16T14:48:39
|
|
Vulkan: Make ContextVk own ResourceUseList.
This moves the resource use tracking functionality out of CommandGraph.
Making the list a separate class helps the implementation avoid tricky
circular include problems.
Bug: angleproject:4029
Change-Id: I3288fc685b21e949f12b0796109a2b7bb117c249
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2002931
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4ff1651e
|
2020-01-16T12:42:27
|
|
Vulkan: Add ResourceUseList helper.
This abstracts away the ResourceUse tracking from CommandGraph. Pulling
it out will allow us to more easily swap resource use tracking into
ContextVk. The command graph is eventually going away so we need to
move functionality out of CommandGraph.
Bug: angleproject:4029
Change-Id: Icc3bcc824510b03e91f8ff010a82751a81516bfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2002930
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ddb99f21
|
2020-01-14T09:44:27
|
|
Support blendable capability
Vulkan distinguishes between a texture format that can be used as a
render target (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) and one that
supports blending (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT).
This cl adds a blendable capability and sets it based on the
appropriate bit. It also adds the check in GetFormatSupportBase(),
but all uses of it are currently set to false.
In terms of behavior, this cl should be noop.
Bug: angleproject:4291
Change-Id: Ib151ac8ab7b69311b7fdef15ad87186d13e3ed78
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1999494
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
50a69a14
|
2020-01-16T07:01:37
|
|
Roll third_party/vulkan-headers/src f63dd5c9d874..881bbb347a08 (1 commits)
https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers/+log/f63dd5c9d874..881bbb347a08
git log f63dd5c9d874..881bbb347a08 --date=short --first-parent --format='%ad %ae %s'
2020-01-15 oddhack@sonic.net Update for Vulkan-Docs 1.2.131
Created with:
gclient setdep -r third_party/vulkan-headers/src@881bbb347a08
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/vulkan-headers-angle-autoroll
Please CC jonahr@google.com on the revert to ensure that a human
is aware of the problem.
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md
TBR=jonahr@google.com
Bug: None
Change-Id: I2f78b6d68988172304e50fb17ed882b117faa77c
Tbr: jonahr@google.com
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2004368
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Commit-Queue: angle-autoroll <angle-autoroll@skia-public.iam.gserviceaccount.com>
|
|
df0683b1
|
2020-01-15T14:00:47
|
|
Expose GL_ANGLE_framebuffer_blit in NULL backend
The passthrough ASAN fuzzer was hitting a null-dereference trying to
call glBlitFramebuffer when ANGLE was not exposing it. The fuzzer uses
the NULL backend so we can just expose it.
Bug: chromium:1029829
Change-Id: I0f65c65284756fa21821155559a6404d95e25647
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2003230
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
01c0d6bd
|
2020-01-12T13:41:31
|
|
Vulkan: Use dynamic buffers for staged updates
Dynamic buffers are used to perform staged updates to
BufferVk objects instead of recreating staging buffers
for each update.
Bug: angleproject:4292
Change-Id: I0f64c821c97e0e6014e9df1d4f99e2f495838025
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001461
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0d2c75f4
|
2020-01-14T19:35:16
|
|
DisplayGLX::isValidNativeWindow, avoid X11 exiting the program
The previous implementation of the function had an incorrect comment
that implied XQueryTree was a great way to check if a Window is valid.
Any X11 function taking a Window is a good candidate, what we need to be
careful about is X11 exiting the program on any error.
Replace it with a call to XGetWindowAttributes while ignoring X11
errors.
This fix was found while implementing similar functionality in Dawn.
Bug: dawn:269
Change-Id: I777e59cddbe94baf63286d11887b58c63ac2b66c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2001301
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
86f73097
|
2020-01-10T16:19:02
|
|
Upstream support for iOS Simulator.
Originally authored in the WebKit repository:
https://bugs.webkit.org/show_bug.cgi?id=205618
Has been tested with WebKit's WebGL backend on top of ANGLE inside the
iOS Simulator. TODOs will be addressed in forthcoming CLs.
Bug: angleproject:4263
Change-Id: Ic879866aaee5f933599d956b0646d0c01db55d0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1995824
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
5eadaf85
|
2020-01-13T17:21:53
|
|
Fix and improve UWP build.
Reorganizes the build files to work with a more divided setup. It is
unclear if we'll ever be able to run tests in a UWP config. This at
least sets up the organization so it would at some point be possible.
Bug: angleproject:4182
Change-Id: I49dddfcdc0118b11466fe171f949c28d101ac6a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1953484
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
11c35d0e
|
2020-01-10T18:19:05
|
|
Fix uninitialized variable in driver bug workaround.
Bug: angleproject:4267
No-Try: True
Change-Id: I5d9846779e4ac27313ec57b6ded935dbb40e1970
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1995829
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
52cb2a1a
|
2020-01-07T14:06:25
|
|
Allow SamplerVideoWEBGL can sampler compatible texture type
For current WEBGL_video_image implementation, VideoImage texture type translates to its
native texture type in blink layer.
A refactory for this implementation is required but is complicated and need much time.
Currently, we need a workaround in ANGLE to support this extension.
Current end2end tests can monitor this workaround well.
BUG=chromium:776222, angleproject:3889
Change-Id: I864bc2734cfffc8c5aea6166466767e3fb31c1c7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1989864
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c4053a9e
|
2020-01-03T15:03:32
|
|
Vulkan: Reduce the frequency of driver uniform binds
Bind the driver uniforms set only when actually updating them.
Bug: angleproject:4261
Change-Id: Ie1f1ab61eef58c5e0c713d285050c79c4cfccb32
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986928
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
|
|
5e33e647
|
2020-01-09T14:20:09
|
|
Vulkan: Optimize getIndexRange
This function was unconditionally calling finishImpl(). This is changed
to finishToSerial() to only wait until the serial that actually used the
buffer.
Bug: angleproject:3072
Change-Id: Ida89bb119b4ba6420f12404b911af0e3b4583a51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993407
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6b275406
|
2020-01-09T11:14:47
|
|
Vulkan: Workaround vertex attributes vs stride issue on AMD
Under robustBufferAccess, Vulkan states that:
Vertex input attributes are considered out of bounds if the offset of
the attribute in the bound vertex buffer range plus the size of the
attribute is greater than either:
- vertexBufferRangeSize, if bindingStride == 0; or
- (vertexBufferRangeSize - (vertexBufferRangeSize % bindingStride))
The latter implies that if the buffer size is not a multiple of the
vertex attribute stride, what lies beyond the last multiple of stride is
considered out of bounds.
It also says:
Out-of-bounds buffer loads will return any of the following values:
- Values from anywhere within the memory range(s) bound to the buffer
(possibly including bytes of memory past the end of the buffer, up to
the end of the bound range).
- Zero values, or (0,0,0,x) vectors for vector reads where x is a valid
value represented in the type of the vector components and may be any
of ...
The first bullet point indicates that the driver is allowed to load the
attribute values from the buffer if its range still lies within the
buffer size.
Take the following example:
- Buffer size = 12
- Attribute stride = 8
- Attribute offset = 0
- Attribute size = 4
Basically the buffer is thus laid out as follows:
attr stride
_________/\_________
/ \
+----------+----------+----------+
| vertex 0 | padding | vertex 1 |
+----------+----------+----------+
\___ ____/
V
attr size
In the above example, the attribute for vertex 1 is considered out of
bounds, but the driver is allowed to either read it correctly, or return
(0, 0, 0, 1) for it.
Most drivers implement the former, while AMD implements the latter.
This change introduces a workaround for AMD where
GL_MAX_VERTEX_ATTRIB_STRIDE is limited to 2048 (the common value for it
according to gpuinfo.org) and conservatively rounds up every buffer
allocation to that size.
While technically, this workaround should be applied on any device with
the robustBufferAccess feature enabled, it is currently limited to AMD
to avoid the inefficiency. A possible future revision of Vulkan may
relax the above restrictions.
Bug: angleproject:2848
Change-Id: Ida5ae5d777da10f22ce8be5a09a7644b5bbd778e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1991709
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8fde1151
|
2020-01-09T14:22:35
|
|
Vulkan: fix default uniform descriptor rebind on program change
When the program binding changes, we set the descriptor sets binding
dirty bit if the program had any textures, UBOs, SSBOs, images or atomic
counters. The check for default uniforms was missing. So if the two
programs had no resources and were only using default uniforms, then
drawing with one after the other didn't update the descriptor set
binding of the default uniforms for the second draw.
Bug: angleproject:4277
Change-Id: I631a1619658ee713484cfaee99fe1e39987e16e7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993408
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
5aed7c74
|
2020-01-08T17:42:21
|
|
Narrow point size range clamping to affected versions
Bug: angleproject:2970
Change-Id: Ie14725b0cf30738d394320c24a72bc947135f5cf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1993204
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
23b8857b
|
2020-01-08T14:07:53
|
|
Fix RendererVk::getMaxSupportedESVersion() to truly downgrade max version
Added a small helper function (LimitVersionTo) to prevent future mistakes.
Bug: angleproject:4168
Change-Id: Ia19312459540adbc2788ad0a5cb3d19ef1ff784f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1992185
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
4ffc254e
|
2020-01-08T09:58:24
|
|
Only initialize the timestamp query pools if the extension is available.
Also added a few assertions to ensure that timestamp queries aren't attempted
when support is missing.
Bug: angleproject:4114
Change-Id: Ie6d7d5face59f9bc137aebd86c9d0e965773e6e6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1992184
Commit-Queue: Eric Binet <ericbinet@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f567bac0
|
2019-12-20T09:29:35
|
|
Vulkan: Add fallback for D32_UNORM for Swiftshader
Swiftshader does not have support for D24_S8 (typical fallback for
32bit DEPTH_COMPONENTS) but does have D32_FLOAT, so add fallback to
that format. This then allows ANGLE to support OES_depth_texture
extension when using Swiftshader which is needed to allow Vulkan
swiftshader to replace GL swiftshader.
Bug: angleproject:4232
Change-Id: Iaf04fcf0bea8d9cca0b9e7a18e3351ce8c704355
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986413
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
12ce8f68
|
2020-01-03T16:40:06
|
|
Upstream WebKit's iOS port of ANGLE.
Added the EAGL backend authored by Dean Jackson from Apple, and the
refactoring changes needed to support it side-by-side with the macOS
backend. Ran "git cl format" against these diffs.
Defined the EGL_ANGLE_device_eagl extension and allocated an enum out
of ANGLE's reserved range.
The iOS backend is not yet included in any of the GN files.
Bug: angleproject:4263
Change-Id: I631c32930433c03bb16a242955ffedf55174bb29
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1987278
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: James Darpinian <jdarpinian@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
7a37d3ac
|
2020-01-05T13:52:03
|
|
Work around Intel driver bug with CopyTex{Sub}Image2D/DeleteTextures.
Dependencies seem to be incorrectly tracked in some Intel OpenGL
drivers (on macOS specifically), causing crashes in glDeleteTextures
if a GL command buffer is being constructed where those textures are
destinations of CopyTexImage2D/CopyTexSubImage2D. Work around this bug
by flushing before texture deletion if CopyTex{Sub}Image have been
called recently. The tracking is only done on a per-context rather
than a per-device basis, but seems sufficient to work around the
problem as identified.
Tested both with new ANGLE test on affected hardware, and in WebKit's
ANGLE backend for WebGL. Works around the crash reported in
https://bugs.webkit.org/show_bug.cgi?id=205707 .
Bug: angleproject:4267
Change-Id: I2266a5590759f6a3f19080def08710ef4b66d463
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1987932
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
27db2458
|
2019-10-03T13:46:28
|
|
Optimize disabling ARB_texture_rectangle
In https://crrev.com/c/1838418 I added the ability to disable
ARB_texture_rectangle so that we can use it in the WebGL implementation
but disable it when compiling user shaders. Unfortunately disabling
and re-enabling the extension causes the shader translator to be
reinitialized which turns out to be more expensive than the actual
work of shader translation, at least for small shaders. It's slow enough
to cause timeouts in WebKit's WebGL conformance test runs.
This introduces an alternate method of disabling ARB_texture_rectangle
in the translator which is much faster because it avoids reinitializing
the translator.
Bug: angleproject:3956
Change-Id: I5d31b683ff19a59bdfd289cfd3c609f64ef5e25b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1991969
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
|
|
c431d596
|
2019-12-16T10:59:44
|
|
Add Serial to all GL resources.
The Serial will help track active resources for filtering out
inactive setup calls in capture/replay.
Bug: angleproject:4223
Change-Id: I64ba50f27d656c12d45155dc735e9b6f9c04528f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1969062
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c8d7f047
|
2020-01-07T10:06:07
|
|
Vulkan: Update number of samples when changing draw framebuffer
This fixes a crash (preceeded by Vulkan validation errors) when running
the following test:
--gtest_filter=dEQP.KHR_GLES31/core_texture_storage_multisample_FunctionalTests_blitting_multisampled_depth_attachment* --use-angle=vulkan
The problem is that GraphicsPipelineDesc::updateRasterizationSamples()
is rarely called (e.g. glBindFramebuffer). The above dEQP test changes
between draw attachments that do and don't have multisampling enabled.
The number of samples is set (the first time) to have multisampling
enabled, and never changed, even though other attachments don't have
multisampling.
FramebufferVk::syncState() now calls updateRasterizationSamples(). That
fix uncovered a latent problem: when an application destroys all
framebuffers (including the draw framebuffer), the ContextVk still
points at the old draw framebuffer's FramebufferVk (now freed). This
is fixed with new plubming to clean-up ContextVk::mDrawFramebuffer.
Bug: angleproject:4240
Change-Id: I151ec40ab821efc07c26323c34275c9165ad2ed5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1983393
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
2c63b83c
|
2020-01-03T15:44:30
|
|
Vulkan:Enable DebugUtils extension for Android
Enable DebugUtils Vulkan extension for Android.
This rolls VK Validation Layer dep forward to include a fix that
allows this extension to work correctly with Android loader.
Here's the Validation layer fix:
https://github.com/KhronosGroup/Vulkan-ValidationLayers/pull/1464
Bug: angleproject:3852
Change-Id: I74c55c0a66a7ee4db3b623221c8fb6c4433a39af
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1985175
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
806d812e
|
2020-01-03T13:48:30
|
|
Vulkan: Reorder descriptor sets
This change moves driver uniforms to a set with a lower id than the one
that includes (emulation) transform feedback buffers. Imagine the
following:
- Program 1 with xfb: UniformsSet: 1 VS uniforms buffer, 1 FS uniforms
buffer, 1 xfb buffer
- Program 2 without xfb: UniformsSet: 1 VS uniforms bufer, 1 FS uniforms
buffer.
Previously, UniformsSet was index 0, and DriverUniformsSet was index 3.
When switching from Program 1 to Program 2, the layout of UniformsSet
changes, which means every subsequent set needs to be rebound. This is
a Vulkan pipeline layout compatibility rule. This is done with
invalidateCurrentTextures() and invalidateCurrentShaderResources()
already when handling gl::State::DIRTY_BIT_PROGRAM_EXECUTABLE. The bug
is that the driver uniforms are not invalidated.
This is normally not an issue, because usually when switching from
Program 1 to Program 2, transform feedback is paused, and this state
change does invalidate driver uniforms. However, the following scenario
doesn't do this:
- Begin Xfb
- Pause Xfb
- Use Program 1
- Draw
- Use Program 2
- Draw
- End Xfb
There is no driver state change between the two draw calls, which means
the second draw will attempt to draw using the driver uniforms bound for
the first draw call. There is a Vulkan validation error here due to the
above pipeline layout validation rule.
The issue manifests itself only when the second draw call actually uses
driver uniforms, as otherwise that set is inactive and not validated;
i.e. when line raster emulation is used.
In summary, the validation error manifests itself when:
- Transform feedback and line raster both use emulation
- Transform feedback is paused
- A draw with an xfb program is followed by a non-xfb program
- The second draw is a line draw
A test is added for this.
The solution is to reorder the sets so that DriverUniformsSet is placed
before UniformsSet. This way, changes to the layout of UniformsSet
don't invalidate DriverUniformsSet.
In fact, based on the above, any change in the layout of the program
should have required an invalidation of the driver uniforms. This bug
is probably masked by the fact that
ContextVk::handleDirtyDescriptorSetsImpl() always rebinds the graphics
driver every time any descriptor set needs rebinding. That should be
removed in a follow up change.
Bug: angleproject:4261
Change-Id: I21ad4152b454a1fe70554be02e18a9c94fb3e7a8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986927
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8c0bbfbb
|
2019-11-25T14:48:11
|
|
EGL: Implement EGL_ANDROID_framebuffer_target
Add attribute to configs.
Add attribute matching logic.
Does not set attribute in Vulkan configs, need solution to
query Android for which formats are valid. anglebug.com/4208
New end2end test.
Bug: angleproject:3961
Test: angle_end2end_tests --gtest_filter=EGLAndroidFramebufferTargetTest*
Change-Id: I7e14c47b39e9539f6181c3c1d75c76fe63ca0f8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1960508
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
0721cc8b
|
2020-01-03T23:26:08
|
|
Vulkan: No line raster emulation code if extension
A flag is added to the translator to disable generation of Bresenham
line raster emulation code when the Bresenham line raster Vulkan
extension is present. This is primarily for the sake of conversion of
line raster emulation condition to specialization constant:
- Avoid dead SPIR-V code in every shader
- Avoid ANGLEUniforms being active in every shader stage even if it's
not used anywhere but in line raster emulation.
- Optimize SPIR-V transformations by both having fewer instructions to
iterate through, and to avoid generating line raster patches.
- Reduce the severity of anglebug.com/4251 where the location assignment
of ANGLEPosition can incorrectly overlap a varying array or struct, by
making only platforms without Bresenham extension afflicted by the
bug.
Bug: angleproject:3394
Change-Id: Ic0ae6ce0392b4eae0cc79cb94bbcd0805b276a31
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986379
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f8ae5dc6
|
2019-12-20T16:32:09
|
|
GL: Enable EXT_gpu_shader5
Bug: angleproject:3569
Change-Id: I08666bde75ac158e051817e689e2c0b82d6b6f70
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1978579
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d36780ba
|
2020-01-02T12:28:26
|
|
Fix UWP build
Bug: angleproject:4246
Change-Id: Ifcbb6fe51ee2df6baf86a308de74bab640ded834
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1982632
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
56fd2bce
|
2019-12-17T10:00:55
|
|
Fix GGP build
Bug: angleproject:4246
Change-Id: I80906196ebc3c904e75516e8c53b05dd81c5fa5c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1982633
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>
|
|
3311ef65
|
2020-01-03T11:52:15
|
|
update date comments to 2020
run_code_generation.py updated comments with 2019 to 2020.
Put all date updates into this one CL.
This also updated hashes.
Bug: angleproject:4262
Change-Id: Ia213dd5e47f155986cbb4161d777724355878af0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1986994
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
81ee4d29
|
2019-12-04T17:05:11
|
|
Workaround EXT_texture_norm16 for OpenGL ES drivers
Implement a workaround for widespread bugs calling glReadPixels with
RGBA/UNSIGNED_SHORT against R16/RG16 color attachments. Read back the
data using the GL_IMPLEMENTATION_COLOR_READ_FORMAT, and then rearrange
the read back pixels to fit the RGBA layout.
Also skip RGB16/RGB16_SNORM texture sample test on Nexus 5X/Nexus 6P
due to a another driver bug.
Bug: chromium:1000354, angleproject:4214, angleproject:4215, angleproject:4245
Change-Id: Iedea6f4136878cac5ad0dec3757c77b73502e1cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1952166
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
93061d4e
|
2019-12-30T23:45:08
|
|
Vulkan: Support vertex-only line emulation draw with xfb
The code that patches the line raster emulation directive assumed both
vertex and fragment shaders would be present. This is invalid if only a
vertex shader is present.
This change adds the directive to any stage that's available. This
includes the possibility of a missing vertex shader also, which can be
useful for separable shaders and program pipeline objects.
Bug: angleproject:3394
Change-Id: I84555db81b59c318300003f7108a01f330e4259f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1982782
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
35e6050f
|
2019-12-30T23:47:51
|
|
Vulkan: Correct error message for VK_ERROR_INVALID_SHADER_NV
If an invalid shader is generated, generate the appropriate message
instead of "Unknown error".
Bug: angleproject:3394
Change-Id: I586c99e95cd72daeaf74b4d1eff352942e01d8b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1982783
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1fdf6ca5
|
2019-12-31T14:25:35
|
|
D3D11: Restrict to translate uniform block to StructuredBuffer
Only translate uniform block to StructuredBuffer when system is
Windows 10 and later.
Bug: angleproject:3682
Change-Id: I27e3f4503392791883a44e1d486ffe9512e04bd8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1984863
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
942d9152
|
2019-12-23T15:31:52
|
|
EGL: Add support for EGL_KHR_gl_colorspace extension
If the Vulkan backend supports VK_EXT_swapchain_colorspace extension,
enable the option for applications to create surfaces with non-linear
formats. Not all formats have non-linear versions and is platform
specific.
Tests: dEQP-EGL.functional.wide_color.*
angle_deqp_egl_tests --use-angle=vulkan --deqp-gl-context-type=egl --deqp-case=dEQP-EGL.functional.wide_color.*
Bug: angleproject:2514
Change-Id: I441ee797cceef92c84473bfa18605c4fd8180de1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1951963
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@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>
|
|
7fad424e
|
2019-12-30T00:07:09
|
|
Avoid vector copy in BinaryOutputStream::writeIntVector
Also adds a unit test to make sure readIntVector and writeIntVector
match. It was not immediately clear that writing the vector size in
writeIntVector is writing an int instead of a size_t.
Bug: angleproject:3394
Change-Id: I09a003c169dbc47e40c0cd3e4da6f1d7a905c6da
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1983162
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
52dae168
|
2019-12-19T12:03:30
|
|
Vulkan : Fix maxVertexOutputComponents
GL_MAX_VERTEX_OUTPUT_COMPONENTS should mirror Vulkan's
reported maxVertexOutputComponents; this shouldn't include
any gl_Position adjustments. It was previously set as
maxVaryingVectors * 4.
The workaround for AMD that reserved an extra varying
due to driver instability is no longer required (see:
https://chromium-review.googlesource.com/c/angle/angle/+/1980272)
Bug: angleproject:4233
Change-Id: I8d7b8eafa7edd4c56005dad039fe69e072692fca
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1975851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
67d8b63a
|
2019-12-23T11:35:52
|
|
Vulkan:Update Vulkan Vertex Attribute Offsets
This fixes most of the test for
dEQP 3.1 KHR-GLES31.core.vertex_attrib_binding.basic-input*
The bug fixes is that we were not correctly setting the vertex attribute
offset for vertex attribs that were converted into their own buffer.
We kept the attrib offset from the frontend as if the converted attribs
were in the original buffer, but converted vtx attrib buffers in the VK
backend are tightly packed from the start of the buffer so when converting
the actual offset should be 0.
Also, in order to avoid a VK validation error, this change includes a tmp
workaround to make sure transform feedback output buffer range is never 0,
but sets VK_WHOLE_SIZE in that case. A follow-on fix that focuses on
transform feedback fixes will address this validation error more fully.
Bug: angleproject:4145
Bug: angleproject:4236
Change-Id: I8c218954725945414a8f18beb4f964b90da7062a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1980906
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e2fc92ca
|
2019-12-23T14:21:28
|
|
Vulkan: Fix swiftshader device selection
A recent SwS roll changed the deviceName of swiftshader to include the
backend (LLVM for example). That made ANGLE no longer recognize
SwiftShader. This change looks for the known SwS device name as a
prefix of the deviceName retrieved from the device, rather than a
complete match.
Bug: angleproject:3876
Change-Id: If6dacb1e5685493d5334cad2015439f0f6b71124
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1980275
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
07d3bcf1
|
2019-12-20T11:23:26
|
|
Correct calculation of GL_MAX_VARYING_COMPONENTS
GL_MAX_VARYING_COMPONENTS does not equal maxVertexOutputComponents.
The minimum supported limit for GL_MAX_VARYING_COMPONENTS is 60,
whereas the minimum for maxVertexOutputComponents is 64.
On devices that have the minimum limits the existing code will
report a limit for GL_MAX_VARYING_COMPONENTS that is too large
(64 vs 60). Report instead as (GL_MAX_VARYING_VECTORS * 4).
Bug: angleproject:4233
Change-Id: I920a32cf21040ff5b64746fcf3489db740028d48
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1978638
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0af8b596
|
2019-09-03T16:24:45
|
|
D3D11: Translate uniform blocks to StructuredBuffer when necessary
fxc exhibits slow compile performance with dynamic cbuffer indexing.
So when a uniform block contains only one large array member, which is
an array of structures, translate this uniform block to
a StructuredBuffer instead.
Bug: angleproject:3682
TEST=angle_end2end_tests.UniformBufferTest.*
Change-Id: Ife80dba8aae65b761737e095895e00a570230f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1782046
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
abc8f277
|
2019-12-19T10:47:31
|
|
Vulkan: Disallow multisampling with a sample count of 1
GLES uses a sample count of 0 to indicate non-multisampling, and a
sample count of 1 or greater to indicate multisampling. While the
Vulkan specification seems to support multisampling with a sample count
of 1, the following spec language effectively disallows it (even when
the underlying Vulkan driver supports it):
If the image was created with VkImageCreateInfo::samples equal to
VK_SAMPLE_COUNT_1_BIT, the instruction must have MS = 0.
The following GLES 3.1 dEQP tests use shaders that look for the sample
position, with a sample count of 1:
dEQP-GLES31.functional.texture.multisample.samples_1.*
For Vulkan drivers that fully support multisampling with a sample count
of 1, these tests pass, but get Vulkan validation errors because of the
above spec language.
This was discussed in the Khronos-private issue tracker (see:
https://gitlab.khronos.org/vulkan/vulkan/issues/1925). The Vulkan
working group wondered if ANGLE could live with not supporting a sample
count of 1 (but upgrading such requests to the next-largest supported
sample count, per the GLES specification). This change implements that
approach.
Bug: angleproject:4197
Bug: angleproject:4212
Change-Id: I009ba47b48efe5af464011c7c15022fc01f45e76
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1974842
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
816132a3
|
2019-12-17T15:47:09
|
|
Do not send attribute data for built-ins
Built-ins (e.g. gl_VertexID or gl_InstanceID) were settings dirty bits
in the driver's ActiveAttribLocationsMask which would later cause
the Vulkan back-end to issue bind commands on these built-in attributes
that don't have / need anything bound.
Test:
angle_deqp_khr_gles31_tests --use-angle=swiftshader --gtest_filter=dEQP.KHR_GLES31/core_shader_storage_buffer_object_advancedswitchBuffersvs
Bug: angleproject:4107
Change-Id: Id1f1c6699d512d0726b22d9bb0c16abad179950d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972200
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@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>
|
|
7b55aac3
|
2019-12-12T10:14:10
|
|
Add Broadcom as a known vendor
Broadcom's vendor ID wasn't listed anywhere.
Fixed the sort order of vendor names in a number
of places also.
Bug: angleproject:4218
Change-Id: Iddc504fa35833ac14375cb77e7a2b1cc405f0e80
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972714
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd129d17
|
2019-12-16T15:08:11
|
|
Reset binding offset & size when unbinding
Bug: angleproject:4147
Change-Id: I4ace1221d32631cdb14a95c71ee9a1617837a5ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1970495
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
17b3c2f3
|
2019-10-14T14:13:59
|
|
Implement SamplerVideoWEBGL for WEBGL_video_texture extension on desktop
WEBGL_video_texture is an extension that will improve uploading video frame to WebGL performance.
(https://www.khronos.org/registry/webgl/extensions/proposals/WEBGL_video_texture/)
This extension introduced a new texture type TEXTURE_VIDEO_IMAGE_WEBGL and a new sampler type
samplerVideoWEBGL to sample it.
In chromium implementation, TEXTURE_VIDEO_IMAGE_WEBGL maps to different native texture type
based on platform. On desktop, it maps to GL_TEXTURE2D(Currently supported). On Android, it
should map to GL_TEXTURE_EXTERNAL(TODO). SamplerVideoWEBGL needs to be mapped to sampler2D or
samplerExternalOES according to TEXTURE_VIDEO_IMAGE_WEBGL implementation.
This patch implements samplerVideoWEBGL in Angle to support WEBGL_video_texture on desktop. In
this case, samplerVideoWEBGL should map to sampler2D.
Bug: chromium:776222, angleproject:3889
Change-Id: Idb0a5fcde37ca75ccc1181226b91f257212e7500
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1866274
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d205ee3a
|
2019-12-16T10:59:43
|
|
Pass GLImplFactory to Query constructor.
This makes the code more consistent and allows for the Query
constructor to generate a Serial.
Bug: angleproject:4223
Change-Id: I6cc683b11ed364f13d303f97aa0984e63260953e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1969061
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
545c6142
|
2019-12-17T13:53:28
|
|
Vulkan:Lazily link libvulkan
Move libvulkan to a data_dep as we no longer statically
link it.
Bug: angleproject:4225
Change-Id: I96458d4727d2d47d8c259ec51d91fd852067c059
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1972192
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d50151d3
|
2019-12-17T13:57:12
|
|
Move Serial utils to their own file.
This will let the front-end access them without pulling in the rest
of renderer_utils. The Serial class in particular will be useful for
capture/replay.
Also adds a very minimal unit test.
Bug: angleproject:4223
Change-Id: I9e63b8a8227a245b20a8f024b960fcf60c7840db
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954611
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
e60d05b2
|
2019-12-17T13:59:24
|
|
Make Sync constructors take GLImplFactory.
Makes them consistent with the rest of the code. Will allow
the Sync class to call methods in GLImplFactory to generate
a resource Serial.
Also updates the unit test to the new design.
Bug: angleproject:4223
Change-Id: Ic5ba69c3a6a51d4b51d876c3b5e7eb7bc44a9ae8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1969060
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
44722daa
|
2019-12-06T22:31:08
|
|
Vulkan: Enable inactive SSBO with unsized array tests
The change introduced in
https://chromium-review.googlesource.com/c/angle/angle/+/1951523
removes inactive shader interface declarations. That automatically
resolves an issue where glslang wrapper doesn't handle inactive SSBO
declarations with unsized arrays, by removing those declarations at
translation time altogether.
Bug: angleproject:3714
Change-Id: I710d59546d716bfb5bc0112b5152fed20a810a52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954615
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7e19e25e
|
2019-12-16T10:59:42
|
|
Vulkan: Fix SwiftShader disabled build.
Disabling SwiftShader in the GN build led to a compile error
when trying to use ANGLE_VK_SWIFTSHADER_ICD_JSON.
Bug: angleproject:4223
Change-Id: I076a88e6bc58adf1e34bbb7286b1f46028cd021a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1969059
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
d674e1e5
|
2019-12-12T14:47:24
|
|
Vulkan: EXT_gpu_shader5: non-const offset in textureGatherOffset
This change includes preparatory work for textureGatherOffsets as well,
though that requires special handling which is addressed in a follow-up
change. This special handling is due to the fact that this family of
functions is the only built-in with an array parameter, and our built-in
table generation doesn't handle it correctly.
Bug: angleproject:3569
Change-Id: Ic1c8dd03878a184be00f578ab9fc42af8f6e47ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965435
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5cfab195
|
2019-10-28T09:12:53
|
|
Vulkan: Add test that logs supported texture formats
Add a whitebox test to log all supported GLES formats
for the active Vulkan ICD. The test object is
dependent on libANGLE's gl_enum_util.* files as
we need it to print out human readable values in
the PrintAllFormatSupport test.
Test: angle_white_box_tests --gtest_filter=*PrintAllSupportedFormats*
Bug: angleproject:4093
Change-Id: I99d74935b705b2984f6320ed80a0e977c8fcd4be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1930607
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
390c4952
|
2019-12-10T19:30:15
|
|
Adds missing extensions to registry_xml.py
Bug: angleproject:4093
Change-Id: I979b54e12c1e897ccfa116f332bf9146dcd00cae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965644
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
ce41a43c
|
2019-12-16T09:49:05
|
|
Vulkan: Fix failed assert when unbinding texture
We were hitting onImageStateChange with no texture active and hitting
the assert in that function for needing a texture.
There are times when we call onImageStateChange where there is no
texture bound, early exit in those cases.
Test:
angle_deqp_khr_gles31_tests --user-angle=swiftshader --gtest_filter=dEQP.KHR_GLES31/core_layout_binding_image2D_layout_binding_imageLoad_*
also:
--gtest_filter=dEQP.KHR_GLES31/core_layout_binding_atomic_uint_layout_binding_atomic_ComputeShader
--gtest_filter=dEQP.KHR_GLES31/core_layout_binding_buffer_layout_binding_atomicAdd_ComputeShader
--gtest_filter=dEQP.KHR_GLES31/core_layout_binding_block_layout_binding_block_ComputeShader
--gtest_filter=dEQP.KHR_GLES31/core_layout_binding_sampler2D_layout_binding_texture_ComputeShader
Bug: angleproject:4124
Change-Id: I027cf4ecb6a5d6aea874c306bf3e67b95a75af62
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965027
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5fd73782
|
2019-08-09T11:46:46
|
|
Vulkan: Use volk to load vk* func ptrs
Thanks to Jamie Madill for some fixes to get all CI test passing w/ volk.
This change updates all ANGLE targets that use Vulkan to dyanmically
link all of the VK entrypoints using the volk OSS library from
https://github.com/zeux/volk.
It's only two source files so baking them directly into ANGLE repo.
Also it's used in both the tests and libANGLE trees so added to
src/common/third_party/volk dir.
Updated volk and the renderer to track latest instance and device
that were loaded and renderer will refresh vk* function pointers if
the current and previous device and/or instance don't match. This
prevents errors in the test framework as we transition between
backends, especially between VK HW & SwiftShader ICDs.
This change rolls the Vulkan Loader forward to use the latest loader
version which no longer allows static linking but requires dynamic
linking.
Bug: angleproject:3740
Bug: angleproject:4092
Bug: angleproject:4162
Bug: angleproject:4210
Bug: angleproject:4225
Change-Id: I8a0b7d24c9545bbfdfaa4b9357a9bfe6793e0140
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965640
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2eeb980e
|
2019-12-10T12:58:13
|
|
Added enums to InternalFormat and PixelType groups in gl.xml
Bug: angleproject:4093
Change-Id: Ib69f0553f79d0e5dfbcc9165ad71a42be3e6d55d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1965643
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
06cbb283
|
2019-12-11T14:46:59
|
|
Validate uniform location size, fix unlink cleanup
Also cleanup shader storage blocks.
Test: angle_deqp_khr_gles31_tests --use-angle=swiftshader --gtest_filter=dEQP.KHR_GLES31/core_explicit_uniform_location_uniform*
Bug: angleproject:4132
Bug: angleproject:4217
Change-Id: Ie0375ab9226f3f49cb0c0d208ac08f99d98dad8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1963139
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@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>
|
|
92ba377f
|
2019-12-10T23:48:35
|
|
Vulkan: remove unnecessary transition of external images
Since semaphore has been supported, the code for changing
external texture layout and queue family is not necessary
anymore. So remove them.
Bug: angleproject:3289
Change-Id: I5470fa4bf7db7ee4c68f157674cf907a8e455d75
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1964655
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
|
|
8b74bdc2
|
2019-12-10T23:15:57
|
|
Vulkan: Refactor glslang wrapper's varying location assignment
Instead of multiple ifs that test for various combination of shader
stages and calling AssignVaryingLocations for the appropriate pairs,
that function loops over all stages and assigns a location to the
varying in any stage it is active.
This change will help keep this code simpler with the introduction of
tessellation shaders.
Bug: angleproject:3571
Change-Id: Iaf3ee67990bd219080314237b314bd2770a43085
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961096
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b8e056dd
|
2019-12-11T15:02:43
|
|
Vulkan: Have the translator output in/out qualifiers
Currently, when assigning varying locations, we assign in/out qualifiers
based on whether the varying name is present between different shader
stages.
This is broken for separate shader objects as there is possibly no pair
of shaders to be able to tell which is input and which is output (by
trying to find the same varying in a stage before or after the shader).
Bug: angleproject:3571
Change-Id: Id928a3eaa16e917c81bae0b3414c41842eb2b664
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1961993
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
bf47a17e
|
2019-12-13T01:40:33
|
|
Fix GGP build
Bug: angleproject:4221
Change-Id: I625b78795dbc826d176660e47af9b51d3f8d417b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1966410
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1d77542f
|
2019-12-03T15:54:41
|
|
Add flag to label captures
Add an optional parameter (ANGLE_CAPTURE_LABEL) to
ANGLE frame capture that tags files and functions
uniquely, allowing multiple frame captures to be
replayed by a test harness.
Example:
ANGLE_CAPTURE_LABEL=foo
Results in filenames like this:
foo_capture_context1.cpp
foo_capture_context1.h
foo_capture_context1_files.txt
foo_capture_context1_frame000.angledata
foo_capture_context1_frame000.cpp
foo_capture_context1_frame001.angledata
foo_capture_context1_frame001.cpp
...
Functions wrapped in namespaces like this:
namespace foo
{
void ReplayContext1Frame0();
void ReplayContext1Frame1();
}
For use like this:
foo::SetupContext1Replay();
for (...)
{
foo::ReplayContext1Frame(i);
}
Bug: angleproject:3630
Change-Id: Ibe27dc4d40a36606ee40678a9e4d43b5a4baf976
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1949603
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6381d7f1
|
2019-12-10T23:19:23
|
|
Vulkan: Avoid linear search in shader on varying location assignment
Glslang wrapper was trying to identify whether the varying is declared
in each of the out/in shaders by looping through the macro symbols that
need replacement.
This change instead adds stage information to PackedVarying assigned
when collecting varyings. Glslang wrapper then simply tests the
bitfield for the stages of interest.
Bug: angleproject:3571
Change-Id: I29614e3e62d7df88e413c1732ac04e24243f167a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954677
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
49135f68
|
2019-12-10T11:27:09
|
|
Vulkan: Fix descriptor pool init in presence of atomic counters
The descriptor pool was initialized with the number of atomic counter
buffers, but we always use 8 storage buffers for atomic counter buffer
emulation regardless of how many atomic counter buffers there.
This change fixes the descriptor pool initialization by requesting 8
storage buffer descriptors if there are any atomic counter buffers.
Bug: angleproject:4199
Change-Id: Ide58c013cba8ac46228dba795a82304b97ee83ac
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1959489
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
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>
|
|
3eaf6294
|
2019-11-25T18:08:18
|
|
Vulkan: Add options to select more device types
Add support to set a default device type
using existing ANGLE_DEFAULT_PLATFORM
environment variable. The valid vulkan options
are as follows:
vulkan - vulkan with device hardware
vulkan-null - vulkan with null device (Mock ICD)
swiftshader - vulkan with swiftshader
Bug: angleproject:3998
Change-Id: I15f00e8024818fbaf674ca6fcdbcdac5a90cace2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1956140
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
27c89d2b
|
2019-11-25T10:22:01
|
|
Vulkan: fix BufferVk::map() synchronization
4398b2b6a2ac13034dff249d8c049c4047b5fed2 made finishToSerial() in
BufferVk::map() conditional to whether the serial is in use to work
around a performance regression. Notes:
- Prior to 087f1384f233792921d34c0ca5b5a90fac75b070, finishToSerial
already did that, but that check was inadvertently removed.
- finishToSerial waits for the smallest serial that's bigger than or
equal to the requested serial.
- The flush() call in BufferVk::map() was conditional to whether the
serial is in use, but it really meant to check whether the buffer has
pending commands in the graph.
The end result is that there was an unnecessary flush in BufferVk::map()
if we had to wait for a previous serial to finish.
This change makes the flush conditional to whether the buffer has
pending commands in the graph, and the finishToSerial call to whether
the serial is not yet finished.
Bug: angleproject:3994
Change-Id: Idca436ef2439bcc8c59396a07b2591c1dfadd669
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1932341
Reviewed-by: Brandon Schade <b.schade@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c6458072
|
2019-12-05T11:45:10
|
|
Fix multisample renderbuffer compliance (e.g. 3->4 samples)
This change ensures that the following spec language is correctly
implemented:
the resulting value for RENDERBUFFER_SAMPLES is guaranteed to be
greater than or equal to samples and no more than the next larger
sample count supported by the implementation.
For example, if 2, 4, and 8 samples are supported, and if 5 samples are
requested, ANGLE should use 8 samples, and return 8 when
GL_RENDERBUFFER_SAMPLES is queried.
Note: There is a known problem with NVIDIA OpenGL driver that causes
another test to be expected to fail.
Bug: angleproject:2222
Bug: angleproject:4196
Change-Id: I28921badf9568427799b0af347198b5df06c2aaa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1954444
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Ian Elliott <ianelliott@google.com>
|
|
63c15519
|
2019-12-05T12:59:13
|
|
Also use GL_RENDERER to determine vendorID
~10% or more Linux users* do not have AMD/ATI in the GL_VENDOR,
only in GL_RENDERER. Our heuristics only checked GL_VENDOR, so
this CL adds GL_RENDERER to the string being checked to find the
vendor ID.
(*According to https://feedback.wildfiregames.com/report/opengl/feature/GL_VENDOR)
Bug: angleproject:4204
Change-Id: Ie89080b4431fdf02a4ca09709973ea3f271a3e84
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1953486
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
11e6944e
|
2019-12-05T13:12:10
|
|
Linux AMD crash when src blit region outside framebuffer
Linux AMD has a crash on an assert in the mesa driver that the source rectangle
for blitFramebuffer be inside the framebuffer. Add Linux AMD to the existing
workaround for this case.
Note: this will duplicate some work on Linux AMD if the blit call is outside
the framebuffer and also very large (the adjustSrcDstRegionBlitFramebuffer
workaround)
Bug: 1014370
Change-Id: I1afd1c92ab07dba6814d6b87ff7c3c19a19bdc0e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1953487
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4576f1d0
|
2019-12-05T10:10:48
|
|
Vulkan: Implement multisample textures
This functionality is exercised by running angle_deqp_gles31_tests with the
following sets of command arguments:
--gtest_filter=dEQP.GLES31/functional_texture_multisample* --use-angle=vulkan
--gtest_filter=dEQP.GLES31/functional_state_query_texture_level_texture_2d_multisample* --use-angle=vulkan
--gtest_filter=dEQP.GLES31/functional_state_query_texture_texture_2d_multisample_texture_immutable* --use-angle=vulkan
The following are some high-level design notes:
- Texture::setStorageMultisample() handles converting the "requested number of
samples" to the actual number of samples used (e.g. converting 3 to 4),
supported by the underlying back-end). The actual number used is stored in
gl::TextureState::mImageDescs, for use by other GLES commands.
- ANGLE uses the Vulkan standard sample locations/positions. If the underlying
Vulkan driver's VkPhysicalDeviceLimits::standardSampleLocations is false,
ANGLE limits itself to GLES 2.0 (i.e. before GLES 3.0 which adds multisample
renderbuffers).
- The Vulkan specification currently doesn't support ANGLE providing support
for GLES 1-sample textures, because of the following Vulkan specification
statement:
- If the image was created with VkImageCreateInfo::samples equal to
VK_SAMPLE_COUNT_1_BIT, the instruction must: have MS = 0.
- At least one Vulkan driver returns different
VkPhysicalDeviceLimits::*SampleCounts for different formats. Because of
this, ANGLE does a logical-AND of all values in order to only support the
commonly-available numbers of samples.
The detailed design document is located at:
https://docs.google.com/document/d/1NiM8gAR74iGGXGTE6IP1ChdDUZjhtXRuJdtEp_wGFEM/edit?usp=sharing
Bug: angleproject:3565
Bug: angleproject:4103
Bug: angleproject:4104
Bug: angleproject:4196
Bug: angleproject:4197
Bug: angleproject:4198
Change-Id: I28921badf9568427799b0af347198b5df06c2db0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1919982
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
d68bf3e2
|
2019-12-04T12:30:56
|
|
Fix image/sampler uniform range in presence of atomic counters
The change that introduced images to the front-end placed them at the
end of the uniforms list, so the loop that was calculating the image
range was starting from the end of that list.
The change that introduced atomic counters to the front-end placed them
at the end of the uniforms list too, but the image range loop was not
adjusted to take this fact into account (neither was the sampler range
loop for that matter).
If a shader used both images and atomic counter buffers, the image range
was calculated as empty. Similar issues would arise if the shader used
both samplers and atomic counters.
A test is added where a shader has a default uniform, a UBO, an SSBO, an
image and an atomic counter, to make sure any combination of these
resources doesn't result in a bug.
Bug: angleproject:4190
Change-Id: I7818ee5258dd964215a18acfd7c3d6515b61c595
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1950655
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
795a3559
|
2019-12-03T11:31:18
|
|
Vulkan: EXT_gpu_shader5 support: precise
The precise keyword is used in tessellation shaders but introduced in
this extension.
EXT_gpu_shader5 introduces a handful of features to shaders. This
change only implements the `precise` keyword.
Bug: angleproject:3569
Change-Id: I2252b79098eb8ba2d2faa040d7eaed7548b7051e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1939851
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5f857839
|
2019-12-04T15:30:50
|
|
Improve current multisampled renderbuffer/texture support
This is split off from a change to implement multisampled textures for
the Vulkan back-end, and will come before that change. The changes
include:
- Make a common utility rx::GetSamplePosition() function. D3D11 and
Vulkan use the same standard sample positions/locations for 1, 2, 4,
8, and 16 samples. The D3D11 back-end has a utility function for
this, which is being moved to a common location--for use by both the
D3D11 and Vulkan back-ends.
- Texture::setStorageMultisample() handles converting the "requested number of
samples" to the actual number of samples used (e.g. converting 3 to 4),
supported by the underlying back-end). The actual number used is stored in
gl::TextureState::mImageDescs, for use by other GLES commands.
- Change some end2end tests to not make assumptions about the supported number
of samples, but to properly query what is supported.
Bug: angleproject:3565
Bug: angleproject:4196
Change-Id: I1dc12fedd0f8fb4975f90d87486e443b069b7141
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948535
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
fab10c23
|
2019-12-04T11:34:42
|
|
Vulkan: Optimize unused uniform cleanup in glslang wrapper
Bug: angleproject:3803
Change-Id: Ib260c86c68e5b11deaec8658cd9768af9b44e086
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1949629
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
61c6aecc
|
2019-11-28T14:30:18
|
|
Vulkan: Fold read access into write flags on buffer writes
This could lead to a subtle bug:
Say we use a buffer as a storage buffer and write to it. We then must
issue a memory barrier before using it as a uniform buffer. However we
would set the SHADER_READ bit as a read mask on a storage buffer
access. This seems like it could lead to a missing barrier.
Bug: angleproject:4178
Change-Id: I486002739b7fb000ffacc0a1e996784b7875e7ba
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1943034
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
a654d351
|
2019-12-02T18:12:24
|
|
Turn on fboRenderMipmap for D3D11
Bug: 1023747
Change-Id: I8ca320432aad663e2a6d70f494692df518376258
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947710
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
33a00efd
|
2019-11-27T09:21:45
|
|
Add Compute Shared Memory Size Validation
Add tracking of shared memory declarations in compute shaders.
Test:
angle_deqp_gles31_tests --gtest_filter=dEQP.GLES31/functional_debug_negative_coverage_callbacks_compute_exceed_shared_memory_size_limit
Bug: 4173
Change-Id: If2a86d467a82f73fa5b2ee0ced752701acfe1872
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934653
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5f3456e3
|
2019-12-03T14:16:19
|
|
Expose GL_ARB_sync for GL
BUG=chromium:1028799
R=jonahr
CC=vasilyt
Change-Id: Id17c4061b206953b1e904bf7938cb371612e33fd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1948534
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
62a93045
|
2019-12-02T15:19:15
|
|
Vulkan: Fix WaW same-layout image transitions
These transitions were incorrectly handled by an execution barrier
alone, but that's not per spec. Write-after-write hazards always need a
memory barrier.
Bug: angleproject:3347
Bug: angleproject:3554
Change-Id: Id2d2579888e0b59e589fcdd52416363f2cf5cf97
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1943546
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
f0f46772
|
2019-12-03T10:21:58
|
|
D3D9: Log the exact error code generated by D3D9 device creation.
BUG=1029091
Change-Id: I552627dd18d0d5b48c02bff12c9368c724a65f54
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1947448
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e4ac2ff3
|
2019-11-28T16:30:15
|
|
GL: Make GL_EXT_texture_format_BGRA8888 enableable.
Disable returning BGRA as an implementation read format unless
GL_EXT_texture_format_BGRA8888 is exposed. WebGL doesn't support this extension
and returning BGRA as an implementation read format is invalid.
TEST=functional/gles3/negativebufferapi.html
TEST=functional/gles3/integerstatequery.html
BUG=angleproject:4179
Change-Id: I313721f09da0e455128b88b129bd34338d47af73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1943407
Reviewed-by: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|