|
dc3477f3
|
2020-03-14T17:22:41
|
|
Separate GLES1's state enum switch code from GLES2+
Some enum values such as GLES1's GL_CLIP_PLANE0 and GLES2+'s
GL_CLIP_DISTANCE0_EXT have the same value.
Thus, the enum switch code has to be separated for GLES1 & GLES2+
Bug: angleproject:4481
Change-Id: I2fcb95f3f75f1fe683a072bee02e797a95686480
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145284
Commit-Queue: Le Hoang Quyen <le.hoang.q@gmail.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
|
|
8c67c079
|
2020-04-16T14:42:15
|
|
Vulkan: store ImageLayout in PackedAttachmentOpsDesc
The layout in the PackedAttachmentOpsDesc only have 5 bits, not enough
for raw VKImageLayout enums. This change will store vk::ImageLayout
which are ANGLE defined and packed for 5 bits and able to handle the
extension bits of VKImageLayout.
Bug: b/153885625
Change-Id: Ida268a974094188d8aeee39c61019eef30a60507
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2153845
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
aefa3aa9
|
2020-04-15T14:27:12
|
|
Vulkan: Make staged clears store aspect mask.
This will allow us to store depth- or stencil-only clear when we defer
clears in FramebufferVk syncing. Currently a refactoring change only.
Bug: angleproject:4517
Change-Id: Ifc9bf8f9ebab993509155cf6cf66db5b11f35163
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2151169
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3fb33ade
|
2020-04-09T15:27:12
|
|
Vulkan: Forward RenderBuffer/Surface dirty messages.
Previously we were only forwarding Texture staging changes to the
Framebuffer for re-sync. We could miss out on clears that were staged
in Surfaces and Renderbuffer attachments. Complete the chain by making
the SurfaceVk and RenderbufferVk forward notifications from the
VkImage.
Bug: angleproject:4517
Change-Id: I15f36c225517e915f656d0c2464a99631ef9f945
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2150699
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1033d55d
|
2020-04-07T14:01:24
|
|
Pass binding enum to Framebuffer::syncState.
Will allow us to determine if we're clearing the read or draw FBO. Then
we can stash clears for the draw FBO only and issue them immediately
for the read FBO in the Vulkan back-end.
Bug: angleproject:4517
Change-Id: Ifc043317d6156a75749b13f9d2c44a17e14ee378
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139997
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
943c3bc1
|
2020-04-16T11:25:02
|
|
Vulkan: Fix transform feedback on AMD platform
Make sure pCounterBufferOffsets is never a null pointer when
counterBufferCount is greater than zero.
Bug: angleproject:3206
Change-Id: If161473239b53d2a65b1cccaaf1426a4fefd243a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2152030
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
49ad8eaa
|
2020-04-13T17:55:25
|
|
Enable allowClearForRobustResourceInit for Intel drivers
NVidia drivers have no trouble clearing textures without showing
corruption. AMD ones do.
Intel drivers that have trouble have been relegated to the DX9 runtime
by Chromium.
Bug: angleproject:4460
Change-Id: I9ffbfa041e0f7ef8e05edcc14274bf9530eafae3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2147821
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
d5ba916d
|
2020-04-07T17:59:08
|
|
Vulkan: Change to record transform feedback related APIs per spec
Fix not to record vkCmdBindPipeline and vkCmdBindTransformFeedbackBuffers
during transform feedback is active.
Initiated by Hyunchang Kim hckim.kim@samsung.com
https://chromium-review.googlesource.com/c/angle/angle/+/1971953
Pause Transform feedback on binding graphics pipeline and
end of render pass. Set a new dirty bit to indicate transform
feedback may need resume when invalidate graphics pipeline.
Test: dEQP-GLES3.functional.transform_feedback.*
Test: angle_end2end_tests --gtest_filter=TransformFeedbackTest*
Bug: angleproject:3206
Change-Id: I6c70ef461a31dcd618058b167835ac278a21d04a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139474
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6e0d718a
|
2020-03-31T18:41:57
|
|
Vulkan: Implement device memory sub-allocation
Use AMD Vulkan Memory Allocator for device memory sub-allocation.
We now have a mempool from which all glBuffer memory is allocated.
The CPU overhead involved in repeated IOCTL calls to the kernel is
reduced significantly.
Bug: angleproject:2162
Change-Id: Id7681ffe2ac3d2853141ebe34c7df7b7fdd0d55e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2124519
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
d26fb99e
|
2020-04-10T16:04:26
|
|
Add DrawBaseVertexVariants Tests
This tests different DrawElements*BaseVertex draw calls
from different extensions including OES_draw_elements_base_vertex,
EXT_draw_elements_base_vertex, and ANGLE_base_vertex_base_instance,
with various combinations of base vertex, base index values.
Bug: angleproject:4536
Change-Id: I3cd256522684c6040199d7704aac8575237dbd96
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2146292
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shrek Shao <shrekshao@google.com>
Commit-Queue: Shrek Shao <shrekshao@google.com>
|
|
7ce8f3e0
|
2020-04-14T11:07:25
|
|
Enable perFrameWindowSizeQuery by default on Mali
It doesn't return out of date error after the native window
has resized, so we need to enable perFrameWindowSizeQuery
on Mali GPU.
Bug: angleproject:4564
Change-Id: Ib454898c5653fbb1b05dc542f7266dfffb03e793
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2145879
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dee4d7a5
|
2020-04-10T10:22:56
|
|
Vulkan: Early fragment tests optimization
Checks if early fragment tests as an optimization is feasible and enable
it if we can. In the link time, if context state diagrees with
optimization (in rare case), then remove the
ExecutionModeEarlyFragmentTests sprv op code.
Bug: angleproject:4508
Change-Id: Ifbb06c0ffb050a9f3ddb16ab50362e908b4b9cf6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2136490
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
c68dfaf3
|
2020-04-01T16:36:25
|
|
Avoid GPU-GPU copy for StructuredBuffer
If uniform block is translated to StructureBuffer on D3D backend,
must do a GPU-GPU copy when updating uniform buffer. If buffer's
latest usage is StructuredBuffer, directly upload to structured
buffer.
Bug: angleproject:3682
Change-Id: I7303866d08705a43238732e5f5ae4858f0a33d63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2131871
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
405f8e7b
|
2020-02-24T17:38:10
|
|
Vulkan: Support Program Pipeline Objects
Add support for PPOs to the Vulkan back end.
Bug: angleproject:3570
Change-Id: I5403456929847c185467b008d810f31ecfcb60cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2072652
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
c12c1f57
|
2020-04-03T01:33:54
|
|
D3D11: Skip setting BlendState for integer attachments
Some D3D11 drivers may produce unexpected results when blending is
apllied to integer attachments.
Minor cleanup: early exit for nullptr attachments.
New BlendIntegerTest in angle_end2end.
Bug: angleproject:4548, angleproject:4547, angleproject:4525, angleproject:4394
Change-Id: I236ac6db1f8dcaca54e9bc1b0803e1775fd75632
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134448
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
dac5cc3b
|
2020-04-08T18:26:46
|
|
EGL: Add support for EGL_EXT_image_gl_colorspace extension
Add support for creating images with custom colorspace.
Bug: angleproject:3756
Tests: angle_end2end_tests --gtest_filter=ImageTest*
Change-Id: I9c332c012541c094728d9d9bde7add4189084a33
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2104088
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
|
|
23196076
|
2020-04-08T10:47:33
|
|
GL: Protect against infinite loops with CONTEXT_LOST in CheckError
If the GL context generates a CONTEXT_LOST error, stop checking for errors.
This error will be generated continuously and result in an infinite loop.
BUG=angleproject:3020
Change-Id: Ib78d1ff3f84103e658307f2f892538700916449d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2142312
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
8bd3dab1
|
2020-04-03T17:44:02
|
|
Create Context::getActiveLinkedProgram()
In preparation for support Program Pipeline Objects, the new function
Context::getActiveLinkedProgram() is being created that will handle
returning the correct Program whether there is currently a Program or
PPO active.
This initial implementation doesn't actually support PPOs yet; that
work is done in a follow-on CL.
Bug: angleproject:3570
Test: CQ
Change-Id: I534261738a55b2f671ca152c2ef9a1e81517a99c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135931
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a156df23
|
2020-03-20T08:12:34
|
|
Vulkan: add support for EXT_texture_sRGB_R8
Added support for EXT_texture_sRGB_R8. The GL_SR8_EXT format
will be available if the VK ICD supports VK_FORMAT_R8_SRGB.
This does not add support for emulation of this format.
Bug: angleproject:4503
Bug: angleproject:3609
Test: dEQP-GLES3.functional.texture.*.srgb_r8_*
Change-Id: Ifaec92ac1a8561881f54ddb7fdf0975112711736
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135853
Commit-Queue: Brandon Schade <b.schade@samsung.com>
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
76d52be3
|
2020-04-07T09:14:29
|
|
Vulkan: Add VulkanMemoryAllocator to DEPS.
Bug: angleproject:2162
Change-Id: If91ae40c1fe818a59d775bb2fa066227dd52859d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139992
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2a0c3596
|
2020-03-31T15:36:45
|
|
Vulkan: Clean up robust and emulated image clears.
This change consolidates image clears in multiple places into a single
site in ImageHelper initialization. It adds support for appending clear
image commands as well as prepend (the default). We prepend clears
because image initialization happens after data upload.
The Vulkan robust clear path now works like the other back-ends. The
change flushed out a bug where partially uninitialized CopyTexImage was
not correctly initializing a texture before triggering a full resource
clear. Texture::copyImage now uses a workaround where we first init the
image before clearing it. After the init we upload the new data.
We'll use the appending clears path when implementing deferred clears.
Bug: angleproject:4517
Change-Id: If9212f3b8cdd0fc8b7e729d364530801a644e164
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2130627
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
78a471ba
|
2020-04-03T16:21:21
|
|
TextureGL: Signal DirtyBitsChanged on dirty bits.
This is a refactoring change only in preparation for a change in the
Vulkan back-end. We'll need to split the handling for Vulkan and GL
into different functions.
Bug: angleproject:4517
Change-Id: I2ddf9c70fe247d1dcb4e0aa9ca929bbbd61bd42b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135893
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c916fe8a
|
2020-04-02T16:57:49
|
|
Don't call syncState inside FBO queries.
This prevents a syncState ordering issue that was confusing FBO sync
when robust resource init is enabled. Also cleans up some redundant
format processing for the half float extensions.
Bug: angleproject:4517
Change-Id: Ieb13fc5203cf824a3e8affda96ea5cbbd89d78ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134411
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a30c6f35
|
2020-04-07T11:25:20
|
|
Vulkan: Pass RendererVk to BufferHelper::destroy.
Bug: angleproject:2162
Change-Id: I7c0090d48b0a5bac222b1edf4c2db280d5b32930
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2139993
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
90e07c73
|
2020-04-06T17:04:32
|
|
Hook up several drawElements variants in Context11
Turns out the issue for the skia bug is not related to index range
cache but simply several new drawElemnts variants are not properly
hooked up.
Change-Id: I2d1ae15c74233185e4fee8a1443ffe0477f9c444
Bug: angleproject:3402, angleproject:4536
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2137943
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
461f9ab1
|
2020-03-30T12:41:34
|
|
Capture/Replay: Implement more GLES entry points
Test: Temple Run capture and replay
Bug: b:152512564
Bug: angleproject:3662
Change-Id: I4cb5d081e4f590d297dc4af6b49f5dc67584ecb7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128329
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
84323449
|
2020-03-30T12:40:12
|
|
Capture/Replay: Track buffer contents by ID
This CL updates how we restore buffer data after the client has
unmapped it. We do this because we have no visibility into
whether the buffer has been changed while mapped.
Tracking a buffer map/unmap pairing by target as we have been is
insufficient as apps can bind multiple buffers in succession before
rebinding and unmapping selectively.
To avoid this, we change our buffer data resource tracking to use
the buffer ID instead of target.
Also, since the app can map multiple buffers, we need to track the
active buffer during MapBufferRange so we can use it during replay
to restore from the appropriate handle. This is a deferred
operation, so we store it as a new member of the ParamBuffer to
preserve the information.
Test: Temple Run capture and replay
Bug: b:152512564
Bug: angleproject:3662
Change-Id: I1d3f594b496e5675e814b82acb4a238f845e26d6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2128328
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
1c95795f
|
2020-04-03T14:49:45
|
|
Use ImageIndex in ensureSubImageInitialized.
Passes an already initialized struct so we don't need to separately
pass a level and layer.
Also removes some redundant gl:: prefixes in Texture.cpp and adds a new
helper function doesSubImageNeedInit.
Refactoring change only.
Bug: angleproject:4517
Change-Id: Ib2d8a5c9ceaada03cc8d299adcb5aed53a0cf13c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2135928
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c9c4e4ed
|
2020-04-02T10:29:52
|
|
Track rendering feedback loops by-context.
This fixes an issue where feedback loops detection would trigger false
positives based on texture use in multiple contexts.
1) there are two contexts, C1 and C2, sharing resources
2) in C1, there is a texture T bound to GL_TEXTURE_2D, and a program in
use that will sample C1
3) in C2, a framebuffer is created and T is bound to it
This fix indexes each set of active bindings in an object by ContextID.
We can potentially redo this solution in the future if this proves to
have too much tracking overhead.
Includes a test writen by Ken Russell.
Bug: angleproject:4517
Change-Id: I67012e68947c42d863dca193972576c82d5f3712
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2134406
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
1393bf9e
|
2020-02-28T22:03:27
|
|
Vulkan: Timestamp internal RenderPasses in perf tests.
This change book-ends RenderPasses in the Vulkan back-end with
timestamp queries. This allows us to write out a trace of GPU/CPU that
we can inspect in Chrome. To enable the GPU trace you can define
ANGLE_ENABLE_VULKAN_GPU_TRACE_EVENTS in ContextVk.cpp and run the
angle_perftests suite with --enable-trace.
Note that we ran into some issues with the implementation not returning
monotonic timestamps. This may be a driver bug but bears more
investigation.
Bug: angleproject:4433
Change-Id: I0e6a364367f15183068e55686549cb418aa94c2a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081380
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|