|
f92fc916
|
2019-07-15T22:39:23
|
|
Vulkan: Compute shader support
A DispatchHelper class is created as the equivalent of FramebufferHelper
as a command graph resource. There's currently a single dispatcher and
all dispatch calls are recorded on that. Context dirty bits are set up
in such a way that graphics and compute workloads are independently
handled, so that issuing a dispatch call wouldn't cause a framebuffer's
render pass to rebind resources.
Bug: angleproject:3562
Change-Id: Ib96db48297074d99b04324e44b067cfbfd43e333
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1688504
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
60e2f11e
|
2019-07-11T14:56:47
|
|
Rename StaticType's kInstance to instance.
This is more than just a noop: when ANGLE is rolled in Chromium it is
tested by the Android Binary Size trybot. This trybot runs an analysis
pass that checks that any new variable names "kSomthing" is in .rodata
or .data.rel.ro because it helps keep the binary size (and the size of
each new Chromium process) small on Android.
The analysis picks up new usages of StaticType::Helpers::kInstance as a
new constant varaible that isn't in .data.rel.ro or .rodata. My
understanding is that kInstances isn't put in those segments because it
contains a TType that has a "mutable" field so it would be incorrect to
put the variable in a read-only segment.
BUG=chromium:981610
Change-Id: I36e550e066206df3404619f1d012b183cbb72fe4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1698202
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1d672749
|
2019-07-08T15:42:05
|
|
WGL implemetation for OpenGL tutorial
Fixes to make WGL implementation work with OpenGL tutorial
- Give directive parser the correct shader spec when on Desktop GL
- Minor changes to parse Desktop GL shaders
- Moved clientType parameter from Context to Context->mState
- Minor fixes to WGL functions
Bug: angleproject:3666
Change-Id: I01ddb828f6d581ad445f49942589436849eae5d9
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1693244
Commit-Queue: Clemen Deng <clemendeng@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cdab03aa
|
2019-06-18T17:24:54
|
|
Add flags to shader translator to emulate gl_BaseVertex and gl_BaseInstance
Adds support for translating gl_BaseVertex and gl_BaseInstance for implementation of
GL_ANGLE_base_vertex_base_instance.
They will only be available in WebGL 2. Since there's no gl_VertexID and
gl_InstanceID in WebGL 1. It won't be very useful to add them to WebGL
1.
Mostly follow pattern of gl_DrawID of GL_multi_draw
BUG=angleproject:3402,chromium:891861
Change-Id: Ifcd990c52d12f6814127b904e61a779b8d382e0c
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1666361
Commit-Queue: Shrek Shao <shrekshao@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5dfad811
|
2019-07-02T13:23:27
|
|
Vulkan: GLSL output support for SSBO memory qualifiers
Makes the QUALIFIER macro take arguments similar to LAYOUT, to allow
passing in tokens to be conditionally output after the storage
qualifier.
Bug: angleproject:3561
Change-Id: I4368eba2c34c1398f81d33cd23c9e56557fd4ed8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1685876
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6d37651a
|
2019-06-26T13:13:09
|
|
Vulkan: dFdy is incorrect when the framebuffer is flipped
To account for framebuffer flipping, `dFdy()` expressions
must be changed to:
dFdy() * ANGLEUniforms.viewportYScale
Bug: angleproject:3487
Test: dEQP-GLES3.functional.shaders.derivate.dfdy.*
Change-Id: I38f25ba37fb8c5ae61cee5ac911df88ec4a93fef
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1678404
Commit-Queue: Tim Van Patten <timvp@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
b7418a17
|
2019-07-03T13:53:11
|
|
Restore flatten invariant behavior
This was removed with a previous commit to fix behavior of invariant
pragma overall, however, the flattening is still needed for the initial
translation step of webGL VSs.
This change restores the flattening as it previously existed, however it
is now only applied to VS outputs. FS inputs are no longer flattened as
the previous fixes preclude the need for that workaround any longer.
Bug: 980675
Change-Id: Ia3c0471e24cae2905eb0d7bde153091e4d3829b4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1687788
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
4fbbdb15
|
2019-06-28T14:17:13
|
|
texture3D: Compiler changes for sampler3D
Bug: angleproject:3188
Change-Id: Iac1408f8b91c6a6610a63cef236205b7dcdbd2c4
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1682781
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Cody Northrop <cnorthrop@google.com>
|
|
0bfa5504
|
2019-06-03T10:40:10
|
|
Vulkan: Emulate Transform Feedback with vertex shader output
In ES 3.0 and 3.1, only non-indexed GL_POINTS, GL_LINES and GL_TRIANGLES
is supported for transform feedback. Without tessellation and geometry
shaders, we can calculate the exact location where each vertex transform
output should be written on the CPU, and have each vertex shader
invocation write its data separately to the appropriate location in the
buffer.
This depends on the vertexPipelineStoresAndAtomics Vulkan feature.
Bug: angleproject:3205
Change-Id: I68ccbb80aece597cf20c557a0aee842360fea593
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1645678
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
1245f078
|
2019-06-25T13:51:29
|
|
Use D3D11 GetDimensions driver workaround for dynamic images
Some NVIDIA D3D11 drivers are buggy and interprets the level passed to
GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip.
This affects the implementation of the imageSize function in the D3D11 backend.
Bug: angleproject:3100
Change-Id: I1e48f5df5e40caf49a4d07662aec587e98cf8388
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1677206
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c75d6dc8
|
2019-06-05T16:12:01
|
|
Vulkan: Add support for gl_VertexID/gl_InstanceID
Adds support for GLES 3.0 feature which adds gl_VertexID and
gl_InstanceID built-in variables to vertex shader.
Bug: angleproject:3221
Change-Id: I372d7ac34bed376b506e327725f0eca2513852fa
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1646735
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5643afc0
|
2019-06-04T15:37:58
|
|
Vulkan: add GLSL placeholder for transform feedback output
Bug: angleproject:3205
Change-Id: Id3941b6953e03e7b2183acc57b2c6db4a6439352
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1643424
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0730e630
|
2019-05-31T14:25:37
|
|
Fix needStructMapping
In previous logic, we didn't check the structure field member type. So
when passing the non-struct member of a structure to a function, it
would think that struct mapping was needed.
In this patch, we add more checking so that struct mapping only happens
when there are structure copy or passing a structure to a function.
BUG=angleproject:2967
Change-Id: Ic98e884c8f8540e180cdf40a0e036ffef18c1689
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1638227
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
262e2824
|
2019-05-20T14:24:40
|
|
Use D3D11 GetDimensions driver workaround for 3D textures
Some NVIDIA D3D11 drivers are buggy and interprets the level passed to
GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip.
This affects all integer format textures, because the dimensions are used for
sample position calculations with integer format textures, which leads to
sampling outside texture when the base level is non-zero.
Bug: angleproject:3441
Change-Id: Ic54328e3d712e28a40efb4e63b8fce0baeb4ef42
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1619785
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
69d04939
|
2019-05-20T14:04:13
|
|
Use D3D11 GetDimensions driver workaround for 2D array textures
Some NVIDIA D3D11 drivers are buggy and interprets the level passed to
GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip.
This affects all integer format textures, because the dimensions are used for
sample position calculations with integer format textures, which leads to
sampling outside texture when the base level is non-zero.
Bug: angleproject:3441
Change-Id: Ic012cac94ce0a627221087ecb2ee6aa3665900d1
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1617780
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3fe06eb3
|
2019-05-21T17:37:25
|
|
D3D: Make sure Lod0 functions are never referenced in non-fragment shaders.
The lod0 functions would not be declared but could still be referenced by
vertex shaders.
BUG=angleproject:3471
Change-Id: I635a8465ce68dc22a6f7387b30bf7e93b14dd67d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1622741
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
|
|
d9fa0744
|
2019-04-25T14:57:26
|
|
Emit OVR_multiview2 on ESSL/GLSL outputs.
Add ARB_shader_viewport_layer_array support to
SH_SELECT_VIEW_IN_NV_GLSL_VERTEX_SHADER.
Bug: angleproject:3404
Change-Id: Ia89517d0cc92400ce47c9118e8c1abf8285aec41
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1585452
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e4452440
|
2019-05-09T13:29:49
|
|
Fix integer cube map sample HLSL calculation
This patch fixes two issues in the HLSL generated to sample an integer cube map.
The first issue was that an inappropriate major axis was selected when sampling
from corners of the cube map. In particular, the added test case demonstrates a
situation where a major axis of length 0 was selected, which lead to an infinite
LOD being calculated. The fix was to adjust inequalities such that always
exactly one of xMajor, yMajor and zMajor is true.
The second issue was that the derivative functions ddx and ddy were being used
on values that depended on the choice of major axis, which is not continuous at
the corners of a cube map. This lead to a finite but incorrect LOD being
calculated. The fix was to make sure major axis choice is not included when
estimating the scaling factor.
Bug: angleproject:3442
Change-Id: Ia3eb8c89f47d1bfdadc18aec989e8cbebc088ec0
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601515
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
04e389d1
|
2019-05-14T07:14:25
|
|
Vulkan: make sure default uniforms are in std140
Bug: angleproject:3199
Change-Id: I29fdf33ea5af37a66c2cfd5b3355d7ff32105d63
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1614781
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
60cc751a
|
2019-05-06T09:25:27
|
|
Use D3D11 GetDimensions driver workaround for integer cube maps
Some NVIDIA D3D11 drivers are buggy and interprets the level passed to
GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip.
This affects integer cube maps because the dimensions are used for sample
position calculations, which leads to sampling outside the cube side textures
when the base level is non-zero.
Bug: angleproject:3441
Change-Id: I151f9336b9c6d8ec7012bf5010a2d45fb2951e73
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595688
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
311e8086
|
2019-05-15T13:25:56
|
|
Do struct mapping under conditions
Struct mapping consumes lots of time when the array lengh is very large.
And it's done unconditionally. This CL does struct mapping only if it's
a struct assignment or passing the struct to a function.
In the next step, we can use a function to do struct mapping instead of
struct array initialization.
Bug: angleproject:2967
Change-Id: Ie5a74fa05dbc0255ad664d6265dbb880a624f01e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1612978
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
38ff3c70
|
2019-05-15T10:07:09
|
|
Vulkan:Allow same-named var in nested scope
ESSL 1.00 spec allows for variable with same name to override outer variable
inside of a nested scope. This change adds new scope to symbol table inside
of a function defintion, but after function parameters for ESSL 1.00
shaders (but not webGL). This prevents an error while parsing.
This also includes some new code in translator to rename any vars that are
redefined between the function body and the function parameters. This
prevents an error later on when the translated shader is then parsed as
a desktop GLSL version.
Bug: angleproject:3287
Change-Id: I3f025805cf8d65bf912283bb15e6dad6e5e9b967
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1601553
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
9d519ab1
|
2019-05-09T23:09:46
|
|
Vulkan: Rework layout block storage conversion
Previously, a pass over the shader was made, converting shared and
packed interface blocks with block storage to std140. This resulted in
link success between interface blocks with different storage as they
were all translated to std140.
With this change, this pass is removed. The link step proceeds with the
block storage specifiers as seen by GLES, and only upon Vulkan GLSL
shader generation "shared" and "packed" are converted to std140.
Bug: angleproject:3199
Change-Id: I069415ab9c9b4e1034bc00f64cd2d9e2d73f5956
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1605262
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fdbece20
|
2019-05-09T18:06:34
|
|
Vulkan: Support unsigned int uniform types
Bug: angleproject:3198
Change-Id: Iac5d1389f4f466b7886246d8ca529e8f26a6a5bd
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1603629
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
5517ce95
|
2019-05-07T00:27:06
|
|
Vulkan: fix qualifier erase for unused vertex attributes
Bug: angleproject:3219
Change-Id: I8f8f5572eed5126ab03702953883b313f022a264
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1598548
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ebab670c
|
2019-04-19T14:36:45
|
|
Adding new extension GL_OVR_multiview
GL_OVR_multiview functions exactly the same as GL_OVR_multiview2.
All GL_OVR_multiview2 tests now also repeat the same test using GL_OVR_multiview
Bug: angleproject:3341
Change-Id: I7e5294fb6bbf7692535174a15da6a42e1b5fc4e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1575904
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e9421b2c
|
2019-04-08T15:16:56
|
|
Vulkan:Only apply invariant pragma to output vars
The "#pragma STDGL invariant(all)" directive should only be applied to
shader output vars. This change also removes the workaround
SH_DONT_REMOVE_INVARIANT_FOR_FRAGMENT_INPUT which is no longer needed.
This change fixes two tests that were incorrectly assuming that the
pragma would be applied to inputs: GLSLTest.InvariantAll[Both|In].
Bug: angleproject:1293
Bug: angleproject:3285
Change-Id: I4eb03fa89fbc7c560150ee0cc32382024b0cb3e3
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1558678
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
216f73d0
|
2019-04-12T13:32:30
|
|
Vulkan: add uniform buffer object support
Support for layout qualifiers in interface blocks are added. All
interface blocks are adjusted to either be in std140 or std430.
In the Vulkan backend, a new descriptor set is added for UBOs. A dirty
bit is added for UBO updating and pipeline layouts and descriptor
bindings are updated.
Bug: angleproject:3199, angleproject:3220
Change-Id: I271fc34ac2e1e8b76dee75e54a7cff0fe15fe4ee
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1565061
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f6cbe44a
|
2019-04-18T15:32:07
|
|
Use D3D11 GetDimensions driver workaround for 2D integer textures
Some NVIDIA D3D11 drivers are buggy and interprets the level passed to
GetDimensions as being relative to 0, rather than the SRV's MostDetailedMip.
A test is added which reads from non-zero base level integer texture. When the
workaround is not being used, reads outside the first quadrant return black.
Bug: chromium:679639
Change-Id: I5282a1ba207b2d553d1836f9460ec09cb5590ea6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1591594
Commit-Queue: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
Reviewed-by: Kimmo Kinnunen FI <kkinnunen@nvidia.com>
|
|
d7d42395
|
2019-05-06T13:15:35
|
|
Format all of ANGLE's python code.
BUG=angleproject:3421
Change-Id: I1d7282ac513c046de5d8ed87f7789290780d30a6
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1595440
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
8ba78da0
|
2019-04-30T23:42:31
|
|
add support for EXT_blend_func_extended to D3D11
Change-Id: Id66868851a490d0a68a7e76280720825c4844a45
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1591192
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
62742f9e
|
2019-05-01T16:14:50
|
|
Vulkan: Optimize shader source macro replacement
@@ LAYOUT-xx @@ and @@ QUALIFIER-xx @@ macros are generated by the
compiler when emitting Vulkan GLSL. These macros are replaced at link
time in the Vulkan backend.
Previously, this replacement was done through calls to
angle::ReplaceSubstring, reiterating over the whole source on every
replacement. This CL does a prepass on the input source and chunks it
up in blocks. Search is optimized as only blocks of a certain type are
string-compared (skipping large chunks of shader text). Replace is
optimized as the whole shader is not shifted left or right on every
replacement.
Additionally, this CL modifies the layout macro to the following format:
@@ LAYOUT-xx(extra, args) @@
This is used in a follow up CL to have the compiler provide additional
layout qualifiers.
Bug: angleproject:3220
Change-Id: I6367e781c3304d5f2e0a406e4fb4e6feb4c45f1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1592070
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
e25ff9d8
|
2019-05-01T00:02:05
|
|
Vulkan: Fix qualifiers for varyings
`out` variables in the vertex shader and `in` variables in the fragment
shader were not decorated with `layout(location=?)` as they should
according to the Vulkan GLSL spec. This change makes sure these
decorations are present regardless of whether the compiler sees these
variables as EvqVaryingIn/Out or EvqVertexOut/FragmentIn.
Bug: angleproject:3412
Change-Id: I66473e876cb989a60b0c6d6a5850a8b2c763d8e2
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1590694
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
80147d11
|
2019-04-30T16:21:24
|
|
Add support for dynamically allocate initial stack for Angle
By updating YYLTYPE_IS_TRIVIAL to true, YYSTACK_RELOCATE can be enabled, so
we can dynamically allocate stack size based on needs.
BUG=angleproject:3028
Change-Id: I1b9cc0768cd0c6955589695e703595c56d43f24a
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1593954
Commit-Queue: Yi Xu <yiyix@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7d64c486
|
2019-03-12T14:27:40
|
|
GL_ANGLE_multiview has been renamed to GL_OVR_multiview2.
changes include:
1) GL_OVR_multiview to GL_OVR_multiview2 extension directive change
2) Removal of all references to side by side. We no longer support multiple views in a single 2DTexture. Only 2DTextureArray's are supported
3) WebGL 2 (ES3) is required for multiview
Bug: angleproject:3341
Change-Id: Ie0c1d21d7610f8feebdb2e4d01c6947f57e69328
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1552023
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ee7ffd9e
|
2018-12-13T14:07:52
|
|
ES31: Enabling skipped deqp atomic counter tests on D3D11
Enabling deqp tests previously skipped due to lack of atomic counters. Fixing
bug found in translator found by new tests.
* Switching atomicCounterDecrement from pre to post decrement
* Added 4 byte alignment check to atomic_uint offset
* Added workaround for NVIDIA D3D bug
* Added globallycoherent to atomic counters
Bug: angleproject:1729
Change-Id: If62ea003826fbe2df0834b905ff3ad7b76328399
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1480867
Commit-Queue: Enrico Galli <enrico.galli@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
0e2c39f2
|
2019-03-20T15:17:28
|
|
Fix that uniform can't be used as the index of buffer variable
ssbo.a[uniformBlock.index] should be a valid usage. So in this change,
we forward EOpIndexDirectInterfaceBlock to OutputHLSL to process when
the left node is not a SSBO.
Bug: angleproject:3280
Change-Id: I2696d5b1cf420db133a8ba0728116261dd9e9f1e
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1531980
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
eaf56133
|
2019-03-13T12:56:49
|
|
gl_VertexID is incorrect if offset argument to glDrawArrays is non-zero
On D3D the vertex ID is always indexed from 0, unlike GL. The D3D
backend had assumed the wrong behavior. This forwards the true offset to
D3D by using the ConstantsBuffer.
Bug: angleproject:3090
Change-Id: Ia19e3490503c97541af14979b75af0c94c67ab6b
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1520988
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c9bc33cf
|
2019-03-04T17:31:05
|
|
Disable the initialization of shared memory
This patch disables the initialization of shared memory for d3d backend.
The initialization of shared memory is very slow and may produce
incorrect behavior for some compute shaders on d3d backend.
Bug: angleproject:3226
Change-Id: I41f0f061a5611c52af7667f23938fa48819906b5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1498385
Reviewed-by: Jamie Madill (use @chromium please) <jmadill@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
0f34f3f2
|
2019-03-11T10:18:57
|
|
Use auto_script in run_code_generation.
Cleans up the generator scripts to prepare for listing outputs in the
generated hashes file. Also reorganizes the scripts somewhat to make
them a bit more maintainable.
Bug: angleproject:3227
Change-Id: If40946c2004941d3f6cd51d5521c7db8cc0b52df
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1512052
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f563fdc9
|
2019-01-31T13:53:59
|
|
Reland "Fix unit test for setting locale creating malformed HLSL shader code
Fix malformed HLSL shader code in other locales than classic"
This is a reland of 5f662c0042703344eb0eef6d1c123e902e3aefbf
Original change's description:
> Fix unit test for setting locale creating malformed HLSL shader code
> Fix malformed HLSL shader code in other locales than classic
>
> Bug: angleproject:1433
> Change-Id: I30bad0bd0cfda465ec7200e48e12800d7d8efd26
> Reviewed-on: https://chromium-review.googlesource.com/c/1447862
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
Bug: angleproject:1433
Change-Id: I94caf7b4c7179119e5a5567c3014d7232df45a13
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1516192
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
5546fb4f
|
2019-01-17T12:25:54
|
|
Vulkan:Adding custom pool allocator
Migrated pool allocator used by compiler to common.
Planning to use this for ANGLE custom command buffers so this some
refactoring in preparation for that work.
Added a unit test to check PoolAllocator functionality.
Bug: angleproject:2951
Reviewed-on: https://chromium-review.googlesource.com/c/1476953
Reviewed-by: Jamie Madill <jmadill@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
Change-Id: I0b4f3d55ea1799e35c9799c221f7129233f30b24
Reviewed-on: https://chromium-review.googlesource.com/c/1492972
|
|
0546b538
|
2019-02-25T22:47:17
|
|
Revert "Vulkan:Adding custom pool allocator"
This reverts commit 941717496141b96f1d5817f31c2bb4a4e19847b9.
Reason for revert: crashes on Debug bots
Original change's description:
> Vulkan:Adding custom pool allocator
>
> Migrated pool allocator used by compiler to common.
>
> Planning to use this for ANGLE custom command buffers so this some
> refactoring in preparation for that work.
>
> Added a unit test to check PoolAllocator functionality.
>
> Bug: angleproject:2951
> Change-Id: I29618cfdb065b8a5fefd40719a35d27b1f6e99ef
> Reviewed-on: https://chromium-review.googlesource.com/c/1476953
> Reviewed-by: Jamie Madill <jmadill@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Commit-Queue: Tobin Ehlis <tobine@google.com>
TBR=ynovikov@chromium.org,jmadill@google.com,tobine@google.com,syoussefi@chromium.org
Change-Id: Id8c522bd1d94154e871211d975e801a55cc9c257
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2951, angleproject:3169
Reviewed-on: https://chromium-review.googlesource.com/c/1487977
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
94171749
|
2019-01-17T12:25:54
|
|
Vulkan:Adding custom pool allocator
Migrated pool allocator used by compiler to common.
Planning to use this for ANGLE custom command buffers so this some
refactoring in preparation for that work.
Added a unit test to check PoolAllocator functionality.
Bug: angleproject:2951
Change-Id: I29618cfdb065b8a5fefd40719a35d27b1f6e99ef
Reviewed-on: https://chromium-review.googlesource.com/c/1476953
Reviewed-by: Jamie Madill <jmadill@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
1d35d511
|
2019-02-15T15:39:27
|
|
Revert "Fix unit test for setting locale creating malformed HLSL shader code"
This reverts commit 5f662c0042703344eb0eef6d1c123e902e3aefbf.
Reason for revert: Some recent crashes related to streams, could be
related to this change.
https://bugs.chromium.org/p/chromium/issues/detail?id=932359
Original change's description:
> Fix unit test for setting locale creating malformed HLSL shader code
> Fix malformed HLSL shader code in other locales than classic
>
> Bug: angleproject:1433
> Change-Id: I30bad0bd0cfda465ec7200e48e12800d7d8efd26
> Reviewed-on: https://chromium-review.googlesource.com/c/1447862
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
TBR=geofflang@chromium.org,jmadill@chromium.org,jonahr@google.com
Bug: angleproject:1433
Change-Id: I28caa073b3996a95f3f233bed9dc91dc44263835
Reviewed-on: https://chromium-review.googlesource.com/c/1474624
Reviewed-by: Jonah Ryan-Davis <jonahr@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
366df2b2
|
2019-01-18T15:40:34
|
|
Vulkan: Support external texture binding points.
BUG=angleproject:2668
BUG=angleproject:3023
Change-Id: Idab0c4cbe1c7ed203ace50f1a6701dba11a40242
Reviewed-on: https://chromium-review.googlesource.com/c/1422548
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
75d577fb
|
2019-02-04T16:28:28
|
|
Fixed Bug where array initialized with same name of
previously declared variable fails on DirectX.
Combined user defined variables with their unique ids to avoid
overwriting same name variables of different scope.
Bug: angleproject:2126
Change-Id: If9ad9e48f629d83b105d43ee28a50b8176d0e0a1
Reviewed-on: https://chromium-review.googlesource.com/c/1456484
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
5f662c00
|
2019-01-31T13:53:59
|
|
Fix unit test for setting locale creating malformed HLSL shader code
Fix malformed HLSL shader code in other locales than classic
Bug: angleproject:1433
Change-Id: I30bad0bd0cfda465ec7200e48e12800d7d8efd26
Reviewed-on: https://chromium-review.googlesource.com/c/1447862
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
d4c09dd3
|
2019-01-29T11:22:54
|
|
Fix unnecessary copy of for loop variables in ANGLE
Bug: angleproject:3075
Change-Id: I34dd5d4ecded6def5a2b46369277312af0de7c8c
Reviewed-on: https://chromium-review.googlesource.com/c/1443572
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jonah Ryan-Davis <jonahr@google.com>
|
|
c09ae15c
|
2019-02-01T14:16:32
|
|
Enable -Wextra-semi and -Wextra-semi-stmt.
This will prevent users from accidentally making semicolon errors in
the future.
Bug: chromium:926235
Change-Id: I79a6fa376fb1ad8f0fcf1b65b1f572a035d1f4e9
Reviewed-on: https://chromium-review.googlesource.com/c/1446493
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
91d469aa
|
2018-08-27T10:47:25
|
|
Initial support for compiler AST validation
This is to be able to catch issues introduced through AST manipulation
earlier than shader compilation time, improving debuggability.
Bug: angleproject:2733
Change-Id: Ic57bc72f2ab438e60f32553d602074f3d72cc4f5
Reviewed-on: https://chromium-review.googlesource.com/c/1199922
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
1a07524d
|
2019-01-31T14:50:06
|
|
Fix the misuse of deepCopy()
When we use replaceChildNode function, the first argument must be the original
child node instead of the deepCopy. Otherwise, replaceChildNode will do nothing
since it will think deepCopy is a different node. In that case,
RewriteExpressionsWithShaderStorageBlockTraverser::visitAggregate will
enter an endless loop since ssbo argument is never really replaced.
Test: dEQP-GLES31.functional.ssbo.*
Bug: angleproject:1951
Change-Id: Ieb17a16ab2b3e0270328fafd7ba0944ca05f842f
Reviewed-on: https://chromium-review.googlesource.com/c/1446686
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
a7429204
|
2019-01-30T09:29:06
|
|
Remove some extra semicolons.
No behavior change.
Bug: chromium:926235
Change-Id: I9215b4799a3c68887b8403be057180796ab5777a
Reviewed-on: https://chromium-review.googlesource.com/c/1446311
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Nico Weber <thakis@chromium.org>
|
|
47ca1b2f
|
2019-01-23T16:11:41
|
|
Revert "Vulkan: Adding custom pool allocator"
This reverts commit 05459e06fde5047ae8f5f90fe091c3255e6bc88e.
Reason for revert: Clusterfuzz bugs flagged this commit
Original change's description:
> Vulkan: Adding custom pool allocator
>
> Copied pool allocator used by compiler to common and hooking it up as
> custom allocator for CommandPools. Modified it to support reallocation.
>
> RendererVk now has a private poolAllocator and VkAllocationCallbacks
> struct. The allocation callbacks are initialized to static functions
> in RendererVk::initializeDevice() and then passed to CommandPool init()
> and destroy() functions.
>
> Using the pool allocator saves Command Pool/Buffer clean-up time which
> was showing us as a bottleneck is some cases.
>
> Bug: angleproject:2951
> Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4
> Reviewed-on: https://chromium-review.googlesource.com/c/1409867
> Commit-Queue: Tobin Ehlis <tobine@google.com>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=jmadill@chromium.org,tobine@google.com,ianelliott@google.com,syoussefi@chromium.org
Change-Id: I363a351667c4dddef79833061790da90de477e70
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2951
Reviewed-on: https://chromium-review.googlesource.com/c/1430679
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Tobin Ehlis <tobine@google.com>
|
|
05459e06
|
2019-01-17T12:25:54
|
|
Vulkan: Adding custom pool allocator
Copied pool allocator used by compiler to common and hooking it up as
custom allocator for CommandPools. Modified it to support reallocation.
RendererVk now has a private poolAllocator and VkAllocationCallbacks
struct. The allocation callbacks are initialized to static functions
in RendererVk::initializeDevice() and then passed to CommandPool init()
and destroy() functions.
Using the pool allocator saves Command Pool/Buffer clean-up time which
was showing us as a bottleneck is some cases.
Bug: angleproject:2951
Change-Id: I81aa8a7ec60397676fa722d6435029db27947ef4
Reviewed-on: https://chromium-review.googlesource.com/c/1409867
Commit-Queue: Tobin Ehlis <tobine@google.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
15214423
|
2019-01-07T12:44:44
|
|
ES31: Add top_level_array_stride support
Bug: angleproject:1920
Change-Id: Id18c6cc1bb840c05f73a019156c462886f01d9eb
Reviewed-on: https://chromium-review.googlesource.com/c/1396745
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ab2bfa81
|
2019-01-15T19:06:47
|
|
Enable Chromium clang style plugin for libANGLE.
This fixes a few style warnings:
* auto should not deduce to raw pointer type
* inlined virtual methods are not allowed
* non-trivial constructors and destructors should be explicit
* inlined non-trivial constructors should not be in-class
* missing override keywords
Bug: angleproject:3069
Change-Id: I3b3e55683691da3ebf6da06a5d3c729c71b6ee53
Reviewed-on: https://chromium-review.googlesource.com/c/1407640
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
5f82dde6
|
2019-01-14T11:38:33
|
|
Fix block size calculation w.r.t variable-size arrays
In SSBOs, there can be a last array whose size is not specified (i.e.
can take any size). This is especially prevalent in Compute shaders
that process a buffer.
In the shader translator, the size of this array is given as 0. HLSL
register offset calculation was tripped up by this as it used
(arraySize - 1). The optimization in [1] effectively removed a test
that would perform this calculation only when the size is positive.
This change adds back this guard.
[1] https://chromium-review.googlesource.com/c/angle/angle/+/684742
Bug: angleproject:2516
Change-Id: If45ac934f542c5ffcad67f962eebe45a3aeba70b
Reviewed-on: https://chromium-review.googlesource.com/c/1409403
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f3179a6a
|
2018-07-12T16:22:06
|
|
ES31: Implement bindImageTexture binds a single layer on D3D backend
Dynamically generate image2D variables' declaration and function
definition in libANGLE.
Bug: angleproject:1987
TEST=angle_end2end_tests.ComputeShaderTest.*
Change-Id: Idacc756f7bd15f22eccb1d689e18e997f3e74159
Reviewed-on: https://chromium-review.googlesource.com/c/1142885
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
225f08bf
|
2019-01-03T15:59:29
|
|
Cleanups to StripArrayIndices.
Not picked up in prior review.
Bug: angleproject:3024
Change-Id: I9dd1ea146996c8ac3569070af0cb12df65f0d815
Reviewed-on: https://chromium-review.googlesource.com/c/1394570
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4e712be2
|
2019-01-03T13:53:59
|
|
Refactor BlockLayoutEncoder APIs for std430.
This splits HLSL SSBO access into two steps.
First we compute a mapping from the collected SSBO variable names to
TField pointers. Then during tree traversal we use a block encoding
visitor class that uses the shader names to store BlockMemberInfo
structures for the structures and variables. Each nested structure
is traversed separately so that the BlockMemberInfo offsets are
relative to the structure start rather than the enclosing block. The
array stride for a structure is the size of the struct after all the
alignment is included.
This gives the correct results for the SSBO access chain in the HLSL
code. It also will allow us to use the same encoding and visiting logic
for SSBOs on the API side.
Bug: angleproject:3024
Change-Id: I42b1db0e7547782ae77fe5f64a797f803f203f45
Reviewed-on: https://chromium-review.googlesource.com/c/1352731
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
904bb918
|
2019-01-02T16:00:02
|
|
Rename constants in blocklayout.h.
This adds the "k" prefix.
Bug: angleproject:3024
Change-Id: I3771a8a9d90cd5edc7173f2b3817a5f1f053bdd4
Reviewed-on: https://chromium-review.googlesource.com/c/1392399
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
04ea03e4
|
2019-01-01T15:14:25
|
|
Make default block member info a constant.
Instead of generating a struct each time we can use a constexpr
constructor to use a single representation.
Bug: angleproject:3024
Change-Id: I14dec65a4f6ac9ab2f7e7af444862e4ceab88d8c
Reviewed-on: https://chromium-review.googlesource.com/c/1392395
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ba319ba3
|
2018-12-29T10:29:33
|
|
Re-land "Load entry points dynamically in tests and samples."
Fixes the Android/ChromeOS/Fuchsia builds by using consistent EGL
headers.
This CL adds a dynamic loader generator based on XML files. It also
refactors the entry point generation script to move the XML parsing
into a helper class.
Additionally this includes a new GLES 1.0 base header. The new
header allows for function pointer types and hiding prototypes.
All tests and samples now load ANGLE dynamically. In the future this
will be extended to load entry points from the driver directly when
possible. This will allow us to perform more accurate A/B testing.
The new build configuration leads to some tests having more warnings
applied. The CL includes fixes for the new warnings.
Bug: angleproject:2995
Change-Id: I5a8772f41a0f89570b3736b785f44b7de1539b57
Reviewed-on: https://chromium-review.googlesource.com/c/1392382
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9f088621
|
2018-12-29T20:46:15
|
|
Revert "Load entry points dynamically in tests and samples."
This reverts commit 03923558a7103827ffec6a4d2a1453ed91f01c6f.
Reason for revert: fails compilation on Android, ChromeOS and Fuchsia during roll https://chromium-review.googlesource.com/c/chromium/src/+/1392624
Original change's description:
> Load entry points dynamically in tests and samples.
>
> This CL adds a dynamic loader generator based on XML files. It also
> refactors the entry point generation script to move the XML parsing
> into a helper class.
>
> Additionally this includes a new GLES 1.0 base header. The new
> header allows for function pointer types and hiding prototypes.
>
> All tests and samples now load ANGLE dynamically. In the future this
> will be extended to load entry points from the driver directly when
> possible. This will allow us to perform more accurate A/B testing.
>
> The new build configuration leads to some tests having more warnings
> applied. The CL includes fixes for the new warnings.
>
> Bug: angleproject:2995
> Change-Id: I6726d4163f7a6e54d2482f094c0a952f59702a05
> Reviewed-on: https://chromium-review.googlesource.com/c/1359516
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
TBR=ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org
Change-Id: I902bec2d733c2b879be29c02ab52a0b7d4eaa077
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2995
Reviewed-on: https://chromium-review.googlesource.com/c/1392381
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
03923558
|
2018-12-29T10:29:33
|
|
Load entry points dynamically in tests and samples.
This CL adds a dynamic loader generator based on XML files. It also
refactors the entry point generation script to move the XML parsing
into a helper class.
Additionally this includes a new GLES 1.0 base header. The new
header allows for function pointer types and hiding prototypes.
All tests and samples now load ANGLE dynamically. In the future this
will be extended to load entry points from the driver directly when
possible. This will allow us to perform more accurate A/B testing.
The new build configuration leads to some tests having more warnings
applied. The CL includes fixes for the new warnings.
Bug: angleproject:2995
Change-Id: I6726d4163f7a6e54d2482f094c0a952f59702a05
Reviewed-on: https://chromium-review.googlesource.com/c/1359516
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
8c78ce4b
|
2018-12-16T19:14:58
|
|
Use visitor pattern for Shader Variable APIs.
In many places in ANGLE we need to traverse a ShaderVariable tree. We
do this to store uniform offset and other information, to flatten the
tree of uniforms for the front-end, or to produce active variable lists
for uniform and shader storage blocks. In each case, we would write
separate tree traversal code.
This patch introduces a shared visitor pattern for all of the shader
variable tree traversal instances. With that get more common code. Also
it is easier to write new variable traversals. ProgramD3D and
ProgramLinkedResources in particular get nice simplificiations.
The visitor object recieves callbacks from the traversal when entering
structs, array elements, and new variables. The visitor can treat these
differently depending on the use case. A common visitor that constructs
full variable names is used as a base class in several places.
Also moves the 'isRowMajorLayout' from sh::InterfaceBlockField to
sh::ShaderVariable. This allows us to forgo using templates in several
call sites.
Bug: angleproject:3024
Change-Id: I472d81ec775e2eee92fb3d2eb0ca83860221ba2e
Reviewed-on: https://chromium-review.googlesource.com/c/1358722
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
2b35654d
|
2018-12-20T12:43:37
|
|
compiler: Fix const non-square matrix component mult.
It seems like there weren't any dEQP tests for constant folding of
nonsquare matrices component-wise multiplication. There were a couple
bugs in our implementation which could lead to undefined behaviour.
Fixes the code and cleans up a few style issues.
Also includes a regression test.
Bug: chromium:912505
Bug: chromium:912508
Change-Id: I7fb85d1404a32950fa9fe4c3bbba9edc9f38ddd1
Reviewed-on: https://chromium-review.googlesource.com/c/1387065
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
0d218da4
|
2018-12-17T11:53:52
|
|
Specify texture LOD in compute shader on D3D backend
D3D does not define LOD in compute shader, so Sample()
is not supported, try to use SampleLevel().
Bug: angleproject:2756
TEST=angle_end2end_tests.ComputeShaderTest
.TextureFunction/ES3_1_D3D11
dEQP.GLES31/functional_image_load_store_2d_store*
Change-Id: I63e707d2b56e807cfe766cc21bc6b0819982ce80
Reviewed-on: https://chromium-review.googlesource.com/c/1379672
Commit-Queue: Xinghua Cao <xinghua.cao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4622905b
|
2018-12-10T13:31:00
|
|
ES31: Add atomic memory functions for SSBO
Due to SSBO is translated to RWByteAddressBuffer in HLSL, the corresponding
atomic memory functions atomic* will be translated to
RWByteAddressBuffer.Interlocked*. The translation is like below:
atomicAdd(instanceName.data[0], 5u);
// becomes
uint _ssbo_atomicAdd_uint(RWByteAddressBuffer buffer, uint loc, uint value)
{
uint original_value;
buffer.InterlockedAdd(loc, value, original_value);
return original_value;
}
_ssbo_atomicAdd_uint(_instanceName, 0 + 16 * 0, 5);
Bug: angleproject:1951
Change-Id: If2af8bedb67a4135b443d2512d43c6058a78888d
Reviewed-on: https://chromium-review.googlesource.com/c/1370676
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
4a9f9b08
|
2018-12-06T17:49:39
|
|
ES31: support ssbo as the operand of unary operator
Bug: angleproject:1951
Change-Id: I71c2cf2ca35d7b1fe5d14358a0749f47e223816b
Reviewed-on: https://chromium-review.googlesource.com/c/1367405
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
88faa696
|
2018-12-03T16:22:24
|
|
ES31: Add unsized array length support in SSBO
Bug: angleproject:1951
Change-Id: I10c798c62a741b156f5b614e0df0795c0e845108
Reviewed-on: https://chromium-review.googlesource.com/c/1365154
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
a48f26fb
|
2018-12-11T16:54:51
|
|
ES31: Use deepCopy to make sure that every node being used only once
This patch uses deepCopy for nodes which are used more than once in the SSBO
traverser.
Bug: angleproject:1951
Change-Id: Ie8e03d4f595484a1e2ca0397ed30a7f484add607
Reviewed-on: https://chromium-review.googlesource.com/c/1370678
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
153e0224
|
2018-12-07T13:31:31
|
|
Add gl_DrawID emulation for ESSL3 with ANGLE_multi_draw
Bug: chromium:890539
Change-Id: I3d9a9429608afb454f076013f3ed844e115c56cc
Reviewed-on: https://chromium-review.googlesource.com/c/1368784
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
|
|
19f2f9eb
|
2018-12-07T15:10:48
|
|
Mark variable to call 'length()' as statically used
Bug: angleproject:3008
Change-Id: I8779706c667f49fddb0a741f5bf31c4af54db3e7
Reviewed-on: https://chromium-review.googlesource.com/c/1367404
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
e14feaf5
|
2018-11-29T16:29:54
|
|
ES31: support ssbo as an argument of aggregate type
BUG: angleproject:1951
Change-Id: Icaab8ffd0ee88cca22ba79a9f0d4e02c9134a169
Reviewed-on: https://chromium-review.googlesource.com/c/1349071
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
81a880aa
|
2018-11-12T15:53:34
|
|
ES31: support ssbo as binary operand
This patch will process ssbo as compound assignment binary operand or readonly
binary operand.
BUG: angleproject:1951
Change-Id: I4a0da77649d719fa08e6bf4c3d9ace58dbfb7aab
Reviewed-on: https://chromium-review.googlesource.com/c/1349449
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
6494c415
|
2018-11-05T15:46:04
|
|
ES31: Add swizzle support in SSBO (Part 1)
This patch adds the swizzle process if the swizzle node is the last node in
ssbo access chain.
Bug: angleproject:1951
Change-Id: Iecc95baa45e8cc40be9111a15398c7e858bfb99e
Reviewed-on: https://chromium-review.googlesource.com/c/1341234
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
efe061bd
|
2018-11-13T16:44:40
|
|
Optimize HLSL zero initializer
Currently we initialize a variable using zero initializer. Take the
below variable for example:
uint var[4];
We translate it to:
uint var[4] = { 0, 0, 0, 0};
If the array size is large, we have to use very long zero initializer.
The problem is that it's very slow for D3D drivers to compile.
This CL uses the 'static' trick below to solve the problem:
static uint _ANGLE_ZEROS_[256];
...
uint var[516] = {_ANGLE_ZEROS_, _ANGLE_ZEROS_, 0, 0, 0, 0};
For 'static', if the declaration does not include an initializer, the
value is set to zero.
https://docs.microsoft.com/en-us/windows/desktop/direct3dhlsl/dx-graphics-hlsl-variable-syntax
Bug: chromium:898030
Change-Id: Ia3f6574b5ddaffa94bf971140eba95835ee105ee
Reviewed-on: https://chromium-review.googlesource.com/c/1332805
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
6aab06e0
|
2018-11-20T14:04:11
|
|
Don't allow unary operators on void types.
BUG=900058
Change-Id: Ice8976ddd9cbc9c90162cf7fae2b8f91ddcfcef3
Reviewed-on: https://chromium-review.googlesource.com/c/1344590
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
b81ff9e6
|
2018-10-26T17:20:50
|
|
ES31: Add std430 encoder.
Bug: angleproject:1951
Change-Id: I5e469ee5f13604102b0ee268d5bf9f5ac4809ecd
Reviewed-on: https://chromium-review.googlesource.com/c/1278098
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
cd47a379
|
2018-11-11T11:08:16
|
|
Add SH_INIT_SHARED_VARIABLES flag
This option is used to initialize shared variables to zero at the
beginning of shader execution to avoid compute shaders being able to
read undefined values that could be coming from another webpage or
application.
It's implemented by declaring variables with initial value for HLSL.
For GLSL, it's not allowed to use declaraction initializer for shared
variables, so we need to explicitly assign them to zero at the
beginning of main(). This implementation is only for HLSL.
Bug: chromium:898030
Change-Id: Ic5906500bf4a35cd9a071923f82f32c5e2991be3
Reviewed-on: https://chromium-review.googlesource.com/c/1330310
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
48f63f90
|
2018-10-26T17:20:50
|
|
ES31: add row major matrix support (part 2)
This patch implements read/write vector data in matrix or matrix data directly
in a shader storage block with row_major qualifier.
Bug: angleproject:1951
Change-Id: Id7847e2245b09414709361412a95c4dd84b9ee97
Reviewed-on: https://chromium-review.googlesource.com/c/1304019
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
5d2dfa46
|
2018-11-03T09:28:17
|
|
ES31: Add array of arrays support in SSBO
Bug: angleproject:1951
Change-Id: I5e92b75a59a3ab24a34b827ae6f968961b8bea49
Reviewed-on: https://chromium-review.googlesource.com/c/1317376
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
1bf18ce9
|
2018-10-19T15:34:02
|
|
Implement GL_ANGLE_multi_draw
This patch adds entrypoints glMultiDrawArraysANGLE,
glMultiDrawElementsANGLE, glMultiDrawArraysInstancedANGLE,
annd glMultiDrawElementsInstancedANGLE
Bug: chromium:890539
Change-Id: Ic9c374c53892460f44ca6e73a253b78473ac2dff
Reviewed-on: https://chromium-review.googlesource.com/c/1282268
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Commit-Queue: Austin Eng <enga@chromium.org>
|
|
a6e8a0c5
|
2018-11-02T15:11:50
|
|
ES31: Simplify IsInShaderStorageBlock function
Bug: angleproject:1951
Change-Id: I0501502fa2201953a3dad4b18103ff5ae20db1bf
Reviewed-on: https://chromium-review.googlesource.com/c/1314298
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5ca3e5a0
|
2018-10-31T11:13:29
|
|
Fix ShaderStorageBlockOutputHLSL::writeEOpIndexDirectOrIndirectOutput
https://chromium-review.googlesource.com/c/1304017 removed str()
wrapping values passed to TInfoSinkBase::operator<<().
This broke ANGLE roll
https://chromium-review.googlesource.com/c/chromium/src/+/1309331
failing compile on linux-libfuzzer-asan-rel bot.
Looks like libfuzzer compiler has a bug, not being able to find
sh::BlockLayoutEncoder::BytesPerComponent.
Wrapping it in str() works around this.
Bug: angleproject:1951
Change-Id: I2deb573667dc1e88d352bad1933c269ec36cf398
Reviewed-on: https://chromium-review.googlesource.com/c/1309975
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d60e42f8
|
2018-10-25T16:33:16
|
|
ES31: add row major matrix support (part 1)
This is the first patch to enable row major matrix suppot in series. This patch
ensures that we can get correct location when we load/store data from matrix.
Currently, only scalar data load/store works well.
mat2x3 data
The location of data[x][y] will be:
data.offset + x * scalarStride + y * matrixStride //row_major
data.offset + x * matrixStride + y * scalarStride //column_major
Bug: angleproject:1951
Change-Id: I5bd7bad7d293219ba610f18eeafc56e70e36de43
Reviewed-on: https://chromium-review.googlesource.com/c/1304017
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
4a22f4b0
|
2018-10-23T14:36:47
|
|
ES31: Add atomic_uint support to HLSL translator
This is the first commit in a series to enable atomic counter buffers.
Adds support for atomic counters to the GLSL->HLSL translator using
RWByteAddressBuffer.
Bug: angleproject:1729
Test: angle_end2end_tests
Change-Id: I3b7e08f9256dc9bdbcc02ad8910040f2bc14aeac
Reviewed-on: https://chromium-review.googlesource.com/c/1291329
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
df73a8e5
|
2018-10-25T16:11:20
|
|
ES31: Use std::map<const TField *, BlockMemberInfo> to save ssbo info
Bug: angleproject:1951
Change-Id: I9d6a19c0d63065db69985845a1cd68cfd4b99d1f
Reviewed-on: https://chromium-review.googlesource.com/c/1298913
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8edb7188
|
2018-10-10T15:54:23
|
|
ES31: Add structure field member support in SSBO
This patch adds the structure field member support in SSBO. To support it,
below things are done:
1. Calculate the offset and arrayStride in SSBO structure.
2. Support array of arrays translation.
Bug: angleproject:1951
Change-Id: If8f233e6388d5bb905e78c39a85112d394298138
Reviewed-on: https://chromium-review.googlesource.com/c/1278097
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fefaba5b
|
2018-10-26T16:16:53
|
|
Regenerate hashes for the builtin symbol table.
BUG=chromium:890539
Change-Id: Ia5bdf652dc37a466560071b4fe2cdc7d89ff941f
Reviewed-on: https://chromium-review.googlesource.com/c/1302837
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
7cf9cd24
|
2018-10-09T15:27:32
|
|
Add flags to shader translator to emulate gl_DrawID
Adds support for translating gl_DrawID for implementation of
GL_ANGLE_multi_draw.
Currently the change only supports and allows emulation of the
draw id using a uniform variable named `gl_DrawID`. This uniform is
mapped in the translated shader to a hashed name that does not
use the gl_ namespace
Bug: chromium:890539
Change-Id: I08a246ca911e88e733ccdf22f1ed69dcae948e05
Reviewed-on: https://chromium-review.googlesource.com/c/1271957
Commit-Queue: Austin Eng <enga@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
|
|
b8543630
|
2018-10-02T19:46:14
|
|
Support GL_OES_texture_border_clamp
Added support for GL_TEXTURE_BORDER_COLOR and GL_CLAMP_TO_BORDER in
OpenGL/OpenGLES, Direct3D9 and Direct3D11 backends.
For integer textures in OpenGLES3 contexts these additional entry points
are available now:
void glTexParameterIivOES(enum target, enum pname, const int *params);
void glTexParameterIuivOES(enum target, enum pname, const uint *params);
void glGetTexParameterIivOES(enum target, enum pname, int *params);
void glGetTexParameterIuivOES(enum target, enum pname, uint *params);
void glSamplerParameterIivOES(uint sampler, enum pname, const int *params);
void glSamplerParameterIuivOES(uint sampler, enum pname, const uint *params);
void glGetSamplerParameterIivOES(uint sampler, enum pname, int *params);
void glGetSamplerParameterIuivOES(uint sampler, enum pname, uint *params);
BUG=angleproject:2890
TEST=angle_end2end_tests.TextureBorderClamp*
Change-Id: Iee3eeb399d8d7851b3b30694ad8f21a2111f5828
Reviewed-on: https://chromium-review.googlesource.com/c/1257824
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
672267fc
|
2018-10-19T17:01:17
|
|
ES31: Fix that asuint can't accept bool value
This change fixes below errors:
error X3013: 'asuint': no matching 1 parameter intrinsic function
error X3013: Possible intrinsic functions are:
error X3013: asuint(double, out uint x, out uint y)
error X3013: asuint(float|half|int|uint)
When we store a boolean value, we should cast it to uint firstly. Then do the
store.
Bug: angleproject:1951
Change-Id: I8931e540d701ef72bb82846496c698acef1ba1fb
Reviewed-on: https://chromium-review.googlesource.com/c/1295831
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
19603b9e
|
2018-10-18T17:25:33
|
|
ES31: Allow function call, unary, ternary operators in SSBO
When we meet function call, unary or ternary operator in SSBO access chain,
we should transfer the process of them to OutputHLSL.
Bug: angleproject:1951
Change-Id: I740940ac4eee4c5ed52239f14b1d32b1f9cf9385
Reviewed-on: https://chromium-review.googlesource.com/c/1290470
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|
|
7818a85c
|
2018-09-06T15:02:04
|
|
Implement GL_ANGLE_texture_multisample API part
Support GL_ANGLE_texture_multisample extension.
This patch adds enums of multisampled texture and texStorage2DMultisampleANGLE
API.
TEST=angle_end2end_tests.exe --gtest_filter=TextureMultisampleTest*
TEST=angle_end2end_tests.exe --gtest_filter=NegativeTextureMultisampleTest.Negtive*
BUG=angleproject:2275
Change-Id: I2cab997edc33aa2d0be6082381545335423f64e0
Reviewed-on: https://chromium-review.googlesource.com/c/804613
Commit-Queue: Yizhou Jiang <yizhou.jiang@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
64b7c4ff
|
2018-10-19T11:38:04
|
|
Use angle::Result in front-end (Part 3)
Handles the gl::Framebuffer class and its implementation.
Bug: angleproject:2491
Change-Id: I3b9c0609e9277264ccdb370596500562df3b7d15
Reviewed-on: https://chromium-review.googlesource.com/c/1280743
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1d8a783c
|
2018-10-09T13:59:56
|
|
Re-land: "ES31: Add vector and matrix support in SSBO for D3D"
Re-land skips ProgramInterfaceTestES31.GetProgramInterface/ES3_1_D3D11 to pass
the bots. In fact, ProgramInterfaceTestES31.GetProgramInterface/ES3_1_D3D11 is
not a regression. The reverted CL added more SSBO features and triggered the
failure. To enable ProgramInterfaceTestES31.GetProgramInterface/ES3_1_D3D11,
we should support SSBO in render pipeline. This needs to bind SSBO to UAV
registers in link time instead of compile time since output variables also
occupies the UAVs. Let's enable this test when we support SSBO in render
pipeline. Currently, we shouldn't block the SSBO implementation in some common
features.
Bug: angleproject:1951
Change-Id: Ic339e8327e79335e6db1d86bedf0072635976f5f
Reviewed-on: https://chromium-review.googlesource.com/c/1282277
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
|