|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
b1b6a171
|
2020-03-10T14:20:36
|
|
Vulkan: Disable robustness support
Swiftshader does not currently have the ability to behave in a way
for ANGLE to support KHR_robustness. Disable for now until that
functionality is available.
Bug: angleproject:3058
Bug: swiftshader:145
Change-Id: I1c1b8147f6b9cf6f8d0da633dfe0f61ebfab5175
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2097053
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Ian Elliott <ianelliott@google.com>
|
|
33bdab77
|
2020-03-12T11:42:13
|
|
Vulkan: Handle VK image being both a GL texture and GL image
Address a shader that uses the same texture as both a GL texture
(e.g. using a sampler) AND as a GL image (e.g. using imageLoad or
imageStore). The barrier and descriptor set created by
ContextVk::handleDirtyTexturesImpl() are wrong (read-only). This is
fixed by having ContextVk::handleDirtyTexturesImpl() look up if the
image is also being used as an image texture, and if so, use the
layout that should be used in that case.
Bug: angleproject:4413
Change-Id: I75684e1cfc7ed74296802ab6e31468d81625d4a5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2099311
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
175227ba
|
2020-03-06T14:30:06
|
|
Vulkan:FramebufferVk cache draw buffer handling
Dirty draw buffers are causing cache clears on Manhattan.
Instead of clearing out the entire FramebufferVk cache when draw
buffers are dirty, reset the cache signature and regenerate it.
This change also contains a fix to make sure that we're not generating
serials for a draw buffer that's disabled.
Thanks Jamie Madill!
Bug: angleproject:4442
Change-Id: I0d48a2d6d95e74898a11bdde0fedbce77c82a3a3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2091862
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
c5b3cbdb
|
2020-03-09T16:58:37
|
|
Vulkan: Use VK_FORMAT_D24_UNORM_S8_UINT for 24 bit depth if available
And if the format we picked has extra bits, try to clear it instead
of load the value. Don't store these extra bits as values as well.
Bug: angleproject:4459
Change-Id: If5d0e31aca1453deab970d0dbcf8886a5e6ed51c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2095850
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
5d7ccc30
|
2020-03-09T14:24:30
|
|
Revert "Vulkan: Fix store ops with linear command recording."
This reverts commit a61e273ac3ca88cb95b7bebac0d31a62644049a0.
Reason for revert: Causes rendering artifacts in "Aztec Ruins".
Bug: angleproject:4444
Original change's description:
> Vulkan: Fix store ops with linear command recording.
>
> DiscardFramebuffer was being ignored in the new linear path. Fix this
> by using the correct APIs. Also cleans up some of the access to the
> "RenderPassCommandBuffer" struct in ContextVk. Add a new accessor that
> returns the RenderPass without a flush that ensures it is only called
> when a RenderPass is already started.
>
> Bug: angleproject:4029
> Change-Id: Ibd199f3a371c0f91b448a0b34c8752dc8b76c284
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057329
> Reviewed-by: Charlie Lao <cclao@google.com>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=tobine@google.com,jmadill@chromium.org,cclao@google.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:4029
Change-Id: I7d925b88c438a20ebe4a48634568addda7a64d60
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2093157
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1a5c7a16
|
2020-02-25T12:02:31
|
|
Reland "Vulkan:Include precision qualifier in GLSL"
Currently still ignoring precision qualifiers for Vulkan shaders by
default, but have added feature "enablePrecisionQualifiers" that can be
enabled in order to include precision qualifiers.
With this initial implementation, it's possible to get precision
qualifier mis-matches in the generated GLSL 4.50. According to the
spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
Precision Qualifiers":
For the purposes of determining if an output from one shader stage
matches an input of the next stage, the precision qualifier need not
match.
However, when converted to SPIR-V and run through the shader validation
any mismatches will cause shader validation errors. Initially just
ignoring those errors with this commit.
Bug: angleproject:3078
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
Change-Id: Ieecca604bb2c834c9b1c2bcab85279d1f8755dfa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086280
|
|
ca04de85
|
2020-03-03T09:59:42
|
|
Vulkan: blacklist VK_FORMAT_R8G8B8_UNORM
Chrome makes assumptions that depend on ANGLE implementing 24bit
RGB as 32 RGBX. Since that was the behavior of ANGLE for a while,
remove those formats from the VK format table to force that behavior
again.
Test: Chrome on Fuchsia
Bug: angleproject:4282
Change-Id: I22a3f07b00d7870044ed6b3326dd528721b89af8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2085043
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
|
|
f143ab1f
|
2020-03-03T17:15:38
|
|
Vulkan: Disable forceOldRewriteStructSamplers for SwS-Android
Disable the forceOldRewriteStructSamplers feature for SwiftShader on
Android. Another change fixed the issue that prevented SwiftShader on
Android from supporting sampler arrays as parameters. The Qualcomm
driver still cannot support sampler arrays as parameters, and so it
still needs forceOldRewriteStructSamplers.
Bug: angleproject:4071
Bug: angleproject:2703
Change-Id: I77fbfacdad6cd9cc918c79fa0918f15de0558ce0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2086282
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dfae826d
|
2020-03-01T16:07:49
|
|
Capture/Replay: Update getTexImage for depth/stencil and 3D
3D support based on work from ancheng.qiao@arm.com.
Test: Manhattan mid-execution capture working
Bug: angleproject:4058
Bug: angleproject:4091
Change-Id: I7f8b8542fbc1f3484a2451850db0dc752c0b8906
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070899
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
90019cea
|
2020-02-26T18:04:25
|
|
Vulkan: Add depth to mipmap generation
In generateMipmaps, remove hard coded depth of 1, shift depth
like every other dimension.
Remove MipmapsForTexture3D test pixel value check, in es spec3.2 8.14.4
"No particular filter algorithm is required, though a box filter is recommended."
It's implementation-dependent. In current angle implementation, will
choose VK_FILTER_LINEAR/VK_FILTER_NEAREST according to vkdeice support.
Bug: angleproject:3983
Test: MipmapTestES3.MipmapsForTexture3D/ES3_Vulkan
Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_max_lod
Test: dEQP-GLES3.functional.samplers.single_tex_3d.diff_min_lod
Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_max_lod
Test: dEQP-GLES3.functional.samplers.multi_tex_3d.diff_min_lod
Change-Id: I5e73f8c743053aeb521b5e0b3e372bbe77e57ad2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2076740
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f8b28678
|
2020-02-26T19:12:39
|
|
Vulkan: Add support for VK_EXT_index_type_uint8
Enable VK_EXT_index_type_uint8 Vulkan extension if supported by
VkDevice.
Bug: angleproject:4405
Change-Id: I84d030497898c5944a36d9a88a31e7377ccd5e9e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2082391
Commit-Queue: Xiaoxuan Liu <xiaoxuan.liu@arm.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b84969ad
|
2020-02-29T09:14:36
|
|
Vulkan: Use QueryHelper for internal GPU timing.
This cleans up the code. Using QueryHelper means we don't need to
duplicate the timestamp query/result code. It also means we don't need
special allocate/free functions in DynamicQueryPool.
Done while investigating timing GPU events for T-Rex.
Bug: angleproject:4433
Change-Id: I8512a5618e1dd00956942ae2d12d46d8193c4e51
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081379
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a1e5f582
|
2020-02-29T08:01:16
|
|
Vulkan: Clean up QueryHelper uses.
Makes the wrapper classes take boxed query handles. Also cleans up some
repeated code patterns. It also encapsulates the QueryHelper class more
so that the pool indexes and handles are hidden from the user of the
class.
Fixed while working on GPU trace event timing.
Bug: angleproject:4433
Change-Id: Ib6cba9c52ec956ebede9b411b70261ea5b877d7d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2081378
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
ff60abaf
|
2020-02-28T14:06:07
|
|
Vulkan:Disable FramebufferVk cache on Apple
Currently hitting a crash on Apple so disabling FramebufferVk cache.
Bug: angleproject:4442
Change-Id: I3824252210aeeaf9919c8d17730395b394a50862
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2080661
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
35785308
|
2020-02-24T17:37:55
|
|
Vulkan: reserve extra varyings
when basicGLLineRasterization or supportsTransformFeedbackExtension is enabled.
updated with MaxVaryingWithFeedbackAndGLline
adding test to validate pixel value (disabled for macos)
Bug: angleproject:4273
Change-Id: Ie3d3516fd3806c0d622fb402ba8223d302206f73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071237
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b07816d6
|
2020-01-02T15:13:37
|
|
Vulkan: Add robust init for NULL texture image.
In gl::ReadPixels(), ValidateReadPixels() will try to
flush staged updates before readPixels. In the case
where a texture was initialized with null RGBA data,
no Framebuffer dirty bits are set, and thus the staged
clear would never be flushed from the staged updates.
1. Add robust init in TextureVk::initImage to ensure
image is initialized.
Test: ./angle_end2end_tests --gtest_filter=\
RobustResourceInitTest*_Vulkan_AllocateNonZeroMemory
2. Update stageSubresourceRobustClear() to
kEmulatedInitColorValue in the case where robust resource
was initialized without full RGBA format to update
init value of robust resource.
Test: texture-attachment-formats.html in
webgl_conformance_vulkan_passthrough_tests.
3. Revert "Suppress Vulkan RobustResourceInit tests."
Revert commit a8e6a463121b9920564fb6efd7f2c857d7023fe3.
Reason for revert: re-enable related robust tests.
Bug: angleproject:4255
Change-Id: I79f20e0c02c2f1b1cd68ab590f0f765229f9e780
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1985503
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a60e4973
|
2020-02-27T20:11:20
|
|
Revert "Vulkan:Include precision qualifier in GLSL"
This reverts commit 93e72f5f0eb80b89334ea8fe577b32901a00b5fb.
Reason for revert: This is having a negative impact on gfxbench
Manhattan 3.1 tests (20-30%) with only a minor improvement (~4%) in TRex offscreen. Pulling out for now and need to re-evaluate best
solution here.
Original change's description:
> Vulkan:Include precision qualifier in GLSL
>
> With this initial implementation, it's possible to get precision
> qualifier mis-matches in the generated GLSL 4.50. According to the
> spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
> Precision Qualifiers":
>
> For the purposes of determining if an output from one shader stage
> matches an input of the next stage, the precision qualifier need not
> match.
>
> However, when converted to SPIR-V and run through the shader validation
> any mismatches will cause shader validation errors. Initially just
> ignoring those errors with this commit.
>
> Bug: angleproject:3078
> Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Tobin Ehlis <tobine@google.com>
> Reviewed-by: Tim Van Patten <timvp@google.com>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
TBR=tobine@google.com,timvp@google.com,jmadill@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:3078
Change-Id: I84984e2a963bde573f0f1de585001ceb83623c89
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2079334
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
f0d32401
|
2020-02-14T14:50:25
|
|
Vulkan: Optimize element buffer conversion
Uses CPU copy if the buffer is CPU visible. Also add dirty bit check to avoid repeated conversion on clean data
Bug: angleproject:4400
Change-Id: I1f472703ebc4a65ee0de129c27f56b081748f900
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057758
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
e488d8b8
|
2020-02-26T16:11:29
|
|
Vulkan: Implement Android pre-rotation
As an Android GLES driver on top of Vulkan, ANGLE must pre-rotate
rendering on behalf of the application. This involves modifying the
vertex shader to multiply gl_Position with a mat2 "rotation matrix".
Not doing so means that SurfaceFlinger (SF) will perform a costly
rotation blit before presenting every image. Setting
WindowSurfaceVk::mPreTransform to mCurrentTransform tells SF to not do
the blit.
When the surface is rotated 90 or 270 degrees, the width and height
must be swapped for:
- The swapchain images, and for any depth, stencil, and/or multisample
attachments used with the swapchain image.
- The viewport, scissor, and render area.
Because the Metal back-end shares the TranslatorVulkan, it will define
the same preRotation (mat2) DriverUniform that is used for Vulkan.
Bug: angleproject:3502
Change-Id: I968dbe8869ba0f50de18dd41f1195e847c06b545
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2038272
Commit-Queue: Ian Elliott <ianelliott@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c79b0ea5
|
2020-02-25T08:26:23
|
|
Vulkan: Document command access APIs.
Includes a short description of the ContextVk command APIs.
Also a few small cleanups to other Vulkan back-end documentation.
Bug: angleproject:4029
Change-Id: I3bd04861f27b718e6a94fdae00644c124452bc62
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2070597
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
93e72f5f
|
2020-02-25T12:02:31
|
|
Vulkan:Include precision qualifier in GLSL
With this initial implementation, it's possible to get precision
qualifier mis-matches in the generated GLSL 4.50. According to the
spec this is allowed. From GLSLangSpec 4.50 section 4.7 "Precision and
Precision Qualifiers":
For the purposes of determining if an output from one shader stage
matches an input of the next stage, the precision qualifier need not
match.
However, when converted to SPIR-V and run through the shader validation
any mismatches will cause shader validation errors. Initially just
ignoring those errors with this commit.
Bug: angleproject:3078
Change-Id: Ia2b04f90f0a7b6b1302c1b1b3e32bcfd8db9ed49
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057749
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
8aea6d5a
|
2020-02-25T11:22:00
|
|
glslang: enforce initialize and release as once per process
Bug: angleproject:4354
Change-Id: Ice0912a90d4e9a4fe3fdaf67d67292afc0eba8a2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2073201
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
916d204c
|
2020-02-25T14:18:38
|
|
Vulkan: Use new APIs in BufferHelper::copyFromBuffer.
We shouldn't need to special case the barrier logic in this function
any more. Instead use the 'onBufferRead' and 'onBufferWrite' APIs.
Bug: angleproject:4029
Change-Id: I7f67b67aa312d9ae64172b40d73086b7772d49d2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071143
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
660c0dd6
|
2020-02-25T13:30:33
|
|
Vulkan: Fix padding out Buffer allocations on AMD.
We would often pad incorrectly given the constraints of the max stride.
We shouldn't really be rounding up the buffer size, but we should
instead be adding the max alignment size to the end of the buffer.
Bug: angleproject:4428
Change-Id: Id2afc572c85985548a18f60b42cdc388d83d5c4c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071235
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5b7ce876
|
2020-02-25T09:52:05
|
|
Vulkan: Update buffer accumulation TODO bug IDs.
Bug: angleproject:4029
Bug: angleproject:4429
Change-Id: Ice4ae48a92e376ea916f05d1433a68f3accc09d5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2071145
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
46cb0f62
|
2020-02-21T11:38:17
|
|
Vulkan: prevent volk reloading on null instance and devices
Bug: angleproject:4419
Change-Id: I82f9bb157e88754efd074358dccef1bb82cab0f7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068902
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
aa09ca69
|
2020-02-24T13:33:30
|
|
Vulkan: Update ContextVk command buffer access methods.
Use the following names:
- flushAndBeginRenderPass
- endRenderPassAndGetCommandBuffer
- flushAndGetPrimaryCommandBuffer
This clarifies that a flush is part of the method.
Bug: angleproject:4029
Change-Id: I6c870761339ea7aa39c83142200781ba39ad6a4b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068129
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
b5576b67
|
2020-02-21T20:44:42
|
|
Vulkan: Fix pipeline stage when waiting on a semaphore
Using VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT in pWaitDstStageMask doesn't
create a dependency, since no memory is accessed during that stage.
Switch to VK_PIPELINE_STAGE_ALL_COMMANDS_BIT to synchronize all accesses.
This fixes flickering observed in WebGL on ARM GPUs when composited using
Vulkan in Chromium.
Bug: angleproject:4422
Change-Id: I37da461c03dbf52f8658408b159c2b173cccd0b3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2068906
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Michael Spang <spang@chromium.org>
|
|
a741abb9
|
2020-02-21T16:37:37
|
|
Vulkan: Rename CommandGraphResource to Resource.
Also renames the h and cpp files to ResourceVk (to keep distinct from
other resource.h/cpp files) and renames 'onResourceAccess' to 'retain'.
Cleans up a few remaining mentions of the command graph in comments.
Bug: angleproject:4029
Change-Id: Ifc8e880c8cea3fc48a4aec4730191c88aa35a076
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065920
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
c4197713
|
2019-06-03T19:23:02
|
|
Implement glImportMemoryZirconHandle & glImportSemaphoreZirconHandle
Implement import of fuchsia external objects passed by zircon handle. This
works exactly the same as with file descriptors.
Bug: angleproject:3492
Change-Id: I4d46917dfc5902f00c94550158a9f8073097f0a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1642334
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d3aad0f4
|
2020-02-20T08:59:58
|
|
Vulkan: Remove command graph size overlay widget.
No longer applicable without the command graph.
Bug: angleproject:4029
Change-Id: If75e3aca56eb18567074e14ceb23b3fd7a0afb3d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065919
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
c58458e6
|
2020-02-19T14:51:41
|
|
Vulkan: Remove CommandGraph code.
Also updates relevant comments to no longer refer to a graph.
Bug: angleproject:4029
Change-Id: Ic29716e9ae4926870f902947d49d8fee7af98662
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057804
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
94ec1e5f
|
2020-02-19T15:29:54
|
|
Vulkan: Update shader compilation documentation
Bug: angleproject:3394
Change-Id: If8df97644d07f258a8f1ea1bde6b6b3572f6d024
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2062745
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
e4ba2d87
|
2020-02-20T16:05:02
|
|
Pass ContextVk instead of gl::Context to internal methods
Minor cleanup to change funciton signatures of vulkan specific methods in
MemoryObjectVk & SemaphoreVk.
Bug: angleproject:2475
Change-Id: I230664548004ebc48b559e0f25264ea948ce5a1f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2067500
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ce4918f1
|
2020-02-19T09:39:44
|
|
Vulkan: Sanitize Images & Buffers with non-zero values.
Only enabled for specific tests at the moment. This CL allows our tests
to sanitizes memory for the robust resource access extension. It is
quite slow so should not be enabled by default.
Only works for 1 level 2D color textures and buffers. Makes several
flaky robust resource initialization tests consistently fail.
Controlled via an angle::Feature in FeaturesVk.
It works by initializing memory to an abitrary non-zero value:
- if newly allocated memory is mappable, we map it in init and set it
- if a buffer or texture can be a transfer destination, we use a
staging resource
- otherwise we don't attempt to initialize the resource.
Bug: angleproject:4384
Change-Id: I9b4f347bfcddf3096f491ed0243bef86837feaa0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2043271
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
3352d492
|
2020-02-19T17:41:24
|
|
Vulkan: Add command stream diagnostics when graph is disabled.
Very simple diagnostics that prints out the command stream. Since there
is very little deferral right now the graph itself became quite a bit
simpler.
Also fills in some missing values in the switch that prints the command
name string.
Bug: angleproject:4029
Change-Id: Ib64a7fed6f9f56ce406cc7dbc6cc993ed510e2cb
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065530
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
cf2ec3b1
|
2020-01-31T16:55:50
|
|
Vulkan:Add FramebufferVk cache
This adds a FramebufferVk cache. Cache signature is based on unique Serial
values that are assigned to ImageHelper objects backing all color and DS
rendertargets as well as level/layer values unique to the imageView.
Update the Serials and cache signature at FramebufferVk::syncState() time.
L0 cache is a currently active framebuffer.
L1 cache retrieves previously created framebuffer from new cache.
If neither of those hit, create new FramebufferVk and add to L1.
Bug: angleproject:4322
Change-Id: I3f585271798ddfb9e5f194020adca8cf8a6b19dd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2033869
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
709f6285
|
2020-02-20T08:56:17
|
|
Vulkan: Enable FenceNV extension without graph.
Bug: angleproject:4029
Change-Id: I6b3f469b692010e373b9c82b689966da98b8a6cc
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065918
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0aab41b7
|
2020-02-20T08:39:10
|
|
Vulkan: Make mapped memory available with graph disabled.
This copies functionality out of the command graph path. A preemptive
barrier ensures we don't need to issue an availability barrier when we
need to map buffer memory.
Bug: angleproject:4029
Change-Id: I868ce8bdb3c452dccf35cc9e70adf81ad7905c66
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065917
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
a61e273a
|
2020-02-19T14:51:40
|
|
Vulkan: Fix store ops with linear command recording.
DiscardFramebuffer was being ignored in the new linear path. Fix this
by using the correct APIs. Also cleans up some of the access to the
"RenderPassCommandBuffer" struct in ContextVk. Add a new accessor that
returns the RenderPass without a flush that ensures it is only called
when a RenderPass is already started.
Bug: angleproject:4029
Change-Id: Ibd199f3a371c0f91b448a0b34c8752dc8b76c284
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057329
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4864413b
|
2020-02-17T15:34:33
|
|
Vulkan: Implement eglWaitNative function
Implement eglWaitNative API. It will call XSync() on XCB and
do nothing on other systems.
Bug: angleproject:4281
Change-Id: I597b75124a380df519ab10af3cab9b6e26f3194f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2059620
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
32101999
|
2020-02-19T15:50:29
|
|
Vulkan:Skip appendToStartedRenderPass()
In the case where command graph is disabled, we don't need to call
appendToStartedRenderPass().
Bug: angleproject:4029
Change-Id: I9b9d1ad666a903fcb63ab394944cfe7adb836a08
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065708
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
bb654cf8
|
2020-02-15T23:54:44
|
|
[fuchsia] Migrate to SDK-provided FIDL & package targets.
Bug: chromium:1050703
Change-Id: I7c031f4501b567fde117c30b25f0bc071d4acc44
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2058948
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0a9c0b7b
|
2020-02-19T14:55:04
|
|
Vulkan: Fix image queue changes with graph disabled.
These again weren't being tested on the CQ. Probably necessary for some
image sharing scenarios.
Bug: angleproject:4029
Change-Id: Iccbebf127e2ec6fdb74dd213998674fff77b75b2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2065529
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Michael Spang <spang@chromium.org>
|
|
4b7bac78
|
2020-02-15T12:17:12
|
|
Vulkan: Throttle when way ahead of device.
This CL adds a fence wait when we get more than 100 serials behind the
device. This fixes an ASSERT when unit tests or offscreen performance
tests get way ahead of the device.
Bug: angleproject:3630
Bug: angleproject:4281
Change-Id: I90f9af1b2ceb2b1cd9f2f638d6d84caaeeb83bb1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057351
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Ian Elliott <ianelliott@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
efd2a669
|
2020-02-15T08:45:46
|
|
Vulkan: Command graph linearization for SemaphoreVk.
This doesn't seem to be tested in the default CQ configuration.
Bug: angleproject:4029
Change-Id: If0acd5c78602324433b63498e2de8c16881023de
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057354
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Michael Spang <spang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2dd40d7f
|
2020-02-15T07:32:26
|
|
Vulkan: Free pool allocation leak with graph disabled.
Our secondary command buffer pools were leaking memory every submit.
This change pops the secondary command buffer pool allocator scope
after commands are flushed during a submit.
Fixes the memory leak observable on any Vulkan application.
Bug: angleproject:4029
Bug: angleproject:4403
Change-Id: I3d0f8d53456336ef0b03c6d37425fb76c88d1551
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057349
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
798a8375
|
2020-02-14T12:48:21
|
|
Vulkan: Add more debug labels handling with graph off.
Bug: angleproject:4029
Change-Id: Ia3c88af5f9fa1a7940d7f809ded599c064126be7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055555
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
|
|
12a36dd9
|
2020-02-14T12:48:20
|
|
Vulkan: Add debug utils functions to wrapper.
Also adds a more consistent way of checking if the debug utils
extension is enabled.
Enables adding support for the debug utils markers with the command
graph disabled.
Bug: angleproject:4029
Change-Id: I5f8762921b06f54e400c25764012ab70e10bfb8d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055554
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|