|
d4556dfc
|
2017-09-27T16:45:22
|
|
Reland 'Adds TUnorderedMap and uses it for tLevel in TSymbolTableLevel.'
Reland of https://crrev.com/c/526672
Bug: 697758
Change-Id: I410e4774c4ad85595eb8789603901878b209c857
Reviewed-on: https://chromium-review.googlesource.com/688296
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
|
|
8e4b355b
|
2017-08-30T14:20:58
|
|
ES31: Implement Geometry Shader inputs and outputs
This patch intends to implement Geometry Shader inputs and
outputs in ANGLE GLSL compiler.
1. Only accept arrays as the inputs of a Geometry Shader.
2. Allow unsized arrays as the inputs of a Geometry Shader after a
valid input primitive declaration and assign size to them.
3. Implement Geometry Shader outputs.
4. Allow Geometry Shader inputs and outputs using interpolation
qualifiers ('flat', 'smooth', 'centroid').
5. Allow using 'location' layout qualifier on Geometry Shader inputs
and outputs.
BUG=angleproject:1941
TEST=angle_unittests
Change-Id: Ia7e250277c61f45c8479437b567c2831ff26b433
Reviewed-on: https://chromium-review.googlesource.com/650211
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
283c2194
|
2017-10-23T17:11:50
|
|
Support arrays of arrays in UseInterfaceBlockFields
This can be tested more fully once parsing arrays of arrays will be
supported.
BUG=angleproject:2125
Change-Id: I89c8f33b8cca5d6f5aa3f20aab23dccac53a956f
Reviewed-on: https://chromium-review.googlesource.com/733128
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
e7c2857d
|
2017-10-23T16:29:33
|
|
Clean up direct access of ShaderVariable::arraySize
This change is pure refactoring. It's intended to help with adding
support for arrays of arrays.
BUG=angleproject:2125
TEST=angle_unittests
Change-Id: I82881a98c3c476fd6666a551ce6be255ae0de4cf
Reviewed-on: https://chromium-review.googlesource.com/733127
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
5547b384
|
2017-10-23T18:16:01
|
|
Vulkan: Implement simple static textures.
After this change, the SimpleTexture2D sample mostly runs.
BUG=angleproject:2167
Change-Id: Ie6d56f890b1aede329e11d1e987d0f8c17a2d0b4
Reviewed-on: https://chromium-review.googlesource.com/720072
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
cc4ce4a2
|
2017-10-23T16:40:12
|
|
Don't initialize textures on SubImage calls if the whole image will be filled.
BUG=angleproject:2107
BUG=angleproject:2196
Change-Id: I3e7e78bfc64f1683921af2e48fe20c7be0b85af3
Reviewed-on: https://chromium-review.googlesource.com/734228
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
815a6c9a
|
2017-10-21T14:33:04
|
|
Vulkan: Fix copyImage region parameters.
In cases where we were reading back more than one pixel in ReadPixels,
and in some cases for texture init, we weren't using the correct
parameters to vkCmdCopyImage. This CL fixes both of those by using
more correct copy regions, and fixing the row and depth pitch
computation using vkGetImageSubresourceLayout.
BUG=angleproject:2167
Change-Id: Ib70217ed4a17be6b4b1b8aeec9a8a6199d210d88
Reviewed-on: https://chromium-review.googlesource.com/732190
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8df71735
|
2017-10-20T16:57:09
|
|
D3D9: Perform the MAD operation AFTER pre/unmultiply logic.
The multiply/add uniforms are to mask the output of the shader based
on the destination format. The pre/unmuliply logic should be performed
on the source data without masking applied.
TEST=conformance/textures/canvas/tex-2d-rgb-rgb-unsigned_byte.html
BUG=angleproject:2192
Change-Id: I6e5f29a7d56e18bd1a81ff56500edb4c6b55eb55
Reviewed-on: https://chromium-review.googlesource.com/730494
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
56ff3ce2
|
2017-10-20T16:52:42
|
|
D3D9: Implement the CPU-copy path for CopyTextureCHROMIUM.
This path is hit for LUMA formats.
Only copy from storage to image when the storage is renderable,
otherwise it already has up-to-date data. D3D9 cannot sync storage to
image without it being renderable.
Commit the region after CPU copies to make sure everything is
synchronized afterwards.
TEST=conformance/textures/canvas/tex-2d-luminance_alpha-luminance_alpha-unsigned_byte.html
BUG=angleproject:2192
Change-Id: I74ff748bd051a52cf472ca7ff77f54dfb5ba65b9
Reviewed-on: https://chromium-review.googlesource.com/730493
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b1fa7d74
|
2017-10-23T14:25:18
|
|
Fix -Wnon-virtual-dtor warning in DispatchTableGL
BUG=angleproject:2188
Change-Id: Ie229057f3338efc78d20b05edd0fcbdcc9735dda
Reviewed-on: https://chromium-review.googlesource.com/733785
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: 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>
|
|
89a69a03
|
2017-10-23T12:20:45
|
|
Generate performance warnings in HLSL translation
Generate performance warnings for some code that undergoes heavy
emulation when translated to HLSL:
1. Dynamic indexing of vectors and matrices.
2. Non-empty fall-through cases in switch/case.
The warnings are generated only when code is translated to HLSL.
Generating them in the parsing stage would add too much maintenance
burden.
Improves switch statement fall-through handling in cases where an
empty fall-through case follows a non-empty one so that extra
performance warnings are not generated.
BUG=angleproject:1116
Change-Id: I7c85d78fe7c4f8e6042bda72ceaaf6e37dadfe6c
Reviewed-on: https://chromium-review.googlesource.com/732986
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
4cd889ec
|
2017-10-20T11:19:57
|
|
Remove unnecessary work from VariablePacker
The VariablePacker does not check the staticUse flag, variables should
be pre-filtered according to their staticUse flag before passing them
to CheckVariablesInPackingLimits if that's desired.
The names of the variables are also not relevant to the packing. We
keep the "name" field to make the code easier to debug, but updating
the mappedName is not useful.
This will make implementing arrays of arrays simpler.
BUG=angleproject:2125
TEST=angle_unittests
Change-Id: I5ce91885f6478ad436e6fa60ca9675e161d10256
Reviewed-on: https://chromium-review.googlesource.com/730104
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
6d94f064
|
2017-10-21T22:19:40
|
|
Add more complete NULL driver for the GL back-end.
This implements a NULL driver in OpenGL by stubbing out most of the
GL functions in FunctionsGL except a few static "Gets" that are needed
for initialization with Chromium and the tests. It is intended to be
used for performance testing ONLY and will not have correct behaviour.
It also adds a define to enable conditionally excluding the null entry
points for implementations that wish to save on a bit of binary size.
Also fixes some of the typedefs in functionsgl_typesdefs.h that were
turned up after implementing the direct assignment from NULL stub
entry point, generated from gl.xml, to the function pointer with type
defined from functionsgl_typedefs.h.
BUG=angleproject:2188
Change-Id: Ifa1e4739cb471ab6b52a4bf24c16d9eb4b334ac5
Reviewed-on: https://chromium-review.googlesource.com/727530
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
29ddcc99
|
2017-10-21T16:10:02
|
|
Add an auto-generated dispatch table for GL bindings.
This will more easily allow us to extend our implementation to make a
NULL or "stub" set of bindings. It also exposes a lot more function
permutations via extension variations.
It might improve the loading speed for bindings obtained via
extensions. Instead of generating a list every time an extension is
checked, we use a single std::set for a fast query. However because
more extensions are checked for more entry points, it might not make
a huge difference.
This also fixes an issue where the "real" ANGLE GL headers were being
propagated to the entry point dispatch table definitions, instead of
being in a totally isolated file. This patch adds the missing typedefs
to our proxy headers.
It also fixes the naming of a few entry points which was inconsistent
with the spec. It also makes an XML adjustment to GL_NV_path_rendering
to accomodate a hole in the spec where glLoadMatrixfEXT was not ever
defined in OpenGL ES. A spec oddity with the TexStorage extension is
not resolved - in this case, some methods are only exposed if other
extensions are present, but this information is missing from gl.xml.
BUG=angleproject:2188
Change-Id: I0fd61dd32de6fadd55fa6bd79295833392d51104
Reviewed-on: https://chromium-review.googlesource.com/726949
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
76e471e9
|
2017-10-21T09:56:01
|
|
Vulkan: Implement basic uniforms.
This implementation adds one descriptor set with two bindings: one for
default vertex uniforms and the other for fragment. It adds two
corresponding uniform buffers, and the logic for updating the
descriptor sets bound to Vulkan. It doesn't handle much in the way of
synchronization and dependency management, or uniform update.
If there are only vertex or fragment uniforms the empty uniform buffer
is omitted from the descriptor set. If both are missing, there is no
descriptor set bound.
Note that as our implementation progresses we might not be able to
initialize our descriptor sets at link time, due to streaming in
uniform data.
BUG=angleproject:2167
Change-Id: I4ce4c3879ab454114df43bfac8d87ddf817fc045
Reviewed-on: https://chromium-review.googlesource.com/706340
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
711b7a12
|
2017-10-09T13:38:12
|
|
ES31: Support images in the compiler on D3D backend.
BUG=angleproject:1987
TEST=angle_end2end_tests
Change-Id: I83f5f9ffda7e676a8f98b963d1f1c50e9463faf4
Reviewed-on: https://chromium-review.googlesource.com/706247
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7478ce7f
|
2017-10-13T13:19:07
|
|
D3D11: Minor Optimization to DrawCallNeedsTranslation
Remove IsStreamingIndexData from DrawCallNeedsTranslation since
IsStreamingIndexData is only needed for drawElementsIndirect for fast path.
This change gives about a 4% improvement on the drawElements benchmark for
the D3D11 backend with the null driver.
BUG=angleproject:1155
Change-Id: Ife2a9748f6b6fe9bc1f3a67c96672ab941a89d44
Reviewed-on: https://chromium-review.googlesource.com/717946
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
111a99e8
|
2017-10-17T10:58:41
|
|
Check that the requested extension is supported by the backend.
Previously, we would only check that the extension was requestable and
not verify that the driver could support it.
BUG=angleproject:1523
Change-Id: I5273920fc08a20beda54d4afaeb406c6c1c2056f
Reviewed-on: https://chromium-review.googlesource.com/723559
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
02032bda
|
2017-10-13T18:10:17
|
|
Generate an error if no XFB varyings are in use
GLES specifies an error if BeginTransformFeedback is called when no
binding points would be used.
BUG=angleproject:2184
TEST=angle_end2end_tests
Change-Id: Ie4489b5ba63885e718dafdcdaacc02b603959be3
Reviewed-on: https://chromium-review.googlesource.com/719136
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
cbcb96fc
|
2017-10-19T14:14:06
|
|
Fix switch/case last case validation for ESSL 3.10
No statement should be required after the last case label of a switch
statement in ESSL 3.10. The validation is still kept for ESSL 3.00 for
dEQP compatibility. If the dEQP tests are changed in the future, we
might consider just issuing a warning regardless of shader version.
BUG=angleproject:2189
TEST=angle_unittests
Change-Id: Ic53e71e0176668a7dbffa315712885846e217f03
Reviewed-on: https://chromium-review.googlesource.com/727802
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
23e02843
|
2017-10-17T13:24:09
|
|
Only validate texture layer if texture is non-zero.
From the ES3.0 spec:
The error INVALID_VALUE is generated if texture is non-zero and layer
is negative.
BUG=765919
Change-Id: I0ac9bd0335ab4d55701d6def0158297d5add993e
Reviewed-on: https://chromium-review.googlesource.com/723741
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d0ef13a2
|
2017-08-28T22:53:24
|
|
Stand-alone build with gn.
This should do the same things as the stand-alone gyp build, but with gn.
You should switch to gn as gyp support will go away.
You need a recent enough version of gn. If yours is too old try this one:
./buildtools/linux64/gn
If "gclient sync" or anything fails with an ImportError on gyp stuff,
try running it with the following PYTHONPATH in the environment:
PYTHONPATH=tools/gyp/pylib
BUG=angleproject:1569
Change-Id: I56d19bec2d8b649a7bd65062c656cbfc69ea3dd8
Reviewed-on: https://chromium-review.googlesource.com/642588
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
d042fba4
|
2017-10-17T23:15:37
|
|
Unset conflicting DSVs in StateManager11.
This was showing up in BlitFramebufferPerf.Run/d3d11_depth_2_samples.
It would only show up when running the perf tests with the D3D11
Debug layer enabled.
BUG=angleproject:2188
Change-Id: I71f310641d4a4c017e8c4c907c2bdc61019978a4
Reviewed-on: https://chromium-review.googlesource.com/724962
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0a6752e3
|
2017-10-17T22:59:09
|
|
Use default window size in RenderTestParams.
This fixes a D3D11 runtime warning in perf test init. We don't
see it on the bots because we don't typically enable the D3D11
runtime.
BUG=angleproject:2188
Change-Id: I512db7d5a34204f1d94e28d80cadb18f9b17e55f
Reviewed-on: https://chromium-review.googlesource.com/724738
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c514348e
|
2017-10-15T20:20:06
|
|
Vulkan: Minor cleanups to ProgramVk.
This moves the Pipeline Layout and related layout code init into the
LinkProgram implementation call. These resources don't depend on
anything other than the state at link time. Moving the init makes
the calling code a bit simpler since it doesn't need to process error
conditions and check for validity every time.
Also introduce a reset() method, similar to ProgramD3D. This will
allow us to re-link a program multiple times (once resource lifetime
management is properly implemented).
BUG=angleproject:2167
Change-Id: Ibe76ed9b901adf6b69b51ba8219b3ce79d55b87d
Reviewed-on: https://chromium-review.googlesource.com/720071
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
ebf7299e
|
2017-10-13T14:09:45
|
|
Vulkan: Minimal dirty bits for ContextVk.
Currently this won't speed up performance much, if at all, since we
don't even really support state changes. It sets the stage for using
a pipeline cache later, with better state change support. It also
makes implementing descriptor sets for Textures a bit simpler, since
we can just update descriptor sets when the dirty bits tell us of a
Texture change.
Add cache structures to VertexArrayVk and ContextVk so we only need
to update the structures before we create a new pipeline. When we
support pipeline caching, we will most likely be updating a compact
representation for fast cache query.
BUG=angleproject:1898
BUG=angleproject:2167
Change-Id: Id545f2c67c06d8b6e8b7eb63ca70464f6b9a51f6
Reviewed-on: https://chromium-review.googlesource.com/713586
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
b9cb7f60
|
2017-10-16T11:48:04
|
|
Update gpu_test_expectations
This adds support for macOS 10.13 "High Sierra"
BUG=chromium:774309
Change-Id: I9b5b13750608f703dd0a3e0afeb1e314b437b8cc
Reviewed-on: https://chromium-review.googlesource.com/721520
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ba2eaea2
|
2017-10-13T14:09:34
|
|
Refactor vk::Buffer memory allocation.
Add the code that finds the right memory information into a shared
location. This will allow it to be reused with other points in the
code.
BUG=angleproject:2167
Change-Id: I72d0522e134666d0a00921cb5ef6bc093473afdf
Reviewed-on: https://chromium-review.googlesource.com/717189
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
5ad26408
|
2017-10-17T15:32:06
|
|
Add destructor to MultisampleTextureInitializer.
This was generating a warning for missing virtual destructor in
some configurations.
BUG=angleproject:2167
Change-Id: I05e335de4ab1160c6066665d588b50527ea34cbd
Reviewed-on: https://chromium-review.googlesource.com/723980
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
1bfa6b71
|
2017-10-13T14:07:45
|
|
Generalize GetUniformBlockInfo.
This method is useful for the Vulkan back-end as well as D3D11. It can
produce a uniform block layout for the default uniform blocks as well
as for interface blocks. Put it in blocklayout.h in the translator.
BUG=angleproject:2167
Change-Id: I13160906921da439746c1811a623006250aaeefd
Reviewed-on: https://chromium-review.googlesource.com/713941
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cc8e2738
|
2017-10-16T22:42:29
|
|
Move libpng into src subdirectory.
DEPS libpng into third_party/libpng/src, instead if third_party/libpng.
Then we'll be able to put its BUILD.gn into third_party/libpng instead
of the more distant build/secondary/... location.
BUG=angleproject:1569
Change-Id: I12b1c51d65682cba3954c26f1bd3f7491ac31b01
Reviewed-on: https://chromium-review.googlesource.com/722176
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
45f5d6f8
|
2017-10-16T23:43:27
|
|
Add missing comma to deqp.gypi.
BUG=angleproject:1569
Change-Id: I2bcde845d70159c1047349673ec8417b7686eafc
Reviewed-on: https://chromium-review.googlesource.com/721257
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
2e568cfb
|
2017-09-18T17:05:22
|
|
Add generator for packed GL enums.
For testing this also converts two unimportant GLenums, gl::BufferUsage
and gl::CullModeFace.
BUG=angleproject:2169
Change-Id: If1e86a97d0fed3fd567303aca6506ec579503076
Reviewed-on: https://chromium-review.googlesource.com/688000
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ce252b28
|
2017-10-16T17:58:32
|
|
Remove libpng and zlib from dEQP include dirs.
These extra include dirs were not being rebased correctly in the
BUILD.gn side. Instead add them later in angle_deqp_support. The
GN build already had the correct deps in any case.
BUG=angleproject:1569
Change-Id: Ieb4fab47bd9948a3309da239f2efdafbfcc8782c
Reviewed-on: https://chromium-review.googlesource.com/722065
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2d88e9bc
|
2017-07-21T16:52:03
|
|
Guarantee that symbol nodes get unique ids
The code is refactored so that symbol nodes can only be initialized
with an unique id object. This prevents accidentally forgetting to
create an id for a symbol node.
This opens up possibilities for future optimization: For example the
names and types of symbols could be stored in a central location
inside the SymbolTable, and TIntermSymbol nodes would only need to
store the symbol id. The symbol id could be used to look up the name
and type of the node.
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: Ib8c8675d31493037a5a28c7b36bb9d1113cc10f6
Reviewed-on: https://chromium-review.googlesource.com/580955
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
bf90b603
|
2017-10-14T20:46:14
|
|
Skip SubDataPreservesContents on Mac NVIDIA GL
Also SubDataOffsetPreservesContents.
BUG=angleproject:2185
Change-Id: I73401e4b511313f14ee9659f3d20c8086e3d04a3
Reviewed-on: https://chromium-review.googlesource.com/719890
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
40dbdd6c
|
2017-10-13T13:34:19
|
|
Clean up remaining extra semicolons from HLSL output
There are many types of statements after which a semicolon is not
needed. Skip writing the semicolon in HLSL output in these cases to
make the output code more readable.
BUG=angleproject:1013
TEST=angle_end2end_tests
Change-Id: I8f6a5e4ecfe5def456fdf19cca5ca451c13d7f35
Reviewed-on: https://chromium-review.googlesource.com/718420
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3755c48d
|
2017-10-13T15:40:26
|
|
Fix multiview transform feedback test
The multiview transform feedback test was not compliant with the GLES
spec for transform feedback. The issue had to do with this part of
section 2.15.2 of GLES 3.0.5 spec:
"The error INVALID_OPERATION is also generated by
BeginTransformFeedback if no binding points would be used, either
because no program object is active or because the active program
object has speciļ¬ed no output variables to record."
Fix this.
BUG=angleproject:2184
TEST=angle_end2end_tests on NVIDIA 387.92 drivers
Change-Id: I24816d2c24df0072179f21ead892bd2c9ba696d2
Reviewed-on: https://chromium-review.googlesource.com/718702
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
42975644
|
2017-10-12T12:31:51
|
|
Move incomplete texture logic to shared helper.
The incomplete texture handling is similar between the D3D and Vulkan
back-ends. We create 1x1 textures, initialize them to black, and bind
them when we detect incomplete textures. We would also bind incomplete
textures when we detect feedback loops. In the GL back-end, we
wouldn't detect feedback loops, and would allow the driver to handle
incompleteness.
Instead implement this in a shared helper class, and do the feedback
loop detection in the front-end for every back-end. This makes our
behaviour more consistent between back-ends, and prevents undefined
behaviour.
Because initializing multisample textures is tricky (they
can't be updated with TexImage calls) we do a bit of a workaround so
the back-end can clear the incomplete multisample texture initially.
This progresses the initial Vulkan textures implementation.
BUG=angleproject:2167
Change-Id: I79ddcc0711fcc986f2578a52ac6f701231d241ac
Reviewed-on: https://chromium-review.googlesource.com/700993
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
41200d21
|
2017-10-12T17:08:13
|
|
Skip WindowDifferentConfig on Windows
Actually failing on Win Intel D3D11,
but not possible to test for Intel D3D11 since GL_RENDERER is NULL.
BUG=angleproject:2183
TBR=jmadill@chromium.org
Change-Id: I894b2772af1154a86354ca755a06f146b33a4ed8
Reviewed-on: https://chromium-review.googlesource.com/716801
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
91c8de88
|
2017-10-12T16:32:44
|
|
WebGLCompat: Add test for ANGLE_instanced_arrays
Also adds a test for an integer overflow in DrawArrays validation.
BUG=602737
Change-Id: I71c5bd155cf919964f46e2b0b48267253cab91eb
Reviewed-on: https://chromium-review.googlesource.com/716841
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
22d7f1f3
|
2017-10-12T16:29:16
|
|
Simplify uniform type table texture type.
We can use Python's "endswith" more easily than using the current
checks.
BUG=angleproject:1390
BUG=angleproject:2167
Change-Id: I5a35602c91b989270cff1d42a9d5ede542039fbd
Reviewed-on: https://chromium-review.googlesource.com/717188
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
f6d242ed
|
2017-10-12T17:21:06
|
|
Wrap switch statements in blocks in HLSL
If variables are declared inside a GLSL switch statement, they are
scoped until the end of the switch statement. This is not compatible
with HLSL rules, where the scoping is until the end of the case. To
work around this, wrap switch statements in a block that declares
the variables in HLSL.
This is done after most other transformations done to the AST are
complete, since some of the other transformations may introduce
temporary variables.
BUG=angleproject:2179
TEST=angle_end2end_tests
Change-Id: Id0bb89affe103177fd3d6a6b2f3619b5e1ada0a6
Reviewed-on: https://chromium-review.googlesource.com/716381
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
c3bc9841
|
2017-10-11T15:15:59
|
|
WebGLCompatibility: test for vertex OOB caused by indices
BUG=602688
Change-Id: I49a1a9b3753159c91058a7754534383fbc8a778e
Reviewed-on: https://chromium-review.googlesource.com/713740
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
4bd730c8
|
2017-10-10T14:14:19
|
|
Recognize more non-fallthrough cases in switch/case
RemoveSwitchFallThrough now treats cases where break; or return; is
nested inside a block as non-fallthrough to avoid unnecessary
duplication of code. For example, the case 1 below would previously
get treated as fall-through:
switch(foo)
{
case 1:
{
break;
}
default:
break;
}
Now RemoveSwitchFallThrough doesn't do anything to this code.
BUG=chromium:772695
TEST=angle_end2end_tests
Change-Id: Iafab6d8b05c63bcdb5f54834dbc1f41192c31dd4
Reviewed-on: https://chromium-review.googlesource.com/709197
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
6aee8620
|
2017-10-10T11:21:11
|
|
Fall back to D3D11.0 from D3D11.1 in device creation
Some users of ANGLE might want to use the D3D11 backend on older
Windows 7 platforms that only support DXGI 1.1. DXGI 1.1 doesn't
recognize the FL 11.1 enum passed to D3D11CreateDevice, so special
fall-back code is needed to fall back to FL 11.0 or lower in this
case.
BUG=angleproject:2173
Change-Id: Id77401d0e2a16786ed44d117ca746908e8d0892c
Reviewed-on: https://chromium-review.googlesource.com/716356
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
d736cccf
|
2017-10-11T15:08:22
|
|
Add :extra_warnings to all units in BUILD.gn.
Fix resulting warnings.
Change-Id: Ie251012ee01aa484a8c489f9deeec385a50528f9
Reviewed-on: https://chromium-review.googlesource.com/713695
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
56612d6a
|
2017-10-12T15:46:30
|
|
Clean up TIntermTraverse API
Make NodeInsertMultipleEntry private and clarify some comments in
IntermTraverse.h.
BUG=angleproject:2100
TEST=angle_unittests, angle_end2end_tests
Change-Id: Iae60a46714c8b5cb9ad1e9d70aa6776f9deaf3d5
Reviewed-on: https://chromium-review.googlesource.com/715718
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
923ecef6
|
2017-10-11T12:01:38
|
|
Fix switch statement validation corner cases
The grammar needs to generate AST nodes even for no-op statements,
since they might be the last statement in a switch statement that is
required for switch statement validity. Change the grammar to generate
nodes from empty blocks and empty declarations.
We also need to do some further processing of the AST. This is because
PruneEmptyDeclarations will still remove empty declarations, and at
least the NVIDIA driver GLSL compiler doesn't accept some types of
no-op statements as the last statement inside a switch statement. So
after parsing has finished we do rudimentary dead code elimination to
remove dead cases from the end of switch statements.
BUG=angleproject:2181
TEST=angle_unittests
Change-Id: I586f2e4a3ac2171e65f1f0ccb7a7de220e3cc225
Reviewed-on: https://chromium-review.googlesource.com/712574
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
d92e93b8
|
2017-10-11T14:28:34
|
|
Fix uniform type info for multisample textures.
The way that the strings were generated was erroneously marking 2D
multisample textures as "2D" instead of "2D_MULTISAMPLE". Fix this
by changing how the types are parsed and generated.
Fixes incomplete texture handling of 2D multisample textures.
BUG=angleproject:1390
BUG=angleproject:2167
Change-Id: I8ffffca119cc7ca654ed1fe81cba37b758f9ef9f
Reviewed-on: https://chromium-review.googlesource.com/713585
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6b076a09
|
2017-10-11T13:28:22
|
|
Update and move gmock and gtest.
Update to the version of googletest current in chromium. Googlemock has
merged into googletest so we get rid of the separate DEPs entry and point
everything inside googletest.
We put it in 'third_party' instead of 'testing' to prepare for the
upcoming stand-alone gn build which borrows chromium build files that
require other stuff in the 'testing' directory.
BUG=angleproject:1569
Change-Id: I51d1675efd5d0104bb6390721928010221a5d6fc
Reviewed-on: https://chromium-review.googlesource.com/713466
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
852fe873
|
2017-10-10T15:13:59
|
|
Fix HLSL for switch statements that don't end in a branch
In case the last case inside a switch statement is not terminated in
a branch statement, RemoveSwitchFallThrough needs to add it before
calling handlePreviousCase. This ensures that all preceding
fall-through cases will get a copy of the branch statement and so will
not fall through.
This also fixes running RemoveSwitchFallThrough so that it's only
executed once per each switch statement.
The error was not caught by the dEQP tests, so a new ANGLE test is
added.
BUG=angleproject:2178
TEST=angle_end2end_tests
Change-Id: I26b6989aa4d32de2d74cde56d72ee24f61195445
Reviewed-on: https://chromium-review.googlesource.com/709196
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
211bff3f
|
2017-10-10T23:53:20
|
|
Enable inconsistent-missing-override for Clang
Fix the resulting compile errors.
No-Try: true
Change-Id: I88e74f240b29ecf7b3883b0c5880dcb871e4c3cd
Reviewed-on: https://chromium-review.googlesource.com/710415
Commit-Queue: Ben Wagner <benjaminwagner@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
78507c6e
|
2017-10-10T15:06:45
|
|
Fix statements disappearing from switch statements in HLSL
RemoveSwitchFallThrough now correctly records the existence of
declaration and swizzle statements inside switch statements.
BUG=angleproject:2177
TEST=angle_end2end_tests
Change-Id: I1ef83997db7ae510ded002a9568c29272c00c2fe
Reviewed-on: https://chromium-review.googlesource.com/709195
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
bd159f06
|
2017-10-09T19:39:06
|
|
Vulkan: Use minimal dirty bits in VertexArrayVk.
This should slightly reduce draw call overhead.
BUG=angleproject:1898
Change-Id: I0e515bf2868f237f1d6948c12942f8cb6637c0c0
Reviewed-on: https://chromium-review.googlesource.com/707690
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
492f58ec
|
2017-10-09T19:41:33
|
|
Rename VertexArrayImpl::mData to mState.
Refactoring change only.
BUG=angleproject:1898
Change-Id: I9f55651f923ff930c395a9bb575b4f86ad5d9cbd
Reviewed-on: https://chromium-review.googlesource.com/707689
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
af5070f7
|
2017-10-10T13:53:25
|
|
Hide RemoveSwitchFallThrough implementation in the .cpp file
This cleans up the API provided by RemoveSwitchFallThrough.h, and adds
documentation about caveats of RemoveSwitchFallThrough. This change is
pure refactoring without any functional changes.
BUG=angleproject:2177
TEST=angle_end2end_tests
Change-Id: I2646e4fe3b53130b07977823cb1344e5096f67e4
Reviewed-on: https://chromium-review.googlesource.com/709194
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
c853804c
|
2017-09-27T11:20:15
|
|
Add support for arrays of arrays to VariableLocation
Array indices are sorted so that the outermost index is in the back.
This is because we want to be consistent with future arrays of arrays
parsing code. In parsing we'll have a utility function to make a
TType object into an array, and there it's most natural to push the
new outermost sizes to the back of the vector.
Further patches will still be needed to parse arrays of arrays and
add support to arrays of arrays into the API.
BUG=angleproject:2125
TEST=angle_unittests, angle_end2end_tests
Change-Id: I6c88edabf68ae9dbd803ec6d20543016c408b702
Reviewed-on: https://chromium-review.googlesource.com/686414
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
e416e527
|
2017-10-10T11:01:20
|
|
Remove some unused codes
This patch will remove unused functions syncVertexAttributes and
hasDirtyOrDynamicAttrib, and private member mAppliedIBChanged.
Meanwhile, it changes hasDynamicAttrib to hasActiveDynamicAttrib
to avoid unnecessary update in some cases.
BUG=angleproject:1155
Change-Id: I29a0aa7fbc13874b7b070cf1ac5ec4134728f519
Reviewed-on: https://chromium-review.googlesource.com/707014
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a4810f71
|
2017-10-09T14:44:23
|
|
Fix several bugs in the timeout logic of clientWait
1) timeout is unsigned, and clients tend to pass large unsigned values
(like -1) to mean "wait as long as possible". Casting to signed at
the start of the math meant that everything was negative, so we would
never actually wait for fences to be signalled.
2) When going from nanoseconds to seconds, we should divide by 10^9, not
multiply by 10^6.
3) Even with all of this, it's possible for a sufficiently large counter
frequency to still cause overflow, so detect that case and clamp.
Change-Id: I9e728aac72d8dc0b15582732b6fd4d87c90bd140
Reviewed-on: https://chromium-review.googlesource.com/707202
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8886f0fc
|
2017-10-10T11:59:45
|
|
Clean redundant semicolons from HLSL branch statements
Branch statements can only exist inside block nodes. The block node
that contains a branch will take care of writing a semicolon after
each statement.
BUG=angleproject:1013
TEST=angle_end2end_tests
Change-Id: Ie5d9077c5d2e090c704282dba39b4d46845cbf1e
Reviewed-on: https://chromium-review.googlesource.com/708894
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
180f43c6
|
2017-10-09T17:00:44
|
|
Refactor creating temporary symbols
This makes creating temporary symbols easy also outside of traversers.
This will be needed for improving variable initialization.
TEST=angle_unittests
BUG=chromium:735497
Change-Id: Id048fc338e0be6c76bb6f082421ae106618e5003
Reviewed-on: https://chromium-review.googlesource.com/707194
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
d63d0007
|
2017-10-06T13:11:13
|
|
dontInitializeUninitializedLocals on Qualcomm only
SH_INITIALIZE_UNINITIALIZED_LOCALS triggers a very unpredictable crash
in the shader compiler on Qualcomm Adreno (at least 4xx) on Marshmallow.
Bug: angleproject:2046
Change-Id: I9a109f7ff442b4e9d3880d137f1a55a19105bcef
Reviewed-on: https://chromium-review.googlesource.com/705930
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
359487c8
|
2017-10-03T16:58:06
|
|
Build angle_perftests on Android
BUG=chromium:675997
Change-Id: Ib6690f9f25a4ba4510cf6e18ba2054a9936dc574
Reviewed-on: https://chromium-review.googlesource.com/706455
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
a3d384ad
|
2017-10-06T16:12:50
|
|
Fix signed integer overflow in GLSL preprocessor left shift
Signed integer overflow is undefined in C++, whereas unsigned integer
overflow is not. Always cast left shift operand to unsigned to avoid
UB.
On common compilers, the behavior was already the same before this
patch, so this patch is done mostly for the benefit of automated fuzz
testing.
BUG=chromium:743136
TEST=angle_unittests
Change-Id: I7aab939036bb19a37f258cef4297b560da3cd9d5
Reviewed-on: https://chromium-review.googlesource.com/704659
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
b433e872
|
2017-10-05T14:01:47
|
|
Change robust resource init into a context creation attribute.
Enabled support on OpenGL even through the extension is not fully
implemented so that testing with Chromium/Passthrough commmand decoder
is still possible.
BUG=angleproject:1635
Change-Id: Ia417b1779aace1eae19514325701a79cd33f4ef3
Reviewed-on: https://chromium-review.googlesource.com/678479
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
a87121f9
|
2017-10-06T14:07:27
|
|
Fix build warning by specializing clampCast
Casting integers to booleans generates a performance warning in at
least MSVS 2015 x64 Debug build. Specialize the clampCast template for
bool->int conversion to avoid this warning, which is treated as an
error.
BUG=angleproject:2165
TEST=MSVS 2015 x64 Debug build
Change-Id: Iaa9591c102cdd73fe9ff8a8739d356cc13cec248
Reviewed-on: https://chromium-review.googlesource.com/704820
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e159717d
|
2017-10-05T12:02:30
|
|
Filter EGL attributes before passing them to the native driver.
Adding extensions that are not native driver extensions would cause
surface creation to fail.
BUG=angleproject:1635
Change-Id: I2f683ee0560e463aa06f3ba92d0bf3f3d8c8927d
Reviewed-on: https://chromium-review.googlesource.com/701602
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
af143fef
|
2017-10-05T13:59:43
|
|
Refactor the eglQueryContext entry point.
BUG=angleproject:1635
Change-Id: Ia6ab5a2a7339d78912d7f871ed62941af1957eb1
Reviewed-on: https://chromium-review.googlesource.com/702856
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
000dab88
|
2017-09-27T14:27:07
|
|
Make pack and unpack image extensions enableable.
BUG=angleproject:1523
Change-Id: Ic728a777ad7e05373de03ee98e9b0a17101cd45d
Reviewed-on: https://chromium-review.googlesource.com/688102
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
63c5a597
|
2017-09-27T14:08:16
|
|
Make GL_ANGLE_instanced_arrays enableable.
BUG=angleproject:1523
Change-Id: Id1dd5d0426c1b55bfd6cca8b0c8c73596080f2a9
Reviewed-on: https://chromium-review.googlesource.com/688101
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ce8602ab
|
2017-10-03T18:23:08
|
|
WebGL requires GL_FRAMEBUFFER_UNSUPPORTED for identical FBO attachments.
If the same level of a texture is attached to multiple color
attachments of a framebuffer object, for example, the WebGL
conformance tests require generating a GL_FRAMEBUFFER_UNSUPPORTED
error. The Direct3D backend already had this restriction; apply it to
all backends when the WebGL compatibility extension is enabled.
Fixes the following WebGL conformance tests with the pass-through
command decoder in Chrome:
conformance/extensions/webgl-draw-buffers-framebuffer-unsupported
conformance2/rendering/framebuffer-unsupported
BUG=angleproject:2168
Change-Id: I340d06ca0ee969989c6c5725512b1b9542281477
Reviewed-on: https://chromium-review.googlesource.com/699856
Commit-Queue: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c1abf917
|
2017-10-03T15:08:33
|
|
Fix leaking objects with UniqueObjectPointer.
BUG=angleproject:2170
Change-Id: Ie0473022c153c4b70f350cab0c208dd3a0670c40
Reviewed-on: https://chromium-review.googlesource.com/691374
Reviewed-by: Yuly Novikov <ynovikov@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>
|
|
10d4026b
|
2017-10-04T16:34:09
|
|
Fix compilation error on 32-bit systems
a99ed554ca606 introduced explicit template instantiations that tunred
out to be the same on 32-bit CPUs because GLenum and size_t are the
same type.
BUG=angleproject:2165
Change-Id: I85fafeff1996cb457f2b718e177944fc6aca50bf
Reviewed-on: https://chromium-review.googlesource.com/699839
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
cb62d86f
|
2017-10-04T14:42:55
|
|
Don't delete framebuffers multiple times if they are bound multiple times.
BUG=angleproject:2107
Change-Id: Icaa4cf7c708a68d63b45699255ddd3ced00ee119
Reviewed-on: https://chromium-review.googlesource.com/700804
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
baf5d945
|
2017-08-28T20:45:48
|
|
ES31: Add UNIFORM support for ProgramInterface
Add program resource properties for uniform.
BUG=angleproject:1920
TEST=angle_end2end_tests:ProgramInterfaceTest*
Change-Id: Ia5cf6219db43b8b1f73efbb3565d21c86e9d3ec0
Reviewed-on: https://chromium-review.googlesource.com/638050
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a99ed554
|
2017-09-22T08:10:32
|
|
Refactor data conversions for state commands
This mainly enforces the rules as descripted in ES 3.10, section
2.2.1 and 2.2.2, by enhancing the "queryconversions" to support
more rules, removing the scattered type convertors in "utilities"
, "mathutil" and "queryutils", and forcing to only use the
convertors in "queryconversions".
BUG=angleproject:2165
Change-Id: I73c1dc850e2b3b8a479ece1d9c5eb7ae4ce851fe
Reviewed-on: https://chromium-review.googlesource.com/680094
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
d03a849d
|
2017-10-03T15:46:06
|
|
Vulkan: Implement very basic DrawElements.
This implements getIndexRange for index validation, without any
caching. Vulkan does support a version of robust access, but it would
require the robust context creation attribute. Also, it differs slight
from the OpenGL spec.
Also note that this implementation does not create the index buffer
with the correct usage bits, but seems to work and doesn't produce an
error in the validation layers. We should probably update them.
This CL also doesn't impement index support for immediate data,
offsets, or the unsigned short index type.
BUG=angleproject:2167
Change-Id: I580930f85e23034b483f3ece62eb1faf8024d624
Reviewed-on: https://chromium-review.googlesource.com/681874
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
035fd6b3
|
2017-10-03T15:43:22
|
|
Vulkan: Implement very basic textures.
This is a quick implementation which supports only one backing Image
and one type of ImageView at a time, for 2D texture only.
It also implements a helper class for finding compatible memory pools.
It's possible we can keep a cache of memory pool indexes given the
guarantees the Vulkan spec has on compatible memory types (see the
documentation for VkMemoryRequirements).
BUG=angleproject:2167
Change-Id: I1d7a8eaec90f240273ad75194e23430d6d4c5dc1
Reviewed-on: https://chromium-review.googlesource.com/680000
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
488130e0
|
2017-09-27T13:53:11
|
|
Make GL_ANGLE_framebuffer_multisample enableable.
BUG=angleproject:1523
Change-Id: Idc2cf338ba1fb5142ef2596603d291790fd6ddd6
Reviewed-on: https://chromium-review.googlesource.com/688100
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
536eca10
|
2017-09-13T11:23:35
|
|
Simplify GenerateMipmap validation now that sized format info is tracked.
The previous validation used some workarounds because it didn't know if
the texture format was sized or not. Now that the InternalFormat struct
tracks this, the validation can work correctly for floating point
formats.
BUG=angleproject:2149
Change-Id: I583db4a36137a57dd1b7fc81cd4e3b6d5972fc67
Reviewed-on: https://chromium-review.googlesource.com/665163
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
682efdc4
|
2017-10-03T14:10:29
|
|
Fix a GCC warning found by Skia.
This only seems to affect GCC's enum-compare warning,
because we were comparing an untyped enum with a size_t enum.
BUG=None
Change-Id: I74b8315cff61344d1b7700b1c56a40d2ffce41e2
Reviewed-on: https://chromium-review.googlesource.com/698296
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7e7f7d25
|
2017-09-22T13:32:14
|
|
Implement robust resource init for D3D9.
BUG=angleproject:2107
Change-Id: I088956a1e13247c593cbb84677f346ef6f0fe983
Reviewed-on: https://chromium-review.googlesource.com/678483
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a1506213
|
2017-09-21T10:49:18
|
|
Remove initialization of ImageD3D objects now that lazy init covers them
Inintialize all D3D11 texture allocations with dummy values in debug.
BUG=angleproject:2107
BUG=angleproject:1635
Change-Id: Ibcc6cc30480b32430563143f35f38dda16fdb83c
Reviewed-on: https://chromium-review.googlesource.com/678477
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
09cd4777
|
2017-09-27T13:44:41
|
|
Remove references to the framebuffer fetch extensions in the GL layer.
BUG=angleproject:1523
Change-Id: I145323661bc4fdd596784eb7b6e9d8f4588c7270
Reviewed-on: https://chromium-review.googlesource.com/688099
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8c5b31c2
|
2017-09-26T18:07:44
|
|
Make query extensions enableable.
BUG=angleproject:1523
Change-Id: If2da4bff180664de997c981165672858c19ebe78
Reviewed-on: https://chromium-review.googlesource.com/685649
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
05b35b21
|
2017-10-03T09:01:44
|
|
D3D11: Lazy robust resource init.
This patch moves the robust resource init logic to the GL front-end.
Instead of initializing texture resources immediately on creation in
D3D11, it defers the clear until before a draw call in some cases, or
skips the update if we can determine if a texture (or other resource)
has been fully initialized.
Currently lazy init is only implemented for Textures, Renderbuffers,
and Surfaces.
Various places where lazy resource init is triggered:
* Framebuffer operations (Draw, Blit, CopyTexImage, Clear, ReadPixels)
* Texture operations (SubImage, GenerateMipmap, CopyTexImage)
Some efficiency gains remain to be implemented, such as when a
SubImage call fills the entire object. Similarly for Blit, and a few
other operations. In these cases we can skip lazy init as an
optimization. Edge cases with EGLImage are mostly untested.
BUG=angleproject:2107
Change-Id: I2bf3a69b1eae0d4feeb5b17daca23451f1037be8
Reviewed-on: https://chromium-review.googlesource.com/576058
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
a60d3567
|
2017-10-02T22:10:28
|
|
Re-enable uninitialized-local test that should pass now
Follow up to https://crrev.com/c/669642
Bug: angleproject:2041
Change-Id: I27bf4458f5c8be265b757fd5a3ea10f5ffa9e10e
Reviewed-on: https://chromium-review.googlesource.com/696764
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
adaabc36
|
2017-10-02T16:23:00
|
|
Support PBO and map buffer extensions in the NULL backend.
BUG=770696
Change-Id: Ic7bcc2b5c76817888647022505a2442ce4016b1e
Reviewed-on: https://chromium-review.googlesource.com/696125
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
04d0646c
|
2017-10-02T16:01:13
|
|
Support GL_NV_fence in the NULL backend.
BUG=770696
Change-Id: Ice5345eddc4cec61cd5ce33a7cd5d45fa68379a5
Reviewed-on: https://chromium-review.googlesource.com/695918
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
50cac57a
|
2017-09-26T17:37:43
|
|
Make GL_EXT_blend_minmax enableable.
BUG=angleproject:1523
Change-Id: I73df8d9a23c3d22792abde44b495be7478abfc22
Reviewed-on: https://chromium-review.googlesource.com/685648
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
8c7133ca
|
2017-09-26T17:31:10
|
|
Make GL_OES_fbo_render_mipmap enableable.
BUG=angleproject:1523
Change-Id: If50a4bf5e33bf0b9ad76a9c6bb999cf4d620c709
Reviewed-on: https://chromium-review.googlesource.com/685647
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
3fab7634
|
2017-09-26T15:45:54
|
|
Make PBO and map buffer extensions enableable.
BUG=angleproject:1523
Change-Id: Ia934a186ce490083f93b59eedd3bdf48e0fcb727
Reviewed-on: https://chromium-review.googlesource.com/685799
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
5b2a1760
|
2017-09-29T13:19:39
|
|
ES31: Implement glSampleMaski on D3D11
This patch intends to implement glSampleMaski on D3D11 backends.
In D3D11 the sample mask word can be set by OMSetRenderState. This
function can only accept an UINT as its parameter SampleMask, so
the value MAX_SAMPLE_MASK_WORDS in D3D11 backends is set to 1.
BUG=angleproject:1592
TEST=dEQP-GLES31.functional.state_query.*.sample_mask*
TEST=dEQP-GLES31.functional.texture.multisample.*.sample_mask*
Change-Id: I27f509cf81624d95948b06739bb9fe21288d2d31
Reviewed-on: https://chromium-review.googlesource.com/691259
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8c5b69cb
|
2017-09-18T20:23:08
|
|
Replace MurmurHash3 with PMurHash
PMurHash comes from the smhasher repository at chromium/src/third_party/smhasher
Bug: 697758
Change-Id: Id2859edf37ae66bf27509d53db7f22db8831fe44
Reviewed-on: https://chromium-review.googlesource.com/687970
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@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>
|
|
a9c60e9f
|
2017-09-28T19:06:39
|
|
Vulkan: Allow for multiple frames in-flight.
This should give us the ability to send off more than one frame to
the presentation engine at once. Instead of using a single pair of
Semaphores to lock each surface, we make a Semaphore pair per
Swapchain image.
BUG=angleproject:1898
Change-Id: I9e833ed9969a79617d0a8968b0d5a25c27139e87
Reviewed-on: https://chromium-review.googlesource.com/672149
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
db342276
|
2017-09-27T10:21:45
|
|
ES31: Implement glSampleMaski on OpenGL
This patch intends to implement glSampleMaski on OpenGL
backends.
Refers to: https://chromium-review.googlesource.com/c/487603
BUG=angleproject:1592
TEST=dEQP-GLES31.functional.state_query.*.sample_mask*
TEST=dEQP-GLES31.functional.texture.multisample.*.sample_mask*
Change-Id: If5ddd6ab57259593919a482be80fbdbe29f6f54d
Reviewed-on: https://chromium-review.googlesource.com/573727
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|