|
96c26c68
|
2020-04-03T07:52:52
|
|
Add support for NV_shader_noperspective_interpolation
Added support for GL_NV_shader_noperspective_interpolation on
the Vulkan and Desktop OpenGL backends
Bug: angleproject:4388
Test: angle_end2end_tests --gtest_filter=ShaderInterpTest.NoPerspective/*
Change-Id: I12473830c0ea8b4fffeae9c4a8ec92d979c8e18c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107234
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e259e7e3
|
2020-04-02T17:33:17
|
|
Pass layer count to robust 2D array texure init.
The Vulkan back-end needs the layer count to correctly initialize the
whole range of the mip level. Otherwise we were only clearing a single
layer of the 2D array. This only popped up when the code started to be
lazier about robust resource init.
Bug: angleproject:4517
Change-Id: Id5007c877d413dc80d54d9800a5898e130593451
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134412
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
390ef299
|
2020-03-25T14:10:38
|
|
Enable blob cache when debugging
We've had several issues with shader caches which are only implemented
on Android which makes them challenging to debug.
The existing BlobCache object has a default implementation that is
disabled by default. When debug layers are enabled resize the default
cache so that it gets used and provides behavior closer to Android.
This caching will be enabled when debug layers are enabled, e.g.
EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED_ANGLE attribute is true.
This is done for angle_end2end_tests and deqp tests.
Reland after bugfix angleproject:4535
Bug: b:152292873
Bug: angleproject:4535
Change-Id: Icefa8c55e39985d653d8d8a8bc8c734210025b50
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134449
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
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>
|
|
dd00f16b
|
2020-04-02T14:04:44
|
|
Vulkan: Fix FBO cache when updating disabled attachments.
Fix this by consistently checking if the attachment is enabled when we
update the serials.
Also includes a regression test and more ASSERTs.
Bug: angleproject:4540
Change-Id: I154d23cad71f1674d893390f923f45c643a58925
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134409
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
1cc49bb2
|
2020-04-02T11:57:07
|
|
Squash State::mContext and State::mID.
These were both id values for the context. This CL consolidates to the
monotonically increasing ID since it is both safer and easier to debug.
Makes life easier when indexing feedback loops by context ID.
Bug: angleproject:4517
Change-Id: I28b40fed4e6e68ea72742f7defde5f8638f4cd47
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134408
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
dd29370c
|
2020-04-01T10:42:47
|
|
Include the fragment output locations in the program cache key.
If the user rebinds the output locations and relinks a program, the
wrong program may be loaded from the cache.
TEST=gl_tests: TranslatorVariants/EXTBlendFuncExtended*
BUG=angleproject:4535
Change-Id: If9a9c2ad935ea4d01c3fe4313810d221e9c9ce38
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131252
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
a053f340
|
2020-04-01T16:58:16
|
|
Vulkan: Use shader stage specific barrier
Followup fix for copy/paste error that ImageLayout::GeometryShaderReadOnly was using VK_PIPELINE_STAGE_VERTEX_SHADER_BIT
Bug: angleproject:4467
Change-Id: I5be7f800177c4f36a334f1cc75f876e271ca22b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2133089
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1e81dd4a
|
2020-04-01T17:46:58
|
|
Suppress failures after Win Intel driver upgrade.
Bug: angleproject:4533
Change-Id: I482c4caa79fb5fdc9cd4a068f7e7e05890121fa2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2130227
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4db77367
|
2020-03-03T12:04:26
|
|
Vulkan: Don't detach separable shaders in Program::detachShader()
To support Program Pipeline Objects, we need to hold on to the shaders
in separable programs, rather than detaching them during
glDetachShader()/glCreateShaderProgramv(). This is necessary due to
requiring the shader information for validating shader interfaces,
varyings, etc.
Instead, a new ShaderMap of bools will be stored in
ProgramState::mAttachedShadersMarkedForDetach to track when a caller
attempts to detach a shader from a separable Program. Later, when a new
shader is attached, we will first validate that the old shader is marked
to be detached, and if so, release it then.
Bug: angleproject:3570
Change-Id: I63fac2e5914c1c1a73f0b37863bac0f185ecb44c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2084399
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tim Van Patten <timvp@google.com>
|
|
745e0712
|
2020-03-21T17:46:05
|
|
Vulkan: Enable CPU only buffers for PBOs
Add support for a CPU only buffer for PBOs that serve as
the destination for all host operations like MapBuffer*.
This removes the latency caused by waiting for the in-flight
GPU commands to be complete before handing over the buffer
to the app.
This change removes a ~6ms wait/sleep on the first call to
MapBuffer* in each frame of Manhattan
Bug: angleproject:4339
Tests: angle_end2end_tests --gtest_filter=BufferDataTest*Vulkan
Change-Id: I52016b160af8a670cc30f01c05e48f699521310f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116874
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
dcd98298
|
2020-04-01T16:58:16
|
|
Remove breaks after returns.
No behavior change.
Bug: chromium:1066980
Change-Id: I26a5c13a730cbc6cde8e888a8a18bd633bb3f748
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2133087
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
|
|
449d9d76
|
2020-03-31T17:27:00
|
|
Vulkan: Refactor garbarge collection related parameter
Use RendererVk instead of VkDevice as a parameter in garbage collection
functions.
Bug: angleproject:2162
Change-Id: Ifd53e05223d6d603402c9b7fcfa82fe1f896458c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131882
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
20e375eb
|
2020-03-14T20:27:09
|
|
Vulkan: Use shader stage specific barrier
Seperate vertex and fragment shader read/write with shader stage
specific barriers
Bug: angleproject:4467
Change-Id: Id18909b497b087e58d750023399943bc9d414edf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102957
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6281e30d
|
2020-03-31T15:41:23
|
|
Vulkan: Add flush condition for the device memory updated by CPU
Memory created using HOST_COHERENT_BIT does not need to be explicitly
flushed.
Bug: angleproject:2162
Change-Id: Idc2001e2254de616d7e7067410d225d0b521f29f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131881
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d30da072
|
2020-03-31T15:01:14
|
|
Vulkan: Request host uncached memory for some glBuffer objects
Uncached memory is an optimal memory type for resources with
write-only access from the CPU since it avoids polluting CPU caches
with data the CPU will never use.
Bug: angleproject:2162
Change-Id: I33d0d91830979990bcdcca3bd9eedde0345fb5a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131880
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
afd2cfa6
|
2020-03-19T17:39:23
|
|
Add gles1 covgl tests
CovglTest have additional error check in TEST ProbeError(Call* functions,
use a tricky method here, alias all ProbeError to ProbeErrorANGLE. add
"#define ProbeEror ProbeErrorANGLE" to all covgl source code besides shell.c
Currently for win/mac platform block on $gles1_conform_root/platform/platform.h
conflict with $angle_root/include/platform/Platform.h
Bug: angleproject:2303
Change-Id: I96679968bf539d6ae3bdfc3aa89150381679cbb5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2117950
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7d8c2f2e
|
2020-03-26T22:44:15
|
|
Hide SwiftShader OS Window in dEQP and end2end tests
This prevents a race between starting Xvfb on test bots
and X11 calls in X11Window::setVisible(),
which used to cause flaky hangs on Linux SwANGLE bots.
Unfortunately, in order to hide SwiftShader OS window,
it must be a separate window from other backends,
so it is no longer possible to have a single window for all backends,
even if we don't reuse EGL Display.
The only platform that still uses a single OS Window is Android,
since there is only one system window per test application.
In addition, all the tests that make OS Window visible explicitly,
no longer do this for SwiftShader device.
Bug: angleproject:4434
Change-Id: I1a067c22bfeee9288046b9d9566740731c0d627c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2125945
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d2c33b53
|
2020-03-31T20:04:12
|
|
Skip SwANGLE GLES31 tests which flakily crash with Win 32-bit Subzero
Bug: angleproject:4482
Change-Id: Ic5ff9a390b004029b1581f5726ab64d85c4ab074
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131388
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
6328caf3
|
2020-03-24T19:31:02
|
|
Vulkan: Avoid renderpass break for occlusion query
This ensures beginQuery and endQuery only get inserted into renderpasses
and will not close renderpass because of query call
Bug: angleproject:4381
Change-Id: I690f096b9e8e4b7ea9a67045d1be0fd7a319c98c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2119246
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Charlie Lao <cclao@google.com>
|
|
4b94d7bb
|
2020-03-24T17:23:19
|
|
Split EGL_CHROMIUM_sync_control into EGL_ANGLE_sync_control_rate
eglGetMscRateCHROMIUM was added to EGL_CHROMIUM_sync_control based
on the original extension GLX_OML_sync_control. However, this new
function is not universally implemented. This CL moves it to a new
extension, EGL_ANGLE_sync_control_rate, and renames it to
eglGetMscRateANGLE.
Bug: chromium:1064078
Change-Id: Ia2a29c6776b2b2bf2b98e58ee83b5f141ed01301
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118154
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
91ea27ae
|
2020-03-27T16:22:14
|
|
Apply limitMaxMSAASamplesTo4 workaround to macOS.
On dual-GPU MacBook Pros, the maximum number of supported samples can
differ between the integrated and discrete GPUs, leading to unexpected
OpenGL errors in applications. Detected with WebGL conformance tests
in Safari with ANGLE as the WebGL backend.
Bug: angleproject:4518
Change-Id: I54997cbb83afd76d98b16d138d117d0afdeec5e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2125407
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
06f4f3e1
|
2020-03-30T10:57:06
|
|
Capture/Replay: Disable binary formats when FrameCapture is enabled
Rather than capture and replay a format that is not cross platform,
limit the number of exposed binary formats to zero when FrameCapture
is enabled.
Test: Temple Run capture and replay
Bug: b:152512564
Bug: angleproject:3662
Change-Id: I4a7bc5a353d2cdb1dceb1276a3c61bfbb74dc2f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128327
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
db32bda4
|
2020-03-30T17:01:54
|
|
Vulkan: Observe staging buffer changes in TextureVk.
This switches where we notify the Texture class that the back-end has
a dirty staging buffer. Previously we notified in every possible code
site in TextureVk. Now we notify in a single centralized location in
the staging buffer. This will allow us to stash clears in the staging
buffer in the FramebufferVk class via RenderTargetVk. And ultimately
let us defer clears to fix Manhattan's rendering feedback loop.
Bug: angleproject:4517
Change-Id: I67760f133e2c58feddbba3d1062de0b966bac281
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128546
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dbb23ec3
|
2020-03-30T14:24:53
|
|
Vulkan: Remove swiftshader mipmap3d test skip
Bug: angleproject:3983
Change-Id: I9c487cc7db5d5e22a6cff00b40e4081498ab771f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128207
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
05fa1a99
|
2020-03-30T22:02:16
|
|
Skip test flaky on SwANGLE bots
dEQP.EGL/functional_sharing_gles2_multithread_random_egl_server_sync_shaders_compile_9
EGLSurfaceTest.ResizeWindow
AttributeLayoutMemoryIndexed.Test
Bug: angleproject:4495, angleproject:4453, angleproject:4502
Change-Id: Iad5097412372acc8ac36c742445763451c8122ad
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2129181
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
1288aa12
|
2020-03-27T12:24:52
|
|
Update the active texture cache before changing the texture binding.
When a new texture is bound, the texture binding state is updated before
updating the active texture cache. With this ordering, it is possible to delete
the currently bound texture when the binding changes and then use-after-free it
when updating the active texture cache.
BUG=angleproject:1065186
Change-Id: Id6d56b6c6db423755b195cda1e5cf1bcb1ee7aee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124588
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
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>
|
|
7939e367
|
2020-03-30T18:52:19
|
|
Revert "Enable blob cache when debugging"
This reverts commit 617cb015f3e95c3c89090870bae086e92515a91d.
Reason for revert: Seems to cause rolls in Chromium to fail: https://chromium-review.googlesource.com/c/chromium/src/+/2127135
Original change's description:
> Enable blob cache when debugging
>
> We've had several issues with shader caches which are only implemented
> on Android which makes them challenging to debug.
> The existing BlobCache object has a default implementation that is
> disabled by default. When debug layers are enabled resize the default
> cache so that it gets used and provides behavior closer to Android.
> This caching will be enabled when debug layers are enabled, e.g.
> EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED_ANGLE attribute is true.
> This is done for angle_end2end_tests and deqp tests.
>
> Bug: b:152292873
> Change-Id: I9dcd90a1a8da88127bf8dac25031056b7279207e
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113133
> Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=courtneygo@google.com,ianelliott@google.com,jmadill@chromium.org
Change-Id: I42a445b93eff1237b05a82d2836c218b9bbbd08b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: b:152292873
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128106
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
74e816bf
|
2020-03-26T17:40:25
|
|
Vulkan: Expose extension for ETC1 usage with subimage updates
This CL implements the GL_EXT_compressed_ETC1_RGB8_sub_texture
extension, which was added to relax restrictions on using
ETC1_RGB8_OES for subimage updates.
Test: Temple Run on Android
Bug: b:152512564
Change-Id: I78cfd7dfd54fab36dee59a93b3ec3bfce17e73e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2123232
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
617cb015
|
2020-03-25T14:10:38
|
|
Enable blob cache when debugging
We've had several issues with shader caches which are only implemented
on Android which makes them challenging to debug.
The existing BlobCache object has a default implementation that is
disabled by default. When debug layers are enabled resize the default
cache so that it gets used and provides behavior closer to Android.
This caching will be enabled when debug layers are enabled, e.g.
EGL_PLATFORM_ANGLE_DEBUG_LAYERS_ENABLED_ANGLE attribute is true.
This is done for angle_end2end_tests and deqp tests.
Bug: b:152292873
Change-Id: I9dcd90a1a8da88127bf8dac25031056b7279207e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113133
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
1b2dd6f9
|
2020-03-02T16:28:15
|
|
Vulkan: Refactor varying validation for separable programs
The varying validation is being refactored to better handle separable
programs. Some additional validation is being added as well regarding:
- Number of varyings (inputs vs outputs)
- Precision
This refactor will also allow ProgramPipelines to validate varyings
between shaders that are in different Programs.
Bug: angleproject:3570
Change-Id: I13f324da2ffea039e696962d6971a54f7a7b6f77
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2083847
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
b387ce93
|
2020-02-21T16:05:41
|
|
Vulkan: Move ProgramInfo/ShaderInfo to ProgramExecutableVk
The classes ProgramInfo and ShaderInfo are being moved into
ProgramExecutableVk along with the ProgramVk members mDefaultProgramInfo
and mLineRasterProgramInfo. This refactor is necessary since these
members are common between ProgramVks and ProgramPipelineVks.
Bug: angleproject:3570
Change-Id: I94cdb1096c6a0c007d858135af694da58d7897ff
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068901
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f47dccab
|
2020-02-21T15:40:36
|
|
Vulkan: Create TransformSpirvCode()
To support Program Pipeline Objects, the SPIR-V transformations must be
completed at draw time once all of the variable locations are known. To
achieve this, the transformation work is being refactored into
TransformSpirvCode() which can be called separately from
GlslangGetShaderSpirvCode().
Bug: angleproject:3570
Change-Id: Ia479cb2e4b4201e37acd0859c70081cecb80d0bf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068900
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@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>
|
|
10ade024
|
2020-02-13T18:11:54
|
|
Create the ProgramExecutableVk Class
The ProgramExecutableVk class is being created to collect data
structures that are common to both ProgramVks and ProgramPipelineVks,
as well as any shared functions. This allows callers to make
Program-/ProgramPipeline- specific queries without needing to know
exactly which responded by querying the current ProgramExecutableVk.
This will also allow the necessary data structures to only be
populated and stored within the ProgramExecutableVk when necessary
and reused as often as necessary.
A few things are being moved into this class:
- mVariableInfoMap
This information will be required to defer translating the SPIR-V
until when the vulkan pipeline layout is determined and the actual
locations are known. This will also allow removing determining
these locations twice (during GLSL->SPIR-V compilation and pipeline
layout).
- createPipelineLayout()
- update*DescriptorSet()
- Descriptor Set Layout lists
- Pipeline Layout
- Various other functions/members related to pipeplines, descriptor
sets, etc.
Bug: angleproject:3570
Change-Id: I4b5ababeafec865148783c8ffd4c15f659f4856d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055656
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b19000f3
|
2020-03-27T19:47:08
|
|
Skip KHR-GLES31.core.shader_image_load_store.advanced-allMips-* tests
Were previosly FAIL, but crash on Windows SwANGLE.
Bug: angleproject:4414
Change-Id: Iefe1625f7ad3eec8ba091ec3543e8cb699c62c65
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2125370
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
d03b15b2
|
2020-03-26T17:22:18
|
|
Vulkan: Mask out Depth/Stencil RTs in feedback loops.
This should enable some cases of limited support for feedback loops
with depth/stencil buffers. For example with Manhattan and the Vulkan
back-end.
Increases the number of RenderPasses in Manhattan slightly. This will
regress performance slightly until we can work out a better solution
that is also conformant with the spec.
Bug: angleproject:4517
Change-Id: I2758e6b4c2a930474c09cdc0950f3b6c34541089
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2106670
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
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>
|
|
bd2bdf9f
|
2020-03-26T15:40:09
|
|
Fix feedback loop clearing detection.
Bug: angleproject:4517
Change-Id: I3231b129718019f83495843404cd011eb2cd480d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2122689
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
0bba1100
|
2020-03-27T14:39:44
|
|
Update OWNERS information.
Also includes some documentation maintenance.
Bug: angleproject:4511
Change-Id: I7ecce494909f06387875ff85a10004d0c446bbaf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124597
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
13c139e7
|
2020-03-21T15:25:50
|
|
Support masking out DS feedback loops in RenderTargetCache.
Currently this is a pure refactor and doesn't change any functionality.
In a follow-up we can us this bit to mask out DS RTs when Manhattan and
other apps render with feedback loops.
Bug: angleproject:4517
Change-Id: I80ccd022d90a781506791110d11be195db8cd3e9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112936
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
0e65abea
|
2020-03-27T10:32:18
|
|
D3D11: Serialize and deserialze mImage2DUniforms.
mImage2DUniforms was not saved with the program binary causing shaders with
images to fail compilation when loaded from binary.
BUG: angleproject:4519
BUG: b:152292873
Change-Id: I51581031ae1f9d4b4d986057ef3f876d809c7f24
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124587
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
7e0699a2
|
2020-02-05T17:04:06
|
|
Create the ProgramExecutable Class
The ProgramExecutable class is being created to collect data structures
that are common to both Programs and ProgramPipelines, as well as any
shared functions. This allows callers to request the current
ProgramExecutable from the State and make
Program-/ProgramPipeline-specific queries without needing to know
exactly which responded. This will also allow the necessary data
structures to only be populated and stored within the ProgramExecutable
when necessary and reused as often as necessary.
Bug: angleproject:3570
Change-Id: I101f08ab03421894667b4a426a04d2147489f0e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2040512
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f2bee304
|
2020-03-25T22:41:32
|
|
Capture/Replay: Implement more GLES entrypoints
Tested with several apps that can't be captured otherwise.
Bug: angleproject:3611
Change-Id: I2ad18c3bfcab48b0b385b2a868f57369c292b602
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1998838
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
6719f54a
|
2020-03-24T08:36:41
|
|
Update Vulkan header and related repos
Vulkan header was updated with non-backward compatible change so need
to update all dependencies simultaneously.
Bug: b:152298150
Bug: angleproject:4510
Change-Id: I46ac9a3a0ccb52184fd183df617804c866b63453
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118151
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
b69c4e14
|
2020-03-24T15:02:06
|
|
Capture/Replay: Update CaptureReplay sample for compression
* Move DecompressBinaryData to a shared helper
* Start using it in CaptureReplay sample
* Error out if decompress callback isn't set correctly
Test: AngryBirds and CandyCrush captures replay on desktop
Test: angle_perftests --gtest_filter="*Trace*"
Bug: angleproject:4484
Change-Id: I0432004fdb0cfb0fd61f9a66f792591c9aa40d9b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118790
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
78c77361
|
2020-03-20T13:50:24
|
|
Perf: Add a single Manhattan trace
Now that TRex is up and working and Manhattan runs cleanly:
* Add a single compressed Manhattan trace.
* Allow errors from tests to fail the test
* Restore the working directory between each trace test
Test: angle_perftest --gtest_filter=TracePerfTest*
Bug: b:151349786
Bug: angleproject:3630
Bug: angleproject:4496
Change-Id: I9e9d9342efb23431380f484befb9a19915c4bd0a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113230
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a7510f06
|
2020-03-04T18:39:32
|
|
Re-enable angle_end2end_tests on 32-bit Windows SwiftShader
In order to add angle_end2end_tests on Win 32-bit SwANGLE bots.
Bug: angleproject:4421, angleproject:4092
Change-Id: I6923ca461492469f05503aebf2256763ea7061aa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2088654
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
c77cb596
|
2020-03-24T14:39:32
|
|
No-op draw calls with rendering feedback loops.
This is quite within spec and protects our various back-ends from FB
loops. Also makes the check more cached for optimization purposes.
Bug: angleproject:4490
Change-Id: Ia82ec88244d07670d68ce53495b5893b8a75ac42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118153
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
107e4e98
|
2020-03-24T21:23:16
|
|
Lift SwANGLE dEQP-GLES3.functional.fbo.blit.conversion.* suppression
Fixed by
https://swiftshader-review.googlesource.com/c/SwiftShader/+/42548/
Bug: angleproject:4416
Change-Id: I703608d7d3fa15f2428a832896a68893efbb35ae
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2119234
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
d0800d29
|
2020-03-24T15:01:22
|
|
Vulkan: Fix crashes/failures in array-of-struct uniforms
When array-of-struct support was added to ANGLE, it was not added to
the shader cache serialize/deserialize functions.
This affects many GLES 2/3/3.1 dEQP tests, such as:
dEQP-GLES2.functional.uniform_api.value.assigned.by_value.render.struct_in_array.sampler2D_samplerCube_vertex
Bug: angleproject:4475
Bug: b:151387995
Change-Id: I159f6340db255ec50c16b59fec23a61ed05aa8f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2118152
Commit-Queue: Ian Elliott <ianelliott@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>
|
|
e39d055d
|
2020-03-23T17:45:57
|
|
Fix robust resource initialization with clipped CopyTexSubImage2D.
When CopyTexSubImage2D calls were clipped against the bounds of the
read framebuffer by the underlying renderer backends, the robust
resource initialization code assumed that the original destination
area would be overwritten by the renderer, which was not the case.
Add new tests which were previously failing on macOS with the
ES2_OpenGL and ES3_OpenGL backends. The Metal backend is still failing
and a follow-on bug has been filed.
Bug: angleproject:4504
Change-Id: I34821dd90597f31b3cbf0921b94756556e485c91
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116873
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
ed0e932c
|
2020-03-23T16:46:38
|
|
Supress test failing with new Intel driver.
EGLDirectCompositionTest.RenderSolidColor/ES2_D3D11_NoFixture failing
with the 26.20.100.7870 driver.
Bug: chromium:1063962
Change-Id: I48ef5915c67e05cc86a568c28115dae26dc78db2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2116871
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6fead375
|
2020-03-21T14:06:19
|
|
Vulkan: No-op redundant FB state changes.
This uses a trick by comparing the prior to the updated FB description
to filter out rendundant changes. Will allow the front-end syncState to
sometimes noisily report state changes when there aren't any in the
back-end. Ideally we wouldn't generate any updates when there aren't
real changes. However because Manhattan often transitons between a few
zero states it gets a bit difficult to determine in the front-end.
Also adds a no-op for redundant samples changes in the front-end.
Fixes a regression in the number of RenderPasses in Manhattan from work
to support rendering feedback loops.
Bug: angleproject:4490
Change-Id: Ibf83d584107a4561da7ad47a2d3fb543e63e31f1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112935
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
31e36a63
|
2020-03-14T21:40:58
|
|
Reland "Refactor BitCount"
This is a reland of baecb7d55c692a93a29a46939029b8262174ca62
Directly use NEON instructions on ARM/ARM64 on MSVC.
Original change's description:
> Refactor BitCount
>
> POPCNT intrinsics cannot be used without hardware support, so a CPUID
> check and polyfills are required for some CPUs when using MSVC to
> avoid runtime failure.
>
> Other changes include:
> - Clang: use builtins on all platforms to provide exact intent to the
> compiler;
> - MSVC on ARM: use dedicated intrinsics;
> - x86/x64 fallback is now branchless and works in constant time.
>
> Bug: angleproject:4462
> Change-Id: I00fcabda1c842677d8cb4bfd280d932d0d10c0a5
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102811
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:4462
Change-Id: Ia58ae00fa4230f77d981d4ba393fa3481806c5b0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113570
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cb7e7387
|
2020-03-20T22:15:39
|
|
Remove 32-bit Subzero GLES31 SwANGLE suppressions
Remaining Windows crashes fixed by
https://swiftshader-review.googlesource.com/c/SwiftShader/+/42608
Bug: angleproject:4482
Change-Id: If1d6b6c4bd172c36108d31e01f561e001f49683f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113716
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
6b462120
|
2020-03-20T19:23:17
|
|
Skip flaky SwANGLE end2end tests.
AttributeLayoutNonIndexed.Test
AttributeLayoutBufferIndexed.Test
EGLSurfaceTest.ResizeWindowWithDraw
Bug: angleproject:4453, angleproject:4502
Change-Id: I6dbd333e428d61d84bb17bf0c4112fa66cff9846
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113711
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
c0b267cc
|
2020-03-20T17:28:50
|
|
Skip ExternalWrapTest on Ozone.
Ozone only supports external target for images created with
EGL_EXT_image_dma_buf_import.
BUG=angleproject:4443
BUG=chromium:1063462
Change-Id: Ia62fdd92198bdcc2d9840765305b4cc613fd3f7c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2113450
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ca2b6e1f
|
2020-03-19T16:30:21
|
|
Vulkan: Implement EXT_shader_non_constant_global_initializers
Enables the translator to handle non-constant global initializers in
all essl versions iff the shader enables the extension to do so.
Bug: angleproject:4468
Test: angle_end2end_tests --gtest_filter=ShaderNonConstGlobalInitializerTest.*
Change-Id: I8f138c12fc83d2f38ff8f45ca9133222b01e4087
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102959
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
13ea5b7f
|
2020-03-19T12:43:12
|
|
Implement gl[Get]MemoryObjectParameterivEXT
These functions are required to tell the driver that the memory object
is dedicated memory. This is required for AMD drivers on Linux.
Bug: chromium:1049218
Change-Id: I17d69cde5e6308791dc90784f4d6e348503a6ed6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2110051
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
dd4e09ef
|
2020-03-20T14:54:36
|
|
Update conditions for exposing ASTC extensions.
Add commenents to explain the Vulkan ASTC situation.
Expose GL_KHR_texture_compression_astc_sliced_3d when the HDR profile
exists.
Bug: angleproject:4447
Change-Id: I00a86cb3c44873a28397aab33a47fb363d4ecfe9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112283
Reviewed-by: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Alexey Knyazev <lexa.knyazev@gmail.com>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
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>
|
|
91f44a9a
|
2020-03-20T12:08:24
|
|
ASTC: LDR support doesn't imply HDR support
There are SwiftShader related failures related to enabling the
textureCompressionASTCHDRKHR feature without properly checking if the
VK_EXT_texture_compression_astc_hdr extension is available, so HDR support
shouldn't be enabled only based on the LDR support being enabled.
Bug: angleproject:4447
Change-Id: Icde34892c9e2efff4b71e8c4e960c2fcff786700
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080594
Commit-Queue: Alexis Hétu <sugoi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cd6028de
|
2020-03-20T14:07:44
|
|
Suppress two -Wunreachable-code warnings on Fuchsia in Angle.
Bug: chromium:346399
Change-Id: Ibf9cefdee52e487d9e73b9dff98a12267ac82af6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112281
Commit-Queue: Nico Weber <thakis@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4fb3c28f
|
2020-03-19T19:10:45
|
|
Vulkan: Fix Framebuffer cache depth/stencil issue.
The DrawBuffers resetting logic didn't update the depth/stencil serial.
Fix this and add a regression test that would crash in this situation.
Note that the Manhattan benchmark could trigger this under some cases.
Bug: angleproject:4322
Bug: angleproject:4490
Change-Id: Ie4b24efeb5991ecaa85bf8f964f77476bd6f167d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2111333
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
1c88cf27
|
2020-03-18T18:00:01
|
|
Add optimized rendering feedback loop tracking.
This can be used both for WebGL and the Vulkan back-end workaround for
Manhattan. Uses the recently added tracking for Textures being bound as
samplers. Then caches this information in the Framebuffer using the
Subject/Observer pattern.
Bug: angleproject:4490
Change-Id: I08bef0a1b95c4333da19c2dae1f02a993e5835e1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2109335
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
a4337121
|
2020-03-19T15:31:00
|
|
Perf: Limit TracePerfTest to single compressed TRex
Update the TRex trace to:
* Incorporate recent fixes for compressed textures
* Incorporate support for compressing the trace
* Simplify the tag on the trace (drop the end frame)
Update TracePerfTest to:
* Temporarily support only a single trace (TRex200).
Test: angle_perftests --gtest_filter="*Trace*"
Bug: angleproject:4484
Bug: angleproject:4488
Bug: angleproject:4496
Change-Id: Ice0c4ee9de3ad9ae4596305a93c51c6eac842123
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112629
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
62b72552
|
2020-03-20T07:51:26
|
|
Add support for EXT_EGL_image_external_wrap_modes
Allows for more wrap modes to TEXTURE_EXTERNAL_OES textures
Test: angle_end2end_tests --gtest_filter=ExternalWrapTest.*
Bug: angleproject:4443
Change-Id: I37bde091b166d7471c13c14fd6b0174136b52ecf
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103433
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
26f8f1a9
|
2020-03-20T14:54:11
|
|
Revert "Refactor BitCount"
This reverts commit baecb7d55c692a93a29a46939029b8262174ca62.
Reason for revert: Broke Skia Win/ARM builder. See issue for details.
Original change's description:
> Refactor BitCount
>
> POPCNT intrinsics cannot be used without hardware support, so a CPUID
> check and polyfills are required for some CPUs when using MSVC to
> avoid runtime failure.
>
> Other changes include:
> - Clang: use builtins on all platforms to provide exact intent to the
> compiler;
> - MSVC on ARM: use dedicated intrinsics;
> - x86/x64 fallback is now branchless and works in constant time.
>
> Bug: angleproject:4462
> Change-Id: I00fcabda1c842677d8cb4bfd280d932d0d10c0a5
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102811
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,lexa.knyazev@gmail.com
Change-Id: Ia1756abdf7da2aa9574149eb388915f97758bba0
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:4462
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2112276
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2709f40f
|
2020-03-17T14:22:42
|
|
Skip updating viewport and scissor info if the same
If glViewport() or glScissor() is called with same
info, skip updating viewport or scissor info and
related dirty bits.
Bug: angleproject:4487
Change-Id: I9a0f3eb0df789beb99447ebc98383f502fbc763d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2105528
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0e069b42
|
2020-03-19T21:40:51
|
|
Skip SwANGLE GLES31 tests which crash with 32-bit Subzero only on Windows
Linux 32-bit crashes were fixed.
Bug: angleproject:4482
Change-Id: I3efd7c760dfec1f8b909eee2ed84f5f9ebc33c3a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2111970
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
ca45852d
|
2020-03-19T22:04:47
|
|
Skip flaky TransformFeedbackTest.MultiContext on Win Intel Vulkan
Bug: angleproject:4497
Change-Id: I92e7ad9f0c34fe0b5f67318271ececc218c20757
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2111781
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
b1eb44bf
|
2020-03-18T15:33:13
|
|
Track if a Texture is bound as a sampler.
This will more easily allow us to detect rendering feedback loops.
We'll need to support feedback loops to enable Manhattan.
Bug: angleproject:4490
Change-Id: I442deebd89dcf0139411688eaa204c5e5b2c2799
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2109334
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
baecb7d5
|
2020-03-14T21:40:58
|
|
Refactor BitCount
POPCNT intrinsics cannot be used without hardware support, so a CPUID
check and polyfills are required for some CPUs when using MSVC to
avoid runtime failure.
Other changes include:
- Clang: use builtins on all platforms to provide exact intent to the
compiler;
- MSVC on ARM: use dedicated intrinsics;
- x86/x64 fallback is now branchless and works in constant time.
Bug: angleproject:4462
Change-Id: I00fcabda1c842677d8cb4bfd280d932d0d10c0a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102811
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
7daf31d8
|
2020-03-18T09:19:52
|
|
Vulkan: Use device local memory for conversion buffers that can be converted with the GPU
When converting a vertex buffer by using GPU, the conversion buffer
doesn't need to be host mappable. Hence the conversion buffer can
be allocated on device local memory for faster GPU access times.
Bug: angleproject:3534
Change-Id: I2efabec20186992479920bddd3abd36f9c13babc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2108706
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9d812d35
|
2020-03-18T15:31:14
|
|
Vulkan: Remove public FramebufferVk::getFramebuffer.
Goal: enable rendering feedback loop detection for Manhattan.
Making getFramebuffer private prevents direct access to the Framebuffer
internals. Hiding access lets the FramebufferVk class switch up its
implementation to support different VkFramebuffers for feedback loop
cases.
Also this is a general code cleanup.
Bug: angleproject:4490
Change-Id: Ib4f5e34d476ccd8fc43a1adb031933ab347ca7b7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2109333
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8aa20069
|
2020-03-18T17:55:06
|
|
Skip some tests on Mali because of a known issue
Type decorations may be ignored when using multiple OpAccessChains.
Bug: angleproject:4492
Change-Id: I2e51af600394a69cb5f7e02228ca7e4fd1c826e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2105529
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dadeffa3
|
2020-03-18T21:56:05
|
|
Capture/Replay: Fix stride in compressed texture caching.
We were saving "width" bytes instead of "width * pixelSize". This was
causing incorrect rendering in T-Rex and Manhattan.
Bug: angleproject:4488
Change-Id: Ib5d38aaf813fb26905aedc155cc13b9d1597ec4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2109336
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4422d298
|
2020-03-18T09:54:54
|
|
Vulkan: Must call vkFlush while memory is mapped
Update to Vulkan validation layers pointed out that
vkFlushMappedMemoryRanges needs to be called when the memory is mapped.
Bug: b:151820847
Change-Id: I3860306080bca435c063046f9ae20943a8601d17
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2108705
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
4119f033
|
2020-03-17T13:34:09
|
|
Vulkan:Set one-time bit on all command buffers
All Vulkan command buffers are only submitted once so we can set the
VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT which may help performance.
Bug: angleproject:4304
Change-Id: Ibd116dcac4e78a2c058eb3da54489057d6fa8f44
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107800
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
4df67871
|
2020-03-17T16:13:23
|
|
Be sure to clear all program state at unlink
At Program::unlink we clear out the program's state but forgot
mBufferVariables. That was causing us to hit an assert when trying to
load a shader from cache.
Only see the issue on Android as that's the only platform where shader
caching is supported.
Test: KHR-GLES31.core.explicit_uniform_location.uniform-loc
Bug: angleproject:4132
Change-Id: Iae9c26a3e3b2d11983cc7d90bcd54a10c0fa9934
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107235
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
23d63fc3
|
2020-03-17T20:34:50
|
|
Capture/Replay: Fix MEC Query capture.
In Manhattan the test generates a bunch of queries that it doesn't
start until later frames. In ANGLE these queries will be stored as
nullptr entries in the QueryMap. By default the QueryMap Iterator skips
over nullptr entries. This manifested later as GL errors during replay.
Fix this by adding a new Iterator type to ResourceMap that does not
skip over nullptr values.
Bug: angleproject:4489
Change-Id: If56b908fb233de0df0445f9ea19fc322f2c42976
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107762
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
e54f7ed7
|
2020-03-17T18:20:44
|
|
Capture/Replay: Fix compressed texture subImage caching.
The prior code was caching the last subImage data. In fact we should be
caching and updating a pixel rectangle. Multiple subImage calls will
update the same rectangle until the final capture call sets up the
replay with the complete initial data.
This was causing an issue with Manhattan and the initial data for 3D
compressed textures. Manhattan uploads these one layer at a time. So
the prior code was trying to pass a single layer's data to the subImage
call for the entire level.
Bug: angleproject:4488
Change-Id: I76765dcea884f9d8ea07908c44e97578ddb0ff0d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2107761
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
7e453a25
|
2020-03-15T22:11:03
|
|
Capture/Replay: Use zlib to compress data files.
Gives about a 2-3x reduced data file size. Should help reduce the time
we spent transferring trace files on Android.
This feature is implemented as a parameter to the capture/replay tool.
This keeps backwards compatiblity if we ever need to integrate a cpp
replay into an environment that doesn't have access to zlib for
decompression.
We'll need to update the traces to take advantage of the compression.
Bug: angleproject:4484
Change-Id: Id7994efe3c0d529b85fa7e7f1b00444e630dd2cd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104555
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
78a85f2c
|
2020-03-16T10:28:59
|
|
Vulkan: Request device local memory for glBuffer with GL_STATIC* usage
glBuffer objects with GL_STATIC_* usage patterns will now request
the storage to be allocated in device local memory. For glBuffer
objects with GL_DYNAMIC_* usage patterns we request a host cached
memory.
Bug: angleproject:4480
Change-Id: I7ca968f5ddfb59e4df3ecd07ae65df2bbf734190
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2102958
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
f98084ed
|
2020-03-12T10:06:26
|
|
Fix ShaderStorageBufferReadWriteOffset end2end test
Test: ShaderStorageBufferTest31.ShaderStorageBufferReadWriteOffset.
Align kBufferOffset to bufferAlignOffset correctly.
Bug: angleproject:4471
Change-Id: I71084839a845138b32d58d8bd2cf6fed2633a9be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2100047
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d24752e6
|
2020-03-15T21:34:10
|
|
Capture/Replay: Write to single binary data file.
Previously the tool would save to a separate file for every frame and
one additional file for the setup function. Frames without binary data
would not get an "angledata" binary file.
Using a single file has a few advantages:
- makes it simpler to track the data dependencies in GN
- should be easier to compress and decompress for speed up transfers
- no need to wonder if we have frames with missing data files
- less overhead reading from the HDD since the whole trace is buffered
We might need to worry about extemely huge memory use cases. For now
buffering the whole file into memory on startup is simple and fast.
Also makes the binary data loader function more robust.
Bug: angleproject:4484
Change-Id: Ia74fb0bc65200adf7a21c3143f98aa4da86457b1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104554
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
7c334c56
|
2020-03-15T17:37:15
|
|
Re-enable optimization for angle_perftests.
This CL restricts the workaround to the trace perf tests. These trace
tests are too big to optimize.
Also includes a fix for a 32-bit Windows warnings. We'll need to update
the build file to remove a suppression once the traces are updated.
Bug: angleproject:3630
Change-Id: Id13a0050fc2a645aa572b8c9079908023b232f28
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103084
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
42c453fe
|
2020-03-15T18:23:15
|
|
Move perf test common files to a source set.
Similarly to a prior patch this organizes the common perf test sources
into a single target. This will allow us to more easily support setting
compiler flags on particular perf test sources.
This also fixes some build errors that popped up when new warnings were
enabled.
Bug: angleproject:3630
Change-Id: I866885199f93a5055e8d160e39f72d1f8209bc75
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103086
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
5df2c9ea
|
2020-03-15T17:28:43
|
|
Refactor ANGLE common test utils.
This reduces code duplication by including a common set of sources in a
single place. New test sets will be a bit easier to add. It also
encapsulates the dependencies a bit better when we pull the test utils
out of the test targets.
Unblocks a follow-up CL that moves the trace perf test sources into
their own file so we can re-enable optimizations in the main perf test
target.
New warnings popped up in a few of the files because of the new source
set enabling more warnings. This CL also fixes all of those.
Bug: angleproject:3630
Change-Id: Ic30cb30fb4288c4dbbbd29f9bdf04be51e8a6b30
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103083
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
f1eb10ef
|
2020-03-10T16:40:53
|
|
GLES: Skip tests if vertex SSBO were not supported
Skip tests if GPU doesn't support vertex shader storage
buffer object.
Bug: angleproject:4466
Change-Id: Icc7b6e686d7b4d5ecd2e05f6f09551f839f5302d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2096740
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a8631f68
|
2020-03-15T20:38:20
|
|
Fix running trace tests in non-standard directories.
The change to make the trace tests load the data files using a relative
path only worked when running the tests from the "standard" out path.
By setting the CWD to the executable dir in test setup we are able to
run the tests from any local dir when testing.
Also cleans up some repeated code in the test init switch statement.
Bug: angleproject:3630
Change-Id: I8e9e5e6e1e9cd31c5b3c7b2f52420d0ba75cf76b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104548
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cb9a86a9
|
2020-03-15T14:24:32
|
|
Skip SwANGLE GLES31 tests which crash with 32-bit Subzero.
Started with https://swiftshader-review.googlesource.com/c/SwiftShader/+/42108
Bug: angleproject:4482
Change-Id: I48effe26aa7ce1b574f9df8ad9c3f560cb599cf3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104406
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a4a42e6d
|
2020-03-15T18:25:21
|
|
Format perf_test.cc.
This was missed when our git cl format protection was temporarily
broken. A subsequent change caused the file to get fully formatted so
this CL pulls that diff into a split change.
Bug: angleproject:3630
Change-Id: I14ed53708783b38039e8fa64cb38837e25911893
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103085
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
869e901a
|
2020-03-14T20:27:09
|
|
Temporarily disable optimizations in angle_perftests.
The optimization for the large trace perf tests was so costly that in
some configs it would fail to build at all. This could cause build
failures in the ANGLE CQ. Disable optimization to work around this
until we can isolate the compiler flags to just the trace perf tests.
Note: this only applies to the test harness. ANGLE itself is still
optimized in release builds by default.
Trace trimming would also help alleviate this problem. We could also
consider removing a few traces temporarily.
Bug: angleproject:3630
Change-Id: I2bd8fb76f330692aa715249ca8656965b5a29d8c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103674
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
db3f042b
|
2020-03-14T17:55:39
|
|
Trace Tests: Rebase path to relative dir.
We were encoding an absolute path into our binaries. This works locally
and breaks horribly when run on the bots. Fix this by rebasing the path
to the root_out_dir.
Bug: angleproject:3630
Change-Id: I4044d1228ee951f2192e83167deb92a0ffe92a52
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2103672
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a3cf06ac
|
2020-03-12T13:15:48
|
|
EGL: populate EGL_NATIVE_VISUAL_ID values for Android
When generating the default EGL configs, populate
EGL_NATIVE_VISUAL_ID with AHARDWAREBUFFER formats.
Bug: angleproject:4469
Change-Id: Ifde9df0497cbd4e01219ab6067acd8d97f8460e4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2101577
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|