Prior to this commit, when "OpName %id name" was encountered, the info
corresponding to "name" was immediately associated with %id. This is
not necessarily correct because there could be multiple ids with the
same name. For example a sampler declaration and an unrelated function
argument could have the same name. In this case, the sampler
declaration and function argument name don't even need to be in the same
shader stage.
This change modifies the SPIR-V transformation such that the name-id
mapping is tracked until the OpVariable instruction that actually
declares the variable is visited. The mapping to variable info is only
done if the storage class specified in this instruction corresponds to a
shader interface variable.
Bug: angleproject:3394
Change-Id: I35a1f6f8278e4b1ad81c9955a55e1b72d6f2e4ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057248
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
This is essentially the same commit as fed0dda, but with the BaseVertex variant.
Bug: angleproject:4373
Change-Id: I2d6fe46a0e8ce5faa8c92d4db6909f8cabd9692f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2032972
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Charlie Lao <cclao@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This reverts commit f6e73131c5.
Reason for revert: Crashes on Win10 FYI x64 Debug (NVIDIA) and Win7 FYI Debug (AMD) in the webgl CTS
Original change's description:
> Move sampleAlphaToCoverage out of blendState
>
> This is the second step towards exposing OES_draw_buffers_indexed (that defines independent blend state for each draw buffer). This flag is global in all graphics APIs, however D3D11 technically puts it in the blend state.
>
> D3D11: BlendStateKey was extended to keep existing D3D11 state caching semantics.
>
> D3D9: a comment was added explaining why this feature was never implemented there.
>
> Bug: angleproject:4394
> Change-Id: Ie6a294eeb6fcf4c868a1f1001c4f7efd61692ccd
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057063
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,lexa.knyazev@gmail.com
Change-Id: I650624b5dfb7f2777c316906b9145a411243f42f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:4394
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2062605
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
This reverts commit 123fd97000.
Reason for revert: Causes GL creation failure on Linux FYI Ozone (Intel)
Original change's description:
> Provide default implementation of rx::DisplayEGL
>
> Will allow to use EGL instead of GLX on X11.
>
> Meant to be used on modern EGL so it requires the extensions
> EGL_KHR_no_config_context and EGL_KHR_surfaceless_context.
> This keeps the default implementation simple (no pBuffer
> fallback)
>
> Also provide simple WorkerContextEGL.
>
> Bug: angleproject:4328
> Change-Id: I92a1ded9e09e65de8bb83710274e0a73ecdff0a4
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2061168
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,julien.isorce@chromium.org
Change-Id: Ia55180ed83386fe1a158ccefda6155b33d779e98
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:4328
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2062604
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Will allow to use EGL instead of GLX on X11.
Meant to be used on modern EGL so it requires the extensions
EGL_KHR_no_config_context and EGL_KHR_surfaceless_context.
This keeps the default implementation simple (no pBuffer
fallback)
Also provide simple WorkerContextEGL.
Bug: angleproject:4328
Change-Id: I92a1ded9e09e65de8bb83710274e0a73ecdff0a4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2061168
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
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>
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>
This is the second step towards exposing OES_draw_buffers_indexed (that defines independent blend state for each draw buffer). This flag is global in all graphics APIs, however D3D11 technically puts it in the blend state.
D3D11: BlendStateKey was extended to keep existing D3D11 state caching semantics.
D3D9: a comment was added explaining why this feature was never implemented there.
Bug: angleproject:4394
Change-Id: Ie6a294eeb6fcf4c868a1f1001c4f7efd61692ccd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057063
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Previously the validation layer would create the query if not created.
This change should be a no-op that makes the validation layer work in
a more "const-friendly" way.
Bug: angleproject:1280
Change-Id: Ife0c216c8a0dcda2a33d1182821c51e4ed5f67e0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2060688
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
If limit texture size to a small number, application may
need to reshape texture, lead to more discontinuous
memory access and performance loss.
Bug: angleproject:4086
Change-Id: I502a90535c2e3d13738e23827f4712a77987585e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1934048
Reviewed-by: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
When destroying SurfaceMtl, the CAMetalLayer should detach from its
super layer, otherwise memory leak could happen.
This memory leak caused the end2end tests to ran out of memory.
Bug: angleproject:2634
Change-Id: I8ea91cccdb42cf0ae8ef807cf01f1e05043dc7c1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2060250
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
This reverts commit e82ab75a4c.
Reason for revert: crbug.com/1052772
Original change's description:
> Provide default implementation of rx::DisplayEGL
>
> Will allow to use EGL instead of GLX on X11.
>
> Meant to be used on modern EGL so it requires the extensions
> EGL_KHR_no_config_context and EGL_KHR_surfaceless_context.
> This keeps the default implementation simple (no pBuffer
> fallback)
>
> Also provide simple WorkerContextEGL.
>
> Bug: angleproject:4328
> Change-Id: I825c6998e4a3727a13e533ede3d9fb1820edc804
> Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2031699
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=geofflang@chromium.org,syoussefi@chromium.org,jonahr@google.com,jmadill@chromium.org,julien.isorce@chromium.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: angleproject:4328
Change-Id: I62436cad1e6aae0c5e072acb1dab0bd10b2cf722
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2058952
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
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>
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>
Since ASSERT() works in Release builds.
Left assert() in a few places where calling a function may not be safe.
Bug: angleproject:4396
Change-Id: Ic75a3d41d846e327097f8c37fe2336dcd3be6cb8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057745
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
This is necessary for the new Vulkan implementation.
Bug: angleproject:4029
Change-Id: I07ef54145252ff102c74179361436587bb330fc7
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055553
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
This test no longer fails with any recent drivers.
Bug: angleproject:4276
Change-Id: I7a20ee66f1da82d0f378848ccc9faa327a4ed63a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2057065
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
2 minor issues of reading from uninitialized memory in tests.
Removes the suppressions from the fixed tests.
Bug: chromium:1029378
Change-Id: I466ce231cfed1ce53a60732706c05b778b096805
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2055649
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
This reflects the most recent conformance run on Android with SwiftShader.
Bug: angleproject:4106
Bug: angleproject:4108
Bug: angleproject:4188
Bug: angleproject:4190
Bug: angleproject:4240
Bug: angleproject:4300
Bug: angleproject:4312
Change-Id: I0107262eecc963a8d5343a53806bb0483b5af3be
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2054068
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Tim Van Patten <timvp@google.com>
This sets ContextVk::mRenderPassCommandBuffer properly when glClear get
called so that it wonr end up start anotyer render pass during setupDraw
call.
Bug: angleproject:4395
Change-Id: Id2110719ad4d70b4c410062466d32381fb5e1f88
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2050966
Commit-Queue: Charlie Lao <cclao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
When a buffer is mapped writable by the host, we need to
track its final contents, and then restore them during replay.
This implementation just blindly captures the whole mapped
range if writable, and can be optimized in the future.
This change renders the moving billboards in Manhattan correctly.
Test: First 500 frames of Manhattan and TRex
Bug: angleproject:4091
Change-Id: I5f7775235f569efb264bde679fd3045d7012c622
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2053512
Commit-Queue: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Courtney Goeltzenleuchter <courtneygo@google.com>
Will allow to use EGL instead of GLX on X11.
Meant to be used on modern EGL so it requires the extensions
EGL_KHR_no_config_context and EGL_KHR_surfaceless_context.
This keeps the default implementation simple (no pBuffer
fallback)
Also provide simple WorkerContextEGL.
Bug: angleproject:4328
Change-Id: I825c6998e4a3727a13e533ede3d9fb1820edc804
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2031699
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>