|
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>
|
|
0cb3b0f1
|
2019-01-28T09:55:20
|
|
Vulkan: Use glslang's internal BUILD.gn.
This retires the ANGLE BUILD.gn file for glslang. Also makes a few more
repos sync from Chromium's copy using build overrides. This should
speed up Chrome checkouts slightly.
Bug: angleproject:3088
Change-Id: I530f28d9b13469bbe6471a4c61e7353d599d81ec
Reviewed-on: https://chromium-review.googlesource.com/c/1422545
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7c985f5c
|
2018-11-29T18:16:17
|
|
Make angle::Result an enum.
This moves away from a class type to a value type. This should improve
performance when using angle::Result as a return value. Previously the
generated code would return a pointer instead of a value.
Improves performance in the most targeted microbenchmark by 10%. In
more realistic scanarios it will have a smaller improvement. Also
simplifies the class implementation and usage.
Includes some unrelated code generation changes.
Bug: angleproject:2491
Change-Id: Ifcf86870bf1c00a2f73c39ea6e4f05ca705050aa
Reviewed-on: https://chromium-review.googlesource.com/c/1356139
Commit-Queue: Jamie Madill <jmadill@chromium.org>
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>
|
|
b36a4816
|
2018-09-25T10:15:11
|
|
Vulkan: Add OpenGL line segment rasterization.
Line rasterization rules are implemented using a shader patch. The
patch does a small test and discards pixels that are outside of the
OpenGL line region.
The feature is disabled on Android until we can determine the root
cause of the test failures.
Bug: angleproject:2598
Change-Id: Ic76c5e40fa3ceff7643e735e66f5a9050240c80b
Reviewed-on: https://chromium-review.googlesource.com/1120153
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
3fd614d0
|
2018-08-13T12:21:58
|
|
Refactor Context dependency for resolveCompile
The context parameter of Shader::resolveCompile method causes a bad
impact that many methods in Shader, Program etc. have to have a same
context parameter. By removing it, these methods can be decoupled
from Context.
BUG=chromium:849576
Change-Id: Ia5545ee9dce45794550f6086bc0e6c4707e1276e
Reviewed-on: https://chromium-review.googlesource.com/1172202
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
242c4fe8
|
2018-07-12T15:56:56
|
|
Vulkan: Store ProgramVk shaders in ShaderInfo.
This encapsulates most of the logic for a Program into a helper class.
Now we can store multiple instances of the Program's back-end to
implement different shader behaviour at draw time.
This will be useful for shader patching for OpenGL line segment raster.
Bug: angleproject:2598
Change-Id: I800a737088574e28f3a4ec23b91c0cb2647e4e12
Reviewed-on: https://chromium-review.googlesource.com/1127302
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
06ca634e
|
2018-07-12T15:56:53
|
|
Vulkan: Refactor for draw call shader patching.
This refactors a few methods to enable draw call shader patching. The
shader serials in the Pipeline description are inserted right before
we query the pipeline cache. This is done during a draw call. Also
renames the 'QueueSerial' member of the ObjectAndSerial class to just
'Serial' to more accurately reflect it usage in ShaderAndSerial.
Also changes the GlslangWrapper class to have all static methods. If we
need to store state we can revert these changes at some point.
Also splits the GlslangWrapper link call into two static calls. One
call is called to get the linked source code. The second call compiles
the linked sources into shader code. Only the second call will be
necessary for draw call shader patching to implement OpenGL line
rasterization in Vulkan.
Bug: angleproject:2598
Change-Id: I7bad3c3eeab1fb062c15a840836db4a28f841a26
Reviewed-on: https://chromium-review.googlesource.com/1127158
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c0bb36cb
|
2018-07-10T11:10:31
|
|
Vulkan: Add driver uniforms to shader.
Bug: angleproject:2717
Change-Id: I542f3b0f2de21857d7fea0267f07d2d0eec78a8c
Reviewed-on: https://chromium-review.googlesource.com/1131567
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a0adaf98
|
2018-06-27T15:49:35
|
|
Vulkan: Work around unused sampler validation.
Work around glslang's improved validation by using a valid but very
high layout binding. This should be more robust.
Tests already passing:
dEQP-GLES2.functional.state_query.shader.uniform_value_sampler
Bug: angleproject:2691
Bug: angleproject:2612
Bug: angleproject:2600
Change-Id: Ie78ae89f76cc0a42806724b622d7f201241bd041
Reviewed-on: https://chromium-review.googlesource.com/1117477
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
60437586
|
2018-06-15T09:47:04
|
|
Vulkan: Fix unused sampler struct uniforms.
These were not being parsed correctly. Turns on all uniform_api dEQP
tests.
Bug: angleproject:2612
Change-Id: I365bbe4cc52bb6a62fc47c53355962af38298b7f
Reviewed-on: https://chromium-review.googlesource.com/1101573
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
10887984
|
2018-06-20T11:46:41
|
|
Vulkan: Sampler structs in arrays.
Samplers are extracted from arrays of struct uniforms similarly as
with non-arrays. They are named according to the variable name,
array element and sampler field name.
Nested structs to come later.
Bug: angleproject:2494
Change-Id: Ie2f5f7bd1f747e73b3c6b505b2b1043cfe1073b5
Reviewed-on: https://chromium-review.googlesource.com/1101568
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
e033999e
|
2018-06-20T11:46:40
|
|
Vulkan: Add struct sampler parsing.
Vulkan requires all uniforms to be declared in a block. Uniform
blocks can't have store samplers. Thus we can't use structs in
samplers with Vulkan GLSL.
To work around this limitation we extract samplers from structs
and move them into standalone types. The samplers are named
according to the variable and struct fields.
Arrays of structs and nested structs to come later.
Bug: angleproject:2494
Change-Id: I83a94ab082c6ce7ee68ec1290751ecee18820683
Reviewed-on: https://chromium-review.googlesource.com/1101567
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3237f759
|
2018-06-20T14:45:43
|
|
Vulkan: Fix issue when a sampler2D was not used in FS or VS
Bug: angleproject:2675
Change-Id: Idbf2590a763fd7b81d2bcc5850180a1bb931360e
Reviewed-on: https://chromium-review.googlesource.com/1108490
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
3fb64c6a
|
2018-06-20T11:46:39
|
|
Vulkan: Fix counting for shader texture bindings.
Vulkan prefers to use a single binding for each texture array.
Previously we were reserving binding space for array elements.
Doesn't immediately fix any tests but allows more tests to
pass in subsequent CLs.
Bug: angleproject:2494
Change-Id: I238d4e6f491bfa6daf04dde24f8111c8418cd59c
Reviewed-on: https://chromium-review.googlesource.com/1101570
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
c252d757
|
2018-06-14T09:32:40
|
|
Vulkan: Fill in glslang resources with our caps
This allows us to enable these tests:
dEQP-GLES2.functional.shaders.fragdata.valid_static_index
Bug: angleproject:2594
Change-Id: I2c9a10063500d96d1c4bfb761f4b45590114b7ef
Reviewed-on: https://chromium-review.googlesource.com/1100957
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
50cf2be0
|
2018-06-15T09:46:57
|
|
Reformat some style in touched files.
This was triggered by running the code generation script.
Bug: angleproject:2665
Change-Id: Id639c78eb618182ee1859678590cf0f559b572c2
Reviewed-on: https://chromium-review.googlesource.com/1101564
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8ed634c0
|
2018-06-13T13:25:33
|
|
Vulkan: Fix qualifier replacement for sampler arrays.
The uniform name by default has the array subscript [0] appended. In
the shader code it uses no subscript. Fix this by parsing out the
subscript in the glslang wrapper subsitution step.
This is a preliminary fix. More work on descriptor set layouts and
pipeline layouts will be necessary to support sampler arrays.
Bug: angleproject:2462
Change-Id: I57d6304f33822d588c7cb192607380c2f3ba20f5
Reviewed-on: https://chromium-review.googlesource.com/1089808
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
e17b5ba5
|
2018-06-04T14:28:58
|
|
Vulkan: Keep unused uniforms list to fix glslang issues
We we're unable to cleanup the unused uniforms if we did not keep
a list of them while parsing them in ProgramLinkResource. Now
that we keep a history of them, we're able to clean them up and
fix a few dEQP tests.
Bug: angleproject:2582
Bug: angleproject:2585
Bug: angleproject:2587
Bug: angleproject:2589
Bug: angleproject:2590
Bug: angleproject:2593
Change-Id: Ic1f9151e356a3d05e83f1031cc7b187b370284e5
Reviewed-on: https://chromium-review.googlesource.com/1085644
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
78ee3423
|
2018-05-30T11:34:19
|
|
Vulkan: varyings of type Matrix/Struct can't use components.
- This is not yet fixing all issues for these tests but it does
get us further in the execution of the test case.
Bug: angleproject:2581
Change-Id: I96510e013ccc87fd21bce6823e1278ed9ff60739
Reviewed-on: https://chromium-review.googlesource.com/1079267
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
0986f1cc
|
2018-04-16T13:47:23
|
|
Vulkan: Implement depth_range dirty bit and enable tests
- Additional fix in GlslWrapper.cpp to remove the @@ markers for unused
attributes.
- Enables 28 dEQP gles2 tests in functional.depth_range.*
Bug: angleproject:2454
Change-Id: I1a6f72d846b476ba681140d4b242208d24e18b95
Reviewed-on: https://chromium-review.googlesource.com/1014262
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f1d3c20c
|
2018-04-16T07:44:27
|
|
Vulkan: Fix the issue with unused attributes / varyings
When an attribute, a uniform or a varying isn't used, we now remove
their layout and in/out qualifiers so that the shader can still refer
to these var names.
Bug: angleproject:2456
Change-Id: I5f1241d91bd46f663750adfab2562ef87ce69ae5
Reviewed-on: https://chromium-review.googlesource.com/1014009
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ef2fda72
|
2018-04-18T07:44:14
|
|
Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation (2nd try)
The layout needed to also have a component qualifier so that the
registerColumn wouldn't be ignored.
Bug: angleproject:2460
Bug: angleproject:2483
Change-Id: I3adcd6208aca4afebd45311ded93d00087b60a99
Reviewed-on: https://chromium-review.googlesource.com/1016680
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c97e900c
|
2018-04-17T19:11:39
|
|
Revert "Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation"
This reverts commit 1d882aaa0720b0dee0e8fc807d93d0e3f3e6bc67.
Sorry about this Luc. I think there was a missing suppression. You can
even see a flaky failure in the CQ when you landed this - it seems the
flakiness of the failure let it through. This is blocking another fix
from landing which fixes the fact the CQ is on fire. The revert button
is also missing from Gerrit which means this is a manual revert.
Failures:
https://ci.chromium.org/p/chromium/builders/luci.chromium.try/win_angle_rel_ng/361
Original CL Message:
The layout needed to also have a component qualifier so that the
registerColumn wouldn't be ignored.
Bug: angleproject:2460
Bug: angleproject:2483
No-Try: True
Change-Id: I84c38497fbda43d9defbc6d5d3ff0f9c133e6e46
Reviewed-on: https://chromium-review.googlesource.com/1015323
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1d882aaa
|
2018-04-13T10:12:05
|
|
Vulkan: Fix issue in GlslWrapper and maxVaryingVectors calculation
The layout needed to also have a component qualifier so that the
registerColumn wouldn't be ignored.
Bug: angleproject:2460
Bug: angleproject:2483
Change-Id: Ib5b15c4dc0ce42633f4994648f1eb22d8b63336a
Reviewed-on: https://chromium-review.googlesource.com/1011680
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
3dd8d291
|
2018-03-30T09:39:09
|
|
Use ShaderBitSet for active use bits on uniforms
BUG=angleproject:2169
Change-Id: I192c2e3c453540c8a6d7b0d066218ea3c9fbaab2
Reviewed-on: https://chromium-review.googlesource.com/989411
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
385b3e03
|
2018-03-21T09:43:28
|
|
Use packed enums on shader types in ANGLE renderer
This patch uses a packed internal enum ShaderType everywhere we
need a shader type instead of the GLenum value of the shader type.
This patch also uses program::getAttachedShader(type) everywhere
we need to get gl::Shader from a program in ANGLE.
BUG=angleproject:2169
Change-Id: I28a7fa1cfe35622c57a486932911110688eaadec
Reviewed-on: https://chromium-review.googlesource.com/972844
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
107c7247
|
2018-03-20T15:45:35
|
|
ShaderVariable: separate fields for staticUse and active
Thus far the compiler has used the "staticUse" flag to mark variables
that should have rather been marked "active", meaning that the code
may actually execute in a way that accesses the variable. There's a
clear definition for this use of the term "active" in the GLES 3.0.5
spec, section 2.12.6, and in GLES 3.1 section 7.3.1.
Having separate fields for recording static use and "activeness" of a
variable is the first step to fixing this.
According to the spec, usually only active resources should be
considered when checking use against max limits. Also, only active
uniforms get assigned a location. libANGLE code now correctly checks
the active flag rather than the static use flag in these cases.
The static use field still mirrors the active field for now, since
some code in Chromium also needs to be fixed to use the active field
correctly before the two can diverge.
After Chromium is fixed, we can fix ANGLE so that static use
information is recorded earlier during compilation and will accurately
reflect whether variables are statically used. Currently the compiler
only records variables once some static use may already have been
pruned from the AST.
BUG=angleproject:2262
TEST=angle_unittests, angle_end2end_tests
Change-Id: I025bb71361246ae00c911a1f8b66ec045f665f29
Reviewed-on: https://chromium-review.googlesource.com/970962
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
465835d6
|
2017-09-26T13:34:10
|
|
Support arrays of arrays in the API
The ShaderVariable class that is used as an interface between the
compiler and the rest of the code gets arrays of arrays support.
Array of array variables are passed from the compiler just like any
other variables. However, when stored in Program state each innermost
array constitutes a separate variable. This is done to make the
implementation match the GLES specification for program interface
query APIs.
This will be tested more fully once support for parsing arrays of
arrays lands in the compiler.
TEST=angle_end2end_tests, angle_unittests
BUG=angleproject:2125
Change-Id: I0f7159000f039be92a87a52b3b68cd9a215a21cb
Reviewed-on: https://chromium-review.googlesource.com/684742
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4dd167fb
|
2017-11-09T13:08:31
|
|
Vulkan: Assign locations to varyings.
These were actually always required, but only was caught by the newer
versions of the SPIR-V toolchain.
BUG=angleproject:2237
Change-Id: I43fef179e8792e46a602b39a6decafcab03b19df
Reviewed-on: https://chromium-review.googlesource.com/760638
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
de03e003
|
2017-10-21T14:04:20
|
|
Vulkan: Add shader handling for textures.
BUG=angleproject:2167
Change-Id: I33940288331a23b940753795e5e43b8cabcb87f5
Reviewed-on: https://chromium-review.googlesource.com/732189
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6276b922
|
2017-09-25T02:35:57
|
|
Vulkan: Implement basic uniform shader parsing.
This is a first step at implementing uniforms with descriptor sets.
It does not actually bind uniforms and upload data, but it does
implement uniform shader parsing. Uniforms are gathered into a single
uniform block which is bound to set 0, with binding 0 for vertex
uniforms and binding 1 for fragment uniforms.
Also adds a ReplaceSubstring helper to string_utils.
Also removes the precision writing from OutputVulkanGLSL since this
was generating warnings with glslang.
BUG=angleproject:2167
Change-Id: I9ec8351ec1973e583100f99292b0080ee968067b
Reviewed-on: https://chromium-review.googlesource.com/699938
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
2a9e107c
|
2017-09-22T11:31:57
|
|
Vulkan: Support multiple vertex outputs.
This is a bit of a hack, similar to how D3D11 works. We need to write
output locations in the GLSL shader before we send them to glslang,
so we wait until the link call, then string-replace some hard-coded
identifeir code to the attribute location determined by ANGLE.
This CL also fills in some of the vertex format conversion tables in
formatutilsvk.cpp.
BUG=angleproject:2167
Change-Id: I2424d0d990bdbcd831a4dd130e61e87d8f8f479f
Reviewed-on: https://chromium-review.googlesource.com/677555
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
9cf9e871
|
2017-06-05T12:59:25
|
|
Move LinkResult to the gl:: namespace.
This is a derived type from gl::Error so makes sense to be there.
Also makes it more accessible than in ProgramImpl.h
BUG=angleproject:1897
Change-Id: Id41b13e5a072745d8c361057f5bef8f152e0452b
Reviewed-on: https://chromium-review.googlesource.com/522872
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8ecf7f9b
|
2017-01-13T17:29:52
|
|
Vulkan: Implement shader compilation.
This hooks up the Vulkan GLSL, decorated with locations, to glslang,
and then pipes the SPIRV back to the Program implementation for later
use when making pipelines to run draw calls.
The program compilation tests work now, but don't really test
anything other than not generating Vulkan validation layer errors
during compilation and shader object generation.
BUG=angleproject:1576
Change-Id: I625e42219f4b4d1433dd3109b94e1a2f666ba4bd
Reviewed-on: https://chromium-review.googlesource.com/408519
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|