|
1c08cbb3
|
2018-03-15T15:11:56
|
|
Clean up link validations on interface blocks
This patch intends to clean up the link validations on interface
blocks for better implementing program linking with geoemtry shader.
1. Move three interface block validation functions to the anonymous
namespace of Program.cpp instead of the member function of class
Program.
2. Use IsActiveInterfaceBlock everywhere we need to know if an
interface block is active or not.
BUG=angleproject:1941
Change-Id: Ic868d015e45f04d57ba382a2b447be00952fa4fc
Reviewed-on: https://chromium-review.googlesource.com/965395
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5ae6ee45
|
2018-03-06T17:39:42
|
|
ES31: Sync dirty objects for compute shader
BUG=angleproject:2395
TEST=angle_end2end_tests
Change-Id: Ife833a6573c49fc453c120ebc66765064d807b16
Reviewed-on: https://chromium-review.googlesource.com/954991
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d4bd963f
|
2018-03-08T16:32:44
|
|
Don't use TIntermSymbol nodes for function parameters
Parameter nodes are not needed - it's simpler to just create a
TVariable object for each parameter when the TFunction is initialized.
With this change we also store only one object per each parameter type
used in built-in functions, instead of one array of TConstParameter
entries for each unique parameter sequence.
This simplifies code and reduces binary size and compiler memory use.
Compiler perf does not seem to be significantly affected.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I2b82400dd594731074309f92a705e75135a4c82c
Reviewed-on: https://chromium-review.googlesource.com/955589
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
44a73fcf
|
2018-03-06T09:32:17
|
|
Always Invalidate Vertex Attribute Translation
Fixes bug where mVertexAttribsNeedsTranslation was not being set when
vertex attribute changes internally from DIRECT to DYNAMIC. This changes
mVertexAttribsNeedTranslation to be set during any change in vertex
attribute type.
BUG=angleproject:2381
Change-Id: I91ae86624f0cb68bd8c41c3bcbdeb31fa1ccd9ed
Reviewed-on: https://chromium-review.googlesource.com/951894
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
41918387
|
2018-03-13T11:37:54
|
|
Vulkan: Additional texture formats support. RGB565, RGBA4444, RGBA5551
Bug:angleproject:2358
Change-Id: I4dc19f9e4cc7b51f215b57d440a108cdf17aec24
Reviewed-on: https://chromium-review.googlesource.com/960573
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0b0dcbc1
|
2018-03-14T11:33:22
|
|
Prune empty cases and switch statements
The translator already prunes no-ops and unreferenced variables, and
this may result in case statements that are followed by nothing.
Since the last case statement in as switch statement must always
contain a statement to be valid GLSL, the translator must not leave
empty case statements in place. They're now being pruned by the
PruneEmptyCases AST transformation. This improves on the earlier
RemoveEmptySwitchStatements AST transformation that did address
empty switch statements but could not remove them if they had a
case statement inside.
BUG=angleproject:2402
TEST=angle_unittests
Change-Id: Ieb9598a744078e45226d8fb7266d877f7835cf0c
Reviewed-on: https://chromium-review.googlesource.com/962181
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
5eaddbd0
|
2018-03-14T16:16:03
|
|
Vulkan: Flag uniforms as dirty when they are updated.
Currently changing uniform values will not always be seen.
Bug: angleproject:2392
Bug: angleproject:2403
Change-Id: Ie315a64ad6094f2c23e48e901de2e03e4d98516a
Reviewed-on: https://chromium-review.googlesource.com/963296
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
5b64aca8
|
2018-03-14T14:55:58
|
|
Vulkan: Support of float uniform matrixes (2,3,4).
Bug:angleproject:2392
Change-Id: I97efea83e604d19b1745d9db4ab8f02997a1b7fc
Reviewed-on: https://chromium-review.googlesource.com/962666
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0ab41fa5
|
2018-03-14T11:03:30
|
|
Add an EGL extension to disable GL extensions by default.
BUG=angleproject:2404
Change-Id: I2667ddc92d5c9ef6e0ef115f2fdf0c3d3643d945
Reviewed-on: https://chromium-review.googlesource.com/962702
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
1b14d7ce
|
2018-03-14T14:40:19
|
|
VertexArray: Add perf tests for VAO dirty bits.
This simple perf test already in the source does a great job at this.
Bug: angleproject:2389
Change-Id: I94ff14e0eab1cb49a8d19725056ad8f7f008ac05
Reviewed-on: https://chromium-review.googlesource.com/962962
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
447bfac1
|
2018-03-14T14:23:40
|
|
ES31: Support program parameter queries on geometry shader
This patch implements all the program queries on the geometry
shader stage of a program by glGetProgramiv(), including the
queries on geometry shader input/output primitives, invocations
and maximum output vertices
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.query.geometry_linked_*
dEQP-GLES31.functional.geometry_shading.query.geometry_shader_invocations
dEQP-GLES31.functional.state_query.program.geometry_shader_state_get_programiv
Change-Id: Ibfa630c64dba5baf52ff84ce7e0bf4c567eef8c4
Reviewed-on: https://chromium-review.googlesource.com/961397
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
7cec3353
|
2018-03-13T13:29:34
|
|
Vulkan: Get/SetUniform for float / int and vec*
Bug:angleproject:2392
Change-Id: I2110ecde653a85a28b515dc9d8473a1b37a73eb6
Reviewed-on: https://chromium-review.googlesource.com/962718
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
74ba598f
|
2018-03-13T11:22:16
|
|
Fix cubemap robust resource init for GenerateMipmap
The code in gl::Texture would only check whether the first cube map face
is correctly initialized but not for the others.
BUG=angleproject:2169
Change-Id: Ib565579a4570e731da785b5c74c8d1a6511ebcd4
Reviewed-on: https://chromium-review.googlesource.com/960571
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
97ab26fc
|
2018-03-14T10:08:10
|
|
Move DrawCallParams to the gl front-end.
Previously called DrawCallVertexParams. This params helper will be
passed into the VertexArray state sync method so we can handle
vertex attribute updates directly in the VertexArray implementation
instead of deferring the updates to the draw call, where the draw
call implementation method would have access to the draw call params.
Also includes the full range of draw parameters to DrawCallParams so
we can use it in more places.
Refactoring change only, subsequent work will contain more refactoring
and lead to code cleanups and easier dependent state updates for the
VertexArray implementation classes.
Bug: angleproject:2389
Change-Id: Ia84f8af54ae51eca94d8fb6f5b8adc88b8d981a7
Reviewed-on: https://chromium-review.googlesource.com/948787
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
87db7c52
|
2018-03-14T10:08:10
|
|
D3D11: Minor cleanup to DrawCallVertexParams.
The 'firstVertexDefinitelyZero' argument didn't actually have any
behavioural change to the code, so remove it. Also add an explicit
call to resolve the index range, instead of doing it implicitly when
certain values were queried.
Bug: angleproject:2389
Change-Id: I377c79006bfa541183fe94d0ed199fbaa1132afc
Reviewed-on: https://chromium-review.googlesource.com/948786
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0cec82a5
|
2018-03-14T09:21:07
|
|
Vulkan: Implement basic depth/stencil buffers.
This implements basic depth/stencil states and clearing.
This also implements "fallback" texture formats in the texture
generation. Fallback formats are those that are chosen at runtime for
replacements for main formats which lack driver support. They are
different from override formats, which are always used because we
assume there is no driver support.
The Vulkan spec only asserts that one of the two of D32 or D24 has
mandatory support. In the case of AMD, D24 is not supported fully, and
we need the fallback format support emulation.
Bug: angleproject:2357
Change-Id: Ic86cede3c69ff9893a06b3a55c3b5d2d897fa55f
Reviewed-on: https://chromium-review.googlesource.com/916701
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
d92d9dd1
|
2018-03-14T08:06:44
|
|
Sort the Format_table_autogen.cpp switch case by gl format
Bug:angleproject:2358
Change-Id: I8e5baa53239ab0509683114645fed0e769f43764
Reviewed-on: https://chromium-review.googlesource.com/962321
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2bfe9f6b
|
2018-03-02T16:53:29
|
|
Use function id to group functions in ParseContext
This way we can do numeric comparisons instead of string comparisons.
The effect on compiler perf test scores is fairly marginal, but
this reduces binary size by a few kilobytes, and there may be a larger
effect on shaders calling a lot of texture functions.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I077db97b16b16b70b7e18ee037e06d7450d08dc9
Reviewed-on: https://chromium-review.googlesource.com/947952
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
fccebffe
|
2018-03-08T13:51:02
|
|
ES31: Support adjacency draw modes for geometry shader
This patch implements adjacency primitive types as new draw modes
on OpenGL back-ends.
This patch also implements validations on the compatibilities among
draw modes and geometry shader input primitive types.
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.input.*
dEQP-GLES31.functional.geometry_shading.negative.*
Change-Id: I373ebfe88d7f50da3cc81adaf2d1b7f586b0932a
Reviewed-on: https://chromium-review.googlesource.com/954715
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
690c8eb7
|
2018-03-12T15:20:03
|
|
Framebuffer: syncState before internal format query.
Since querying the internal format of an attachment might need ot look
at the RenderTarget for some back-ends, or otherwise flush attachment
changes, we should call syncState internally. This means that we can't
mark these queries as const.
Bug: angleproject:2372
Change-Id: I9bfb43a472bcd7dfdd6ea7fab4751d494e1126bb
Reviewed-on: https://chromium-review.googlesource.com/948784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4d9d4839
|
2018-03-13T12:43:28
|
|
Optimize buffer deletion by returning early if buffer is not bound.
This improves angle_perftests
bindings_gl_100_objects_allocated_every_iteration by over 30%.
Bug: 820723
Change-Id: Icfaa0f54f7c61db6475948e3a95296f37ab4f7dc
Reviewed-on: https://chromium-review.googlesource.com/961302
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f0b30dd8
|
2018-03-12T13:21:29
|
|
Vulkan: Enable a bunch of dEQP texture related tests
This enables 21 tests in the texture department (including luminance
texture format tests except mimap related tests).
Bug:angleproject:2364
Change-Id: Ib609f0457833b34ecdb9d8f8b4479ece9ef6c1a6
Reviewed-on: https://chromium-review.googlesource.com/959233
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e600c0aa
|
2018-03-02T11:23:29
|
|
Use non-human-readable mangled names for types
The new mangled name format is as follows:
The first character is a hex digit from 0 to F that encodes vector or
matrix size. For scalars, structs etc. the character is 0.
Then, if it's a struct, the mangled name continues with "{s", followed
by mangled names of fields, and ends with "}".
If it's an interface block, the mangled name continues with "{i",
followed by mangled names of fields, and ends with "}".
If it's anything else, the second alphabetic character encodes the
basic type. Characters are assigned to basic types in the enumeration
order.
If it's an array, the mangled name has a suffix [array_size].
This saves a few kilobytes from the binary size. The effect on symbol
lookup speed seems mostly marginal.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I26e65dcb48c3478df9a719ffff9c15f2fd12e293
Reviewed-on: https://chromium-review.googlesource.com/945910
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
64e5ed2a
|
2018-03-09T16:32:32
|
|
Vulkan: Fix scissor clears + enable dEQP tests
Vulkan does not support receiving out of bounds numbers for the scissor
region but no validation errors are sent. This change clips the region
received to fit the current viewport and it fixes
many dEQP tests.
Bug:angleproject:2356
Change-Id: I5dcf739366ba1f62b56593eaaccedf5f14d0c200
Reviewed-on: https://chromium-review.googlesource.com/957758
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
dbb9c534
|
2018-02-25T19:58:24
|
|
GLES1: state: Define / initialize GLES1-specific states
Contains definitions of GLES1-specific states such as material /
lighting.
Tweaked the Color class for easier copying to uniforms / reading as a
float array.
This CL also adds the GLES1-specific state in GLES1State, which is then
part of the State class and is initialized to the spec's values if the
context major version is ES 1.
+ Some clang-format
BUG=angleproject:2306
Change-Id: I7fc3bd9a22ebf0ffcd98d931d0176f21e17b1c5c
Reviewed-on: https://chromium-review.googlesource.com/936424
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
92de2af5
|
2018-03-12T11:37:38
|
|
Vulkan: Enable culling rasterization state dEQP tests
This change enables the following tests:
dEQP-GLES2.functional.rasterization.culling.* 18/18
dEQP-GLES2.functional.rasterization.interpolation.* 12/12
dEQP-GLES2.functional.rasterization.fill_rules.* 5/5
Bug:angleproject:2352
Change-Id: I5a8869751ea0d787cc266ae12422633106e39983
Reviewed-on: https://chromium-review.googlesource.com/959118
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
203d6365
|
2018-03-09T15:27:02
|
|
Vulkan: enable multiple draw* dEQP tests
This enables 17 additional tests, including the line_loop tests.
Bug:angleproject:2335
Change-Id: I5d441dde08e6018d089749e102070886ccef3a08
Reviewed-on: https://chromium-review.googlesource.com/957448
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
54ef3ad4
|
2018-03-12T08:31:12
|
|
Run clang-format on State.cpp
BUG=angleproject:2306
Change-Id: I1c5a2dd40fb7d9b51cbf3fd37720a172578d76e8
Reviewed-on: https://chromium-review.googlesource.com/959105
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cc48e5fa
|
2018-03-09T14:17:17
|
|
Vulkan: Enable 16 additional tests for the scissor test
This set of expectations modifications effectively enables exactly these tests:
dEQP-GLES2.functional.fragment_ops.scissor.* -> 16/16 tests passed.
Bug:angleproject:2338
Change-Id: Icb971e0e7b253e7df390de1196cc4bc4401f9631
Reviewed-on: https://chromium-review.googlesource.com/957269
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a87023e0
|
2018-03-09T13:29:56
|
|
Vulkan: Enable 1046 additional tests for blending rasterization states
This set of expectations modifications effectively enables exactly these tests:
dEQP-GLES2.functional.fragment_ops.blend.* -> 1046 / 1046 tests passed.
Bug:angleproject:2346
Change-Id: I3acf903db9be05180df41fed10c2803c59cfc838
Reviewed-on: https://chromium-review.googlesource.com/957312
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e98b1b5d
|
2018-03-08T09:47:23
|
|
Framebuffer: Handle errors in checkStatus.
This pipes a lot more errors around in the Validation, where
they now will be caught.
Bug: angleproject:2372
Change-Id: Ibb4e47ddc932995a02dd92e10578b7a4097182a9
Reviewed-on: https://chromium-review.googlesource.com/954406
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7c9492eb
|
2018-03-12T11:01:29
|
|
gpu_test_expectations: Fix test for API overlap
Bug:angleproject:2396
Change-Id: I8069847f1389308c7c4d4e4786360dfc5a7eb1f4
Reviewed-on: https://chromium-review.googlesource.com/959047
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
529434a5
|
2018-03-08T13:13:29
|
|
ES31: Update dEQP-GLES31 geometry shader related test expectations
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.shaders.builtin_constants.*
dEQP-GLES31.functional.shaders.builtin_functions.*_geometry
dEQP-GLES31.functional.debug.negative_coverage.*.geometry_shader
Change-Id: I37b29e48f27ae31e3753efe00b849849879f848d
Reviewed-on: https://chromium-review.googlesource.com/954713
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b3b177d7
|
2018-03-09T16:37:22
|
|
Update driver constants on program change. Comes with a new SamplerMetadataUpdateOnSetProgram test.
This is a fix for a graphics problem we've been seeing for a while with WebRender+Angle on Nvidia/Windows. The sampler metadata doesn't get updated properly for some of the draw calls, since it's not invalidated on program change (this is what the CL is fixing). Extra entries get filled with garbage data because the constant buffer is updated with `MAP_WRITE_DISCARD`, and only those samplers are updated that the current program has. This may generally occur undetected, if not for our `textureSize` calls that appear to go the NV-specific Angle workaround path that ignores our `baseLevel = 0` and instead picks the one from the driver constants (which contains garbage), leading to either zeroes returned or even crashing the driver sometimes...
BUG=angleproject:2399
Change-Id: Ie2bef32184e2305c7255299933b899eb3fffb7ab
Reviewed-on: https://chromium-review.googlesource.com/949412
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
391bda23
|
2018-02-23T11:43:14
|
|
Generate code for initializing built-in variables
gen_builtin_symbols.py now generates code for initializing built-in
variable symbols as well. Some of the variable symbols are static, but
some of them also get initialized dynamically based on values in
ShBuiltInResources.
The static symbols have get functions in a header file so they can be
referenced from AST traversers as well without doing a lookup.
BUG=angleproject:2267
TEST=angle_unittests, angle_end2end_tests
Change-Id: Ida7f3aeb06d2bce0f737f1483b1bd5833aeddd2e
Reviewed-on: https://chromium-review.googlesource.com/911768
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
b7d924a8
|
2018-03-10T11:16:54
|
|
Vulkan: Make free part of DescriptorPool.
This also fixes a missed VkResult error. In order to do this
we also return an error from ProgramImpl::destroy.
Bug: angleproject:2396
Change-Id: I649b19e64732785bb33eebadea7f361245137d0f
Reviewed-on: https://chromium-review.googlesource.com/958406
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e2995cce
|
2018-03-09T17:43:45
|
|
Vulkan: Fix layers not being enabled on the bots.
We were missing the data definition for the standard validation layer.
This file was missing from the isolate, and the entire layer system
was not working.
Found this as a side-effect of working on depth stencil support.
Also fixes a missing definition in the white_box_tests BUILD.gn.
Also temporarily disables the ClearTest support for Vulkan because of
an implementation bug on AMD. Unfortunately because of the failure
mode it didn't work to just skip the test in the preamble.
Bug: angleproject:2357
Change-Id: I4d06c54191b09e09a4ba68c24613db6f148b17e3
Reviewed-on: https://chromium-review.googlesource.com/956759
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a36483fc
|
2018-03-09T16:11:21
|
|
Use full type names instead of auto for simple structs.
BUG=angleproject:2107
Change-Id: I7a5e4be124ec4381799fea51de3715e09c2f7400
Reviewed-on: https://chromium-review.googlesource.com/957272
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a8cb287c
|
2018-03-09T16:09:40
|
|
Rename syncRendererState methods to syncImplementationState.
BUG=angleproject:2107
Change-Id: I45b914a6edf721c6ec53ca2bc6e139685b059d20
Reviewed-on: https://chromium-review.googlesource.com/957271
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3a465745
|
2018-03-09T15:42:25
|
|
Skip TransformFeedbackLifetimeTest.DeletedBuffer on Win Intel GL
Due to wrong driver version on the bots.
BUG=angleproject:2398
Change-Id: Ia6b69a24bfb0ded8848a791db6b540576ef2f57c
Reviewed-on: https://chromium-review.googlesource.com/957207
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
7b5fc46b
|
2018-03-09T15:54:33
|
|
Vulkan: Add Vk format overrides table.
This generalizes the overriding mechanism in gen_Vk_format_table.py.
Instead of defining overrides inline, we keep the vk_format_map as a
1:1 mapping from angle format to vk format, and use the overrides map
to specify any additional emulation or features we need to support
OpenGL textures on Vulkan.
This will simplify the implementation for Depth/Stencil formats by
making the generator script a bit easier to work with.
No code changes, generator script refactor only.
Bug: angleproject:2357
Change-Id: I7132d991795eb91d6ad838481c52545c891215bc
Reviewed-on: https://chromium-review.googlesource.com/957433
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
67ae6c58
|
2018-03-09T11:49:01
|
|
Vulkan: Use free descriptor set bits in pool.
This forces us to free descriptor sets when we're done with them,
but saves us from needing to track when a descriptor set pool is no
longer in use. We may need to revisit this in the future if we want
to support pool allocation for performance.
Bug: angleproject:2396
Change-Id: I3f3184f3dd9e4c2911e1aade4dcb95962a26c3a7
Reviewed-on: https://chromium-review.googlesource.com/956574
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1505c750
|
2018-03-09T11:28:23
|
|
Vulkan: Fix issue in blending factor conversions
The blend factor were not converted correctly from GL enum types to
their VK equivalents. I found this by running many dEQP tests related
to blending.
Bug:angleproject:2346
Change-Id: I3c332bb5e5c44d2bec4ff9d62e0df2421507e136
Reviewed-on: https://chromium-review.googlesource.com/956241
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5b772312
|
2018-03-08T20:28:32
|
|
Nuke ValidationContext.
This pattern never really took off. It was intended to be used to
unit-test our Validation logic, but it become so complex because
of interactions with Framebuffer::syncState that we could never
really make use of it.
Nuke it entirely and simplify the Context class.
Bug: angleproject:2372
Change-Id: I40b9d46ce7706511a210da496ee19192cf609366
Reviewed-on: https://chromium-review.googlesource.com/954291
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d4fff506
|
2017-09-22T11:28:28
|
|
Reorder state synchronization for resource init.
Some backends may change state while initializing resources. Make sure
that all resources are initialized before synchronizing the backend
state for the given operation.
BUG=angleproject:2107
Change-Id: Ie75ac3eee986e41dfe3dd11a94a706e19df7497e
Reviewed-on: https://chromium-review.googlesource.com/678481
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
33140409
|
2018-03-08T13:57:52
|
|
Vulkan: Fix readPixels to support sub image reads correctly
Also, do not return InvalidOperation from flush in order to be able to support
running dEQP tests for Vulkan.
Bug:angleproject:2346
Change-Id: I12f3bd115034e044fb0fa2d94687321ede4a1e9d
Reviewed-on: https://chromium-review.googlesource.com/955889
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e8a93c6e
|
2018-01-04T18:02:24
|
|
New transform feedback buffer binding rules
Detects undefined behavior when a buffer is bound to a transform feedback
binding point and a non transform feedback binding point at the same time.
Also moves the transform feedback buffer generic binding point out of the
transform feedback object and into the context's global state, to match
driver behavior. This way binding a new transform feedback object does not
affect GL_TRANSFORM_FEEDBACK_BUFFER_BINDING which is similar to how VAOs
work with GL_ARRAY_BUFFER_BINDING.
Bug: 696345
Change-Id: If3b9306cde7cd2197a8ce35e10c3af9ee58da0b8
Reviewed-on: https://chromium-review.googlesource.com/853130
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
80964f97
|
2018-03-08T10:31:24
|
|
Vulkan: Support of GL_UNSIGNED_BYTE type in drawElements
Bug:angleproject:1683
Change-Id: I8c79cc92406b210c9d143761ffe4ef74e14c6bed
Reviewed-on: https://chromium-review.googlesource.com/956090
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
2878379d
|
2018-03-05T09:37:32
|
|
Add NPOT validation to copyTextureCHROMIUM
copyTextureCHROMIUM should generate INVALID_VALUE when using a NPOT
texture and level not equal to zero, so we should add
validation to catch this case.
BUG=angleproject:2380
Change-Id: I7ca2e657287c11d560db0ad296f8e87ed0c19798
Reviewed-on: https://chromium-review.googlesource.com/956018
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
19fa1c6f
|
2018-03-08T09:47:21
|
|
Return an Error from Framebuffer::syncState.
This pipes errors up from the Impl to the top level. There are
still a few places were error swallowing is needed, because the
Framebuffer API doesn't support returning an error.
Bug: angleproject:2372
Change-Id: Idc06bda1817fd28075940f69874d8b6ba69194f9
Reviewed-on: https://chromium-review.googlesource.com/954290
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
66546be2
|
2018-03-08T09:47:20
|
|
Vulkan: Use RenderTargetCache in FramebufferVk.
The RenderTargetCache avoids many multiple calls to getRenderTarget,
and should speed up the code somewhat on state changes. Also as a
side benefit removes a bunch of swallowed ANGLE errors.
Bug: angleproject:2372
Change-Id: I072481856aae8607f17a116e25c71acf04b4cc68
Reviewed-on: https://chromium-review.googlesource.com/948785
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5242d5bf
|
2018-02-15T07:14:35
|
|
Vulkan: Implement scissored clears.
Bug: angleproject:2356
Change-Id: I33888f9b4ebaf4b0b5af4ad59b12ad963325a790
Reviewed-on: https://chromium-review.googlesource.com/921882
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
bc918e7d
|
2018-03-08T09:47:21
|
|
Return errors from gl::State::syncDirtyObjects.
This plumbs the front-end code, but doesn't implement Error handling
for any objects yet. Framebuffers and VertexArrays will get error
handling from their syncState methods.
Bug: angleproject:2372
Change-Id: I226049e25ac7af2bdd3c4787b67a5d297c0b9c4b
Reviewed-on: https://chromium-review.googlesource.com/954289
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5164b797
|
2018-03-06T09:10:12
|
|
Vulkan: Support GL_LUMINANCE and GL_LUMINANCE_ALPHA
The dEQP tests cannot be turned on before immediate data for drawElements
is supported.
Bug:angleproject:2364
Change-Id: Id5fd6fbc0c74f2dba08341f36ca0091d540f4ed8
Reviewed-on: https://chromium-review.googlesource.com/951402
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
ed8b4919
|
2018-03-07T20:34:03
|
|
Vulkan: Fix missing depth/stencil access flags.
This regressed in http://crrev.com/c/948782. It may have also
exposed a problem where our bots are not correctly using the
layers.
Bug: angleproject:2361
Change-Id: I764bb821b5bfd2571a4c43f9444dcef67ea65bc4
Reviewed-on: https://chromium-review.googlesource.com/954412
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
443c57f6
|
2018-03-02T21:46:02
|
|
Add RenderTargetCache helper.
This class encapsulates the Framebuffer::syncState update pattern that
caches the RenderTargets for the back-end. RenderTargets abstract away
the differences between Textures/Renderbuffers/Surfaces for the
back-end and allows the back-end to treat the various types the same.
This helper class allows sharing code to cache the RenderTargets.
Bug:angleproject:2372
Change-Id: Ib2beb28a616dee1d34c485cd1a19b7202ef70a60
Reviewed-on: https://chromium-review.googlesource.com/948783
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e3688d27
|
2018-03-07T22:14:54
|
|
Revert "Add NPOT validation to copyTextureCHROMIUM"
This reverts commit 2202680c6a5d08ba74d57ce675af2266dddb205c.
Reason for revert: ASAN found error https://ci.chromium.org/buildbot/chromium.gpu.fyi/Mac%20FYI%20GPU%20ASAN%20Release/210
Original change's description:
> Add NPOT validation to copyTextureCHROMIUM
>
> copyTextureCHROMIUM should generate INVALID_VALUE when using a NPOT
> texture and level not equal to zero, so we should add
> validation to catch this case.
>
> BUG=angleproject:2380
>
> Change-Id: I0ea50a981e4d8f10f5913969f6b629617b57aa15
> Reviewed-on: https://chromium-review.googlesource.com/951713
> Commit-Queue: Geoff Lang <geofflang@chromium.org>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,brandon1.jones@intel.com
Change-Id: I04dcbd5e1d97b1bd968b26a06e4d3e4d175be0d8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2380
Reviewed-on: https://chromium-review.googlesource.com/953343
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
2202680c
|
2018-03-05T09:37:32
|
|
Add NPOT validation to copyTextureCHROMIUM
copyTextureCHROMIUM should generate INVALID_VALUE when using a NPOT
texture and level not equal to zero, so we should add
validation to catch this case.
BUG=angleproject:2380
Change-Id: I0ea50a981e4d8f10f5913969f6b629617b57aa15
Reviewed-on: https://chromium-review.googlesource.com/951713
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e4c5a23b
|
2018-03-02T21:00:31
|
|
Vulkan: Always use LOAD for RenderPass attachments.
The RenderPass load/store ops allow us to specify how we want to use
the data from the attachments. Previously we had the load op set to
CLEAR always, which would prevent us from doing multiple kinds of
operation. Using LOAD should conversatively work in any situation
as long as we can ensure each Image is cleared before we use it.
To this effect this patch also inserts a preliminary clear into each
Texture or Renderbuffer Image's initialization. We already had this
for Surfaces.
In the future we'll improve this by inserting proper load/store ops,
but this unblocks a lot more functionality in the interim.
Bug: angleproject:2361
Change-Id: I7610eaa39d81b23dd74b4a24b7f28a66a6dfffc6
Reviewed-on: https://chromium-review.googlesource.com/948782
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
24180607
|
2018-03-02T14:12:13
|
|
Allow rectangle textures to be sample with texture() in ESSL3
This makes them consistent with the other texture types. Also adds a
test for using texture(sampler2DRect, ...).
BUG=chromium:757974
BUG=angleproject:1650
Change-Id: Ie966da928ae0c83850da1e530e72c0d501909394
Reviewed-on: https://chromium-review.googlesource.com/946675
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
065aa863
|
2018-02-22T15:30:27
|
|
Generate code for unmangled name lookup
Instead of using an std::map at each symbol table level, use the
gen_builtin_symbols.py script to build a function to query unmangled
names.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I4f1cf1df1f50fe9d909f3249150ee002ee6efb61
Reviewed-on: https://chromium-review.googlesource.com/931885
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8f184ae9
|
2018-03-06T20:36:50
|
|
Update dEQP EGL expectations
Timeout is not enough to suppress
functional.native_color_mapping.native_window.*
since it's retried 3 times and always times out.
Need to skip.
BUG=angleproject:2382
Change-Id: Ib87f25cc6c17be2b5c4c592374b28386685115d2
Reviewed-on: https://chromium-review.googlesource.com/951973
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a53d0e18
|
2018-02-13T00:06:06
|
|
Vulkan: support indices in client memory.
glDrawElements will now work with indices and/or vertex data in client memory,
as well as in a buffer object.
Enable corresponding tests.
BUG=angleproject:1683
Change-Id: Iefb9796a48b21ed6f9a837b08b0ad3218ff6dd6b
Reviewed-on: https://chromium-review.googlesource.com/915721
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6dd4a92a
|
2018-03-02T16:35:13
|
|
Vulkan: track attributes in client memory.
To support indexed draws it's useful to have a cheap query for the
presence of vertex attribute data in client memory.
This patch adds a bit mask to keep track of such attributes.
It also lets us simplify VertexArrayVk::streamVertexData() slightly.
BUG=angleproject:1683
Change-Id: I871bfb885112650b025e110c383db3c391eafb90
Reviewed-on: https://chromium-review.googlesource.com/947927
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
99d492c2
|
2018-02-27T15:17:10
|
|
Use packed enums for the texture types and targets, part 2
This completes the refactor by using the packed enums in the gl:: layer
and in the backends.
The packed enum code generation is modified to support explicitly
assigning values to the packed enums so that the TextureTarget cube map
faces are in the correct order and easy to iterate over.
BUG=angleproject:2169
Change-Id: I5903235e684ccf382e92a8a1e10c5c85b4b16a04
Reviewed-on: https://chromium-review.googlesource.com/939994
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
98d0a2b1
|
2018-02-26T11:55:34
|
|
Use strtod instead of istringstream+locale for parsing floats.
BUG=803034
Change-Id: I69ca7a86e1841e86c6a8cf6a0b7279a8e42b0012
Reviewed-on: https://chromium-review.googlesource.com/937964
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
879f90d2
|
2018-03-01T11:45:20
|
|
Vulkan: Avoid recopying the data every time we draw line loops
Use the Observer pattern to get notified when the BufferVk we've copied our data
from is changing. We will only recopy the data if anything has changed, but otherwise
we'll keep drawing with the same index buffer we've created previously.
Bug: angleproject:2335
Change-Id: Ib65677b4d5ec90c46a5e3b975fffd1fddeed59e7
Reviewed-on: https://chromium-review.googlesource.com/948622
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7b21381e
|
2018-03-06T10:13:13
|
|
Vulkan: Support changing in-flight Renderbuffers.
Bug: angleproject:2347
Change-Id: I9bb1494a960969bb6e7c8656c27c7c180ddba069
Reviewed-on: https://chromium-review.googlesource.com/922458
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d2cb7cec
|
2018-03-02T09:04:03
|
|
ES31: Fix wrong method of computing combined interface blocks
This patch fixes a bug in the method of validating the number of
combined interface blocks in currenct ANGLE implementation.
When a resource (uniform block, shader storage block, image, atomic
counter buffer, atomic counter) is used by multiple shader stages,
each such use counts separately against the combined resource limit.
This patch also fixes an unexpected link error in a related test by
skipping the test when the number of ssbos exceeds the resouorce
limit.
BUG=angleproject:1951
TEST=angle_end2end_tests
Change-Id: I0de439a412148e0d5ebef3c27d20e0cbd536175a
Reviewed-on: https://chromium-review.googlesource.com/945143
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
e05ffdd1
|
2018-02-19T13:24:17
|
|
GLES1: caps: Use GLES3 spec shader compiler
If we attempt to compile the GLES1 emulation shader when the client
version is 1, we use the webgl 1 / GLES2 spec, not the GLES3 spec that
we use for GLES1 emulation.
This CL adds a case in Compiler.cpp for ES 1 contexts to use the higher
spec shader compiler.
BUG=angleproject:2306
Change-Id: I86fe534dd405279155bd81680fed77b8f9a09042
Reviewed-on: https://chromium-review.googlesource.com/925548
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
a5d583e9
|
2018-02-08T10:59:05
|
|
GLES1: state: Add crop rect / generate mipmap texparameters
GLES1 has at least two places where all texture objects
can carry more state:
- Crop rectangle, used with glDrawTex
- Generate mipmap parameter, which lets the user
auto-generate mipmaps for textures from a texture
parameter
This CL adds them to the Texture / TextureState classes.
BUG=angleproject:2306
Change-Id: Ia43882d36f166b49a09434e77f8c288478e2a454
Reviewed-on: https://chromium-review.googlesource.com/909579
Reviewed-by: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
56e9540a
|
2018-02-19T16:45:26
|
|
GLES1: caps: Allow ES1 to use formats from core ES2
BUG=angleproject:2306
Change-Id: I93e85f3014e7d9a645e13d3c3025b5360e2a63db
Reviewed-on: https://chromium-review.googlesource.com/925550
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
f0e89be6
|
2017-11-08T14:00:32
|
|
Use packed enums for the texture types and targets, part 1
In OpenGL there are two enum "sets" used by the API that are very
similar: texture types (or bind point) and texture targets. They only
differ in that texture types have GL_TEXTURE_CUBEMAP and target have
GL_TEXTURE_CUBEMAP_[POSITIVE|NEGATIVE]_[X|Y|Z].
This is a problem because in ANGLE we use GLenum to pass around both
types of data, making it difficult to know which of type and target a
variable is.
In addition these enums are placed somewhat randomly in the space of
OpenGL enums, making it slow to have a mapping from texture types to
some data. Such a mapping is in hot-code with gl::State::mTextures.
This commit stack makes the texture types and target enums be
translated to internal packed enums right at the OpenGL entry point
and used throughout ANGLE to have type safety and performance gains.
This is the first of two commit which does the refactor for all of the
validation and stops inside gl::Context. This was the best place to
split patches without having many conversions from packed enums to GL
enums.
BUG=angleproject:2169
Change-Id: Ib43da7e71c253bd9fe210fb0ec0de61bc286e6d3
Reviewed-on: https://chromium-review.googlesource.com/758835
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
140152e7
|
2018-02-08T14:46:44
|
|
Statically allocate built-in function symbols
A script gen_builtin_symbols.py now generates code for initializing
built-in function symbols. The TFunction objects are initialized at
C++ compile time.
The source file used for the functions is in a format that's similar
to how functions are given out in the GLSL spec, so it is easy to
maintain.
The function symbols are still inserted to the symbol table levels
same as before. Getting rid of inserting the symbols at runtime is
intended to be done as follow-up.
This speeds up angle_unittests on Linux in release mode by a bit less
than half, and in debug mode by more than half.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I11c9de98c74d28e7e8cdf024516e2f6ee30ca33e
Reviewed-on: https://chromium-review.googlesource.com/924155
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d05f964b
|
2018-03-05T12:13:26
|
|
Last case in switch statement can't be empty in ESSL 3.10
This is based on recent discussion in Khronos, though public specs
have not yet been updated to reflect this.
BUG=angleproject:2388
TEST=angle_unittests
Change-Id: I66a0d03b3c2bb9740772a813b543f8f6c6bb2a28
Reviewed-on: https://chromium-review.googlesource.com/947977
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
dc0cdba8
|
2018-02-28T00:42:20
|
|
Vulkan: Fix Texture attachment state changes.
This implements a notification to the Framebuffer that an attachment
had a state change that might require recreating the VkFramebuffer.
This implementation is much simpler than the prior method with
signal notifications. Only currently implemented for TextureVk but
will also be implemented for RenderbufferVk.
Bug: angleproject:2347
Change-Id: I05f7da4132f6ed2bda02671e8ba5ee9805252928
Reviewed-on: https://chromium-review.googlesource.com/930024
Reviewed-by: Luc Ferron <lucferron@google.com>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
78e39b3f
|
2018-02-26T07:42:44
|
|
Vulkan: Line loops for indexed draw calls
Bug: angleproject:2335
Change-Id: Iabd6ae8181c6d3fb487f953a6fbf699db568a1c9
Reviewed-on: https://chromium-review.googlesource.com/941261
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b27b03a2
|
2018-02-19T13:38:48
|
|
GLES1: caps: GLES1-specific context limits
There are some GLES1-specific caps such as the number of multitexturing
units and the matrix stack depths. This is important for validation.
This uses Table 6.20 and 6.22 from the GLES 1.1 spec.
Specify them in Caps.h and minimums in .cpp. Since we will be emulating
GLES1, there is no plan to collect the caps from the native
implementation; just initialize reasonable values in Context.cpp.
In fact, we will go with the values above minimum:
- 4 multitexturing units (vs. 2 minimum)
- 6 clip plans (vs. 1 minimum)
- 16 stack depth for projection matrices (vs. 2 minimum)
- 16 stack depth for texture matrices (vs. 2 minimum)
+ clang-format Caps.cpp / h
BUG=angleproject:2306
Change-Id: Ib28c317426be598a2adad7bd01920c03f27dc74a
Reviewed-on: https://chromium-review.googlesource.com/925549
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
27f4321e
|
2018-02-26T11:05:53
|
|
ES31: Implement memoryBarrier on D3D backend
Because D3D11 makes a coherent write, so memoryBarrier is not needed on
D3D backend.
This patch also simples some test cases and modifies some cases errors when
accessing memory after an incoherent write, but does not use memoryBarrier.
BUG=angleproject:2280
TEST=angle_end2end_tests.ComputeShaderTest.*
Change-Id: Iee5d105a0b6d8534aded03fdaaefc909864d33a4
Reviewed-on: https://chromium-review.googlesource.com/937023
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6f683089
|
2018-02-28T00:35:16
|
|
Rename signal utils to Observer.
This completes the basic refactor to the Observer pattern.
Bug: angleproject:2372
Change-Id: I810deff7c7e39baa64b57ce2a79cd732b1af7c34
Reviewed-on: https://chromium-review.googlesource.com/940862
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
0d88ec9f
|
2018-02-27T16:25:31
|
|
ES31: Add link validations on geometry shader uniforms
This patch adds the link validations on the uniforms defined in a
geometry shader.
1. Validate if there is any link mismatch between a geometry shader
uniform and a uniform defined in another shader in the current
graphics pipeline.
2. Validate if the number of images, samplers or atomic counters in
a geometry shader exceeds the related resource limit.
3. Validate if there is name contradiction between a geometry shader
uniform and a vertex shader attribute.
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.shaders.linkage.es31.geometry.uniform.*
dEQP-GLES31.functional.geometry_shading.basic.*
dEQP-GLES31.functional.geometry_shading.conversion.*
dEQP-GLES31.functional.geometry_shading.emit.*
dEQP-GLES31.functional.geometry_shading.varying.*
dEQP-GLES31.functional.geometry_shading.instanced.geometry_*
dEQP-GLES31.functional.geometry_shading.instanced.invocation_output_*
dEQP-GLES31.functional.geometry_shading.instanced.draw_*
Change-Id: I365aee624a3a79658c3e4c7487a586cf9532b529
Reviewed-on: https://chromium-review.googlesource.com/939264
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
888081d5
|
2018-02-27T00:24:46
|
|
D3D11: Refactor dependent Framebuffer state changes.
Previously, when a state change would cause a Texture to
recreate its storage specific to D3D11, we would use a
dependent notification from RenderTarget11 to Framebuffer11
to re-check internal dirty bits. In this new method, we
instead set dirty bits on the gl::Frambuffer directly. This
also means we use fewer internal objects for these
notifications, because we share the same structures between
the D3D11 back-end notifications and the top-level notifications
we use for Robust init and Framebuffer completeness.
This also allows us to get rid of one "if" that we check on
every draw call in D3D11.
This also introduces a dirty bits guard concept - a shadow
set of dirty bits that is checked in dependent state changes
to ensure that extra bits aren't set inside syncState.
This also implements Framebuffer dirty bits for the D3D9
back-end. This has the side effect of cleaning up the
"null colorbuffer" D3D9 workaround.
Bug: angleproject:2372
Change-Id: Ie346d39030f4f6df583d735685b0babea4e745a8
Reviewed-on: https://chromium-review.googlesource.com/936691
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
92e4e079
|
2018-03-02T13:34:56
|
|
Test shader builtin accessibility from different stages
Test that fragment, vertex or compute shader exclusive builtins are
not accessible from another shader stage. This will protect against
regressions when refactoring the symbol table.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I50f97cbde3f1c5cb4584568e3008f1dab724b769
Reviewed-on: https://chromium-review.googlesource.com/941953
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
ff32734d
|
2018-02-22T18:20:37
|
|
Support EGLStream from B8G8R8A8_UNORM D3D11Texture.
Mozilla bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1415754
BUG=angleproject:2368
Change-Id: Ic2c71b36e7b08560e158fd3dbf10b2fe225f1364
Reviewed-on: https://chromium-review.googlesource.com/935148
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
259b2977
|
2018-02-26T16:30:06
|
|
Move constructors may not be marked explicit.
BUG=angleproject:2383
Change-Id: If22c7f7c15b7bbe89b859281b28c2b9695e34a1d
Reviewed-on: https://chromium-review.googlesource.com/945415
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
28cf920e
|
2018-03-02T15:54:56
|
|
Fix checking texture function offset
There was a mistake in one of the texture offset function names being
checked. Fix it and add a test making sure that a similar mistake
cannot slip in again.
BUG=angleproject:2387
TEST=angle_unittests
Change-Id: I2dddfbdc2836f9e7e94ca6573a8f3689eecf7eb2
Reviewed-on: https://chromium-review.googlesource.com/946254
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
e765e215
|
2018-03-01T12:00:48
|
|
Test that ESSL 300 standard derivatives compile successfully
These functions have the same name in the ESSL 100 extension, creating
a possibility for conflicts. This adds a convenient way to test for
regressions when refactoring the symbol table.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I9716524a0ea85064ba5f3ee8e7adfbdfc59d257e
Reviewed-on: https://chromium-review.googlesource.com/945989
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
437664b4
|
2018-02-28T15:38:14
|
|
Clean up TSymbolTable entry points
TSymbolTable API can be cleaned up further now that we have separate
logic for inserting builtins and user-defined symbols.
BUG=angleprojec:2267
TEST=angle_unittests
Change-Id: I7a228891ecdf4696e50868b9e7dfc2a50b5d8e92
Reviewed-on: https://chromium-review.googlesource.com/941301
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
b7d14586
|
2018-03-01T18:07:41
|
|
Update dEQP EGL expectations
BUG=angleproject:2341,angleproject:2382
Change-Id: I5bcc0938e2d86165022cc80afda6b11c801ef5ed
Reviewed-on: https://chromium-review.googlesource.com/944711
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
d6fef528
|
2018-03-01T13:41:13
|
|
Shorten mangled names of types
This will reduce binary size by a few kilobytes once we store mangled
names of functions as constexpr strings.
This still keeps mangled names human readable.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: Ia63980bd511c701a93e2c5e247d24578c7d7f332
Reviewed-on: https://chromium-review.googlesource.com/943101
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
98e6a5f7
|
2018-02-28T15:47:13
|
|
Add missing #include.
Would not compile locally on Linux without adding #include <algorithm>.
BUG=none
Change-Id: I2f817faf681234c0e7eeeda0ad837e8285d9071a
Reviewed-on: https://chromium-review.googlesource.com/941613
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
d444255a
|
2018-02-27T22:03:47
|
|
Refactor signal utils into Observer pattern.
These types were over-generalized. All use cases featured
arrays of resources attached to single parent resources. The
channel ID is sufficient to identify the child resource in the
parent, and having variadic template arguments wasn't necessary.
Futhermore we can rename these types to use the common Observer
pattern. This should make them more readable to new developers.
Also update some classes to inherit from Subject instead of
having a member Subject. This cleans up the code in a few places.
This should lead to a simpler refactor to allow dependent dirty
bits notifications in the Vulkan back-end.
In the following patch the signal_utils files will be renamed. They
are not renamed in this patch to ensure git history is preserved.
Bug: angleproject:2372
Change-Id: I17a3f2c8d92afd4bb3cba2d378c3a2e8a6d7fb11
Reviewed-on: https://chromium-review.googlesource.com/936690
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2f3a0dc5
|
2018-02-27T22:39:44
|
|
Report INVALID_VALUE if width/height of invalidateSubFramebuffer is negative.
BUG=angleproject:2376
TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.invalidate_sub_framebuffer
Change-Id: Ie1ca30f29d7583c86130f46d4e6b5c7211eee63a
Reviewed-on: https://chromium-review.googlesource.com/938367
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a8e868f2
|
2018-01-28T23:32:25
|
|
Vulkan: use correct vertex stride.
It was passing the attribute size, not the stride, so it worked only
when they were the same.
Enable corresponding tests.
BUG=angleproject:2310
Change-Id: Ie3ab13567c16c302aa9aeda5d059e5fd4eb92b4e
Reviewed-on: https://chromium-review.googlesource.com/875304
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
640fa5dc
|
2018-02-22T17:03:15
|
|
Enable more of AttributeLayoutTest.
Enable more parts of AttributeLayoutTest because:
- partial Vulkan support for vertex data in client memory has landed
- we can work around bugs which prevented some parts from working
- we have more fine-grained control over which parts to run
Avoid glBufferSubData to work around ANGLE bug 2374.
Let subclasses decide about skipping test cases. For example on Vulkan
indexed draw with vertex data in client memory is not supported yet.
BUG=angleproject:1683
Change-Id: Id073334299bd1a642b2518ccb3c47ebd8ff010d9
Reviewed-on: https://chromium-review.googlesource.com/933943
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
360098d5
|
2018-02-21T07:33:50
|
|
Vulkan: Implement GL_LINE_LOOP support for non-indexed draw calls
Line loops aren't supported in Vulkan directly, so we use line strips with
an indexed buffer to emulate them. To hide the complexity of that, I've created
the LineLoopHandler class in vk_utils.
Bug: angleproject:2335
Change-Id: Id3e020d27e5265565e61e96d3fd0187c4fe2b152
Reviewed-on: https://chromium-review.googlesource.com/931421
Commit-Queue: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
339f65bb
|
2018-02-27T12:52:48
|
|
ES31: Fix incorrect initialization for indexed atomic counter buffer
BUG=angleproject:1729
TEST=dEQP-GLES31.functional.state_query.indexed.atomic_counter_buffer_binding_getbooleani_v
Change-Id: I3f6975ecc0e69f487f66ff65d613307fcaa6eb08
Reviewed-on: https://chromium-review.googlesource.com/939106
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
aef92166
|
2018-02-27T13:51:44
|
|
Move the early-return case of zero mask to Context::blitFramebuffer
When the mask is zero, no buffers are copied in BlitFramebuffer. But we still
need to check all the error situations. So mask of zero should be put in
blitFramebuffer not the validation file.
Meanwhile, we adjust the checking sequence to pass the deqp case.
BUG=angleproject:2375
TEST=dEQP-GLES31.functional.debug.negative_coverage.get_error.buffer.blit_framebuffer
Change-Id: I73c78ffb8853153f70fc30e8ae0e704e08e454ac
Reviewed-on: https://chromium-review.googlesource.com/938573
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
06a87ec8
|
2018-02-25T22:07:27
|
|
Vulkan: Fix offsets in BufferVk::setDataImpl.
We were using a src offset instead of a dest offset. The staging
buffer should always start at the zero offset, while the dest
buffer (the real buffer) should use the offset argument to
Buffer*Data.
Bug: angleproject:2374
Change-Id: I9ee702709d9c15945935f4eae25f308b71e0d1e8
Reviewed-on: https://chromium-review.googlesource.com/937022
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
d063affa
|
2018-02-22T10:19:09
|
|
ES31: Add link validation on geometry shader varyings
This patch adds the link validation on geometry shader varyings.
According to SPEC, geometry shader inputs should not be treated
as arrays for the purpose of interface matching.
This patch also moves the checks on fragment input bindings into
a single function.
BUG=angleproject:1941
TEST=angle_end2end_tests
dEQP-GLES31.functional.shaders.linkage.es31.geometry.varying.*
Change-Id: Ib3ca64e28683e9688edc9432d43ff5a70c86117e
Reviewed-on: https://chromium-review.googlesource.com/929866
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|