|
293e114d
|
2017-07-11T13:51:05
|
|
Add tests for the cache control extension.
A first test verifies the validation of the extension, and a second
compiles a simple shader and checks the cache behaviour.
These tests don't currently run since the extension is disabled,
but they will start running as soon as we expose it.
BUG=angleproject:1897
Change-Id: Id4a76b83090712a267576069b711eeee29aa81dd
|
|
1636e1b9
|
2017-07-12T14:29:06
|
|
Merge "D3D11: Clip copy rect to the source framebuffer for copyTexImage3D."
|
|
f69ac0a5
|
2017-07-12T14:18:57
|
|
Merge "Add support for new internalformats in copyTextureCHROMIUM"
|
|
2c7c4268
|
2017-07-12T07:53:34
|
|
Merge "Select viewport index in the GLSL/ESSL vertex shader"
|
|
b74c769a
|
2017-07-11T19:48:41
|
|
Merge "Fix Clear validation assert for default FBOs"
|
|
bc5d7add
|
2017-07-10T16:17:26
|
|
D3D11: Clip copy rect to the source framebuffer for copyTexImage3D.
TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html
BUG=angleproject:1815
Change-Id: I146fcf97a9c90f07d6270672c5e44e05602eecf8
|
|
315ecd20
|
2017-07-11T13:51:04
|
|
Add entry points for EGL_ANGLE_program_cache_control.
This instruments the plumbing for the extension without adding any
functionality or exposing the extensions string.
The extension text is also updated to reflect the new entry point
design and naming. Also this corrects a few mistakes.
This will be followed up by the tests (which won't run) and then
the extension functionality in ANGLE.
BUG=angleproject:1897
Change-Id: I5b009e23bc27da06b067375525bd6fc574027702
|
|
59c41597
|
2017-07-11T13:19:54
|
|
Fix Clear validation assert for default FBOs
The validation was iterating over maxDrawBuffers attachments when
default framebuffers only have one attachment. Use the framebuffer's
drawBufferCount instead.
Also adds a regression test in the form of a WebGLComptibility test for
glClearBuffer with the default framebuffer.
BUG=angleproject:2091
Change-Id: I07ee524db1fcb8a99dab4043248c0885100fd216
|
|
c39a19aa
|
2017-07-07T18:52:09
|
|
Select viewport index in the GLSL/ESSL vertex shader
The patch enables viewport selection for multiview rendering in the
GLSL/ESSL vertex shader through the use of the GL_NV_viewport_array2
extension. The AST is modified only for GLSL and ESSL to include the
viewport selection expression after ViewID_OVR's initialization.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: Iee05bb5a4b687ed53ddbdd466f1572227b1f0cde
|
|
37d96cce
|
2017-07-11T14:14:03
|
|
Fix accepting arrays as array indices
Previously, arrays were being incorrectly accepted as array indices.
This was because the isScalar() check only checked that the type was
not a vector or matrix, but still returned true for scalar arrays.
This patch changes the isScalar() check so that it returns false for
arrays. This makes usage of the term "scalar" more consistent in the
shader translator. Most of the code using isScalar() was compatible
with this change. Code in util.cpp that used to assume that isScalar()
doesn't care about arrayness is refactored to work with the new
behavior.
BUG=angleproject:2102
TEST=angle_unittests
Change-Id: I2a7f4c30fca7917d1099d0400efe3de859338b2a
|
|
56229f1b
|
2017-07-10T14:16:33
|
|
Remove TIntermediate::addConstantUnion
This includes asserts in TConstantUnion to reveal incorrect usage of
union - reading a different field of an union that has last been set
is undefined behavior in C++.
Existing issues with accessing incorrect fields of constant unions
are fixed.
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: Idd6b7a871d73e2928f117a9348c92043612fab82
|
|
eb7f90fd
|
2017-07-07T17:25:23
|
|
Remove simple Intermediate.h functions
Most of the functions were just simple wrappers around node
constructors. Dropping this extra redirection makes the code simpler.
The fold() functions of node types are simplified, so that if the node
can't be folded the pointer to the node itself is returned. This makes
the code in ParseContext more straightforward.
The few remaining functions in Intermediate are a bit more complex so
they should be handled separately, but they'll be removed eventually
as well.
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: I85e11919d1f62358cfba9c011b841e32bc25402f
Reviewed-on: https://chromium-review.googlesource.com/563393
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
340b7b8b
|
2017-06-26T13:02:31
|
|
Add support for new internalformats in copyTextureCHROMIUM
This adds support in blit11::copyTexture for LUMA, LUMA_ALPHA, and ALPHA
formats as destinations. Added is handling for each case to match up
the corresponding shader. This required new premultiply and
unmultiply D3D11 shaders for some cases.
Changed copyTextureCHROMIUM validation to allow new formats.
Tests have been created to demonstrate using copyTextureCHROMIUM with
the new formats with default parameters, as well as with the
unpackPremultiply and unpackUnmultiply parameters.
BUG=:angleproject:2101
Change-Id: Id8cd303a46fe70710bc18172fc938552a6e4cfaf
|
|
70c95fa6
|
2017-07-07T18:45:49
|
|
Add function in MatchOutputCodeTest to find occurrence of a string
The patch adds a function in MatchOutputCodeTest to get the position
of the first occurrence of an expression in the translated output code.
This can help design more complicated tests like a test which checks
for the order of simple expressions.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: I1249d4762c247848c4eec64ecb8c1357b5e8d40a
Reviewed-on: https://chromium-review.googlesource.com/563659
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
88318b44
|
2017-07-05T14:39:01
|
|
Fall back to CPU copies for srgb textures in copy_texture_CHROMIUM.
The copied data is not supposed to have sRGB conversions applied to it
when written to the destination texture but an sRGB SRV is used by Blit11.
Instead of creating multiple sRGB and non-sRGB SRVs for textures, simply
fall back to the CPU copy path for this format for now.
Clip color channels that should not exist in the destination texture
formats in Image11::CopyImage. This works around issues with texture
formats with emulated channels.
TEST=conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8-rgb-unsigned_byte
TEST=conformance2/textures/image_bitmap_from_canvas/tex-2d-srgb8_alpha8-rgba-unsigned_byte
BUG=angleproject:1932
Change-Id: Ieeda3569f80d016fda781e7eb498acd3b97568d0
Reviewed-on: https://chromium-review.googlesource.com/559857
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ea39a223
|
2017-07-06T12:47:59
|
|
Simplify queueReplacement AST transform helper
queueReplacement is always called to replace the node that's currently
being visited in the traverser. The currently visited node can be
fetched automatically from the traversal path so it can be removed
from parameters of queueReplacement.
BUG=angleproject:2100
TEST=angle_unittests
Change-Id: I62ab6d1cd9c0d2b4c260af9f7c85bc156fb3f349
Reviewed-on: https://chromium-review.googlesource.com/562336
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
145e3cbb
|
2017-06-29T12:36:21
|
|
Enable Fuchsia in platform-specific headers.
Two simple fixes to make libANGLE compile for Fuchsia:
1. Added stubs typedefs for platform-specific primitives in
EGL/eglplatform.h for Fuchsia.
2. src/common/platform.h updated to define ANGLE_PLATFORM_POSIX on
Fuchsia.
Change-Id: I5f053de46632ac3f12bb93e57eeb94c3a34c867c
Reviewed-on: https://chromium-review.googlesource.com/563758
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
caf20889
|
2017-07-05T15:26:44
|
|
Fix incorrect quality level with depth-stencil buffer and MSAA configs.
Using a depth buffer format requires that the DSV and RTV have equal
quality levels; otherwise, the bound render target will discard writes.
BUG=angleproject:1917
Change-Id: Ife25b0a8958fa2b31b43a0d877d27e440916a9bf
Reviewed-on: https://chromium-review.googlesource.com/560716
Reviewed-by: Bryan Bernhart <bryan.bernhart@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
7ef89a42
|
2017-07-05T14:23:06
|
|
Expose ViewID_OVR impostor in the fragment shader
The OVR_multiview specification states that gl_ViewID_OVR is visible
at each pipeline stage. Previously to this patch the ViewID_OVR
impostor was declared only in the vertex shader and occurrences of
gl_ViewID_OVR in the fragment shader were not being handled. The
patch addresses the issue by declaring the ViewID_OVR variable as
a vertex output in the vertex shader and as a fragment input
in the fragment shader.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: I895953e81d3632d9bb873e8ac081fdf36f63f6b7
Reviewed-on: https://chromium-review.googlesource.com/559337
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
e469de8a
|
2017-07-04T11:58:35
|
|
Refactor translator construction
The patch adds functionality to determine whether compiler output belongs
to the ESSL, GLSL, HLSL or Vulkan output family. The new functions can
be now used in other parts of the compiler in which code paths are
selected based on the compiler output.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: I45ccf63f0a756c60df47a679c2da9f60856d5918
Reviewed-on: https://chromium-review.googlesource.com/558990
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
cccf2b00
|
2017-07-05T14:50:54
|
|
Reorganize AST traversal utility code
Define TIntermTraverser and TIntermLValueTrackingTraverser in a
separate header file. hash() function is moved out from
TIntermTraverser as it is not related to the core functionality
of traversing and transforming ASTs.
Also reorganize some traversers to follow common conventions:
- Intermediate output is now in OutputTree.h/.cpp
- Max tree depth check is now in IsASTDepthBelowLimit.h/.cpp
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: Id4968aa9d4e24d0c5bac90dc147fc9f310de0184
Reviewed-on: https://chromium-review.googlesource.com/559531
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
a3e1f5f7
|
2017-07-06T13:21:07
|
|
Fix determining max combined uniform blocks
The previous code was using a completely unrelated variable to compute
max combined uniform blocks limit.
BUG=angleproject:2099
Change-Id: I9e56b50a92790f525dda50adca52b6ac5edfc95a
Reviewed-on: https://chromium-review.googlesource.com/562276
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
115fc55e
|
2017-07-05T17:11:06
|
|
Populate gl_InstanceID attribute information explicitly
While compiling ESSL1 shaders, with the compiler having both
SH_INITIALIZE_BUILTINS_FOR_INSTANCED_MULTIVIEW and SH_VARIABLES
set, variable collection terminates with an assertion failure. The reason
behind this is that SH_INITIALIZE_BUILTINS_FOR_INSTANCED_MULTIVIEW
adds gl_InstanceID to the AST to initialize the multiview builtins, but
the variable collection pass cannot find gl_InstanceID information in
the symbol table because the builtin is only available in ESSL 3.00 and
greater.
To address this the patch populates the gl_InstanceID attribute
information explicitly in the variable collection pass instead of
retrieving it from the symbol table.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: I5ecb9967ebe6658e956d17a2637090f9b685ef33
Reviewed-on: https://chromium-review.googlesource.com/559669
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
4dd06d5d
|
2017-07-05T12:41:06
|
|
Set proper symbol ids on temporary symbol nodes
Temporary symbols used to all have symbol id 0. Now they get assigned
unique symbol ids. This makes it possible to keep track of them
according to the symbol id instead of their name, paving way to more
robust AST handling in the future.
BUG=angleproject:1490
TEST=angle_unittests
Change-Id: I292e2e483cc39173524fd30a30b48c4c808442e5
Reviewed-on: https://chromium-review.googlesource.com/559335
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
69df242c
|
2017-07-05T12:42:31
|
|
Don't validate attribute types match for gl_VertexID and gl_InstanceID.
TEST=conformance2/glsl3/no-attribute-vertex-shader
TEST=deqp/functional/gles3/instancedrendering
BUG=angleproject:2012
Change-Id: I234410fabf6a8fcd87040c8085ca5dce82fa8932
Reviewed-on: https://chromium-review.googlesource.com/559851
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
d7cd4ae5
|
2017-07-06T15:52:49
|
|
Check that function declarations don't use a reserved name
Reserved function names are now caught if the function is just
declared without being called in the shader source. Actually, function
calls don't need to be checked for reserved names, since that just
generates a redundant error message if function declarations are being
checked.
Includes some cleanup of ParseContext::checkIsNotReserved. It doesn't
need special handling of built-in symbols, as they are never passed to
the function.
BUG=chromium:739448
TEST=angle_unittests
Change-Id: I7115e1a7509626b5109b5c054c0704b0c3c19c58
Reviewed-on: https://chromium-review.googlesource.com/561457
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
40a1a37c
|
2017-07-05T16:46:21
|
|
Update gl2ext.h.
Also split the ANGLE modifications to the header into a separate
include.
BUG=angleproject:1897
Change-Id: I06cdcc26bab6bfa4b5bcb488c46558583cab5a83
Reviewed-on: https://chromium-review.googlesource.com/560020
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2b853636
|
2017-07-06T09:14:41
|
|
Skip CopyTexImage outside FB test on Win/Intel/GL.
BUG=angleproject:1815
Change-Id: Ia200cfe4ce4e6e3edd9ad2de841acbd1df49eb85
Reviewed-on: https://chromium-review.googlesource.com/561636
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
1cbe9203
|
2017-06-15T18:13:31
|
|
Clip TextureGL::copyImage to framebuffer.
Ensure the underlying GL does not modify areas of the texture that
correspond to areas outside the framebuffer, as required for WebGL.
Also zero out the texture in WebGL mode because CopyTexImage must return
zeroes for areas outside the framebuffer.
Enable corresponding test.
BUG=angleproject:1815
Change-Id: I51b1221dbf0dda0952e2ae89ee6ac925b5d1d4a4
Reviewed-on: https://chromium-review.googlesource.com/551535
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
0cdf3683
|
2017-07-05T14:02:08
|
|
Do not propagate OVR_multiview extension directive
The patch fixes the bug of having the OVR_multiview extension directive
being outputted by the ESSL translator whenever the
SH_INITIALIZE_BUILTINS_FOR_INSTANCED_MULTIVIEW option is enabled. The
directive should not be outputted because the extension is emulated
through that option.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: I95d0a651ace6db42d496de08e774ec7ceca4c197
Reviewed-on: https://chromium-review.googlesource.com/558981
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
88f18d01
|
2017-07-05T14:24:04
|
|
Update eglext.h.
Also move the ANGLE modifications to eglext.h to a separate file
so we can more easily update and maintain the official header.
This is in preparation for adding the new program cache control
extension.
BUG=angleproject:1897
Change-Id: I3546e0c82f6536381301f62a115b42d580747a08
Reviewed-on: https://chromium-review.googlesource.com/559917
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
95ba174e
|
2017-06-22T20:38:04
|
|
Clip TextureD3D_2D::copyImage to framebuffer.
WebGL CopyTexImage needs to zero the part of the texture corresponding
to area outside the framebuffer, so we zero the whole texture then clip
the read area.
The clipping also avoids problems with code lower down that isn't prepared
for read areas not entirely within the framebuffer.
Enable corresponding test.
BUG=angleproject:1815
Change-Id: Ia7e0243ca72fa7c8f5bacda4d2022061d6a6d4f0
Reviewed-on: https://chromium-review.googlesource.com/551056
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
6cad5667
|
2017-06-14T13:25:13
|
|
Improve Debugging Strings
This change replaces common string literals used for
error messages with const string variables mapped in
a new header file.
Additionally, more validation for WebGL naming scenarios
has been added, along with unit tests.
BUG=:angleproject:1644
Change-Id: Icff44a456aa78221c6df12b0454a7cc147a7d26e
Reviewed-on: https://chromium-review.googlesource.com/535974
Commit-Queue: Brandon1 Jones <brandon1.jones@intel.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
fa36c330
|
2017-06-09T18:44:45
|
|
Clip FramebufferGL::readPixels to framebuffer.
In GL, ReadPixels() is allowed to modify memory that corresponds to
pixels outside the framebuffer.
In WebGL it must not do that, so clip the read area to the framebuffer.
Enable corresponding test.
BUG=angleproject:1815
Change-Id: I8113ae417dee7834e63498aec8291ce711bd7513
Reviewed-on: https://chromium-review.googlesource.com/536434
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
088031e6
|
2017-07-03T15:59:33
|
|
HLSL: Disambiguate between struct function parameters
Structs with different names but identical members are treated as
ambiguous by the native HLSL compiler when looking up user-defined
functions. Add the struct name to the function name to work around
this limitation.
BUG=chromium:731324
TEST=angle_end2end_tests
Change-Id: Ie80ac0f1374bc5ac05dfebef3f94e2da7cdfc581
Reviewed-on: https://chromium-review.googlesource.com/558929
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
50c562de
|
2017-06-06T14:43:30
|
|
Re-land: Don't expose non-conformant multisampling modes on GL
Re-landing with a fallback for failed internal format queries to work
around issue seen on Shield TV. Also fixed wrong handling of integer
RG formats in isRequiredRenderbufferFormat.
Some NVIDIA GL drivers expose non-conformant multisampling modes. The
conformance of multisampling modes can be queried using the extension
NV_internalformat_sample_query. Use it to filter out the
non-conformant modes from the modes that are exposed by ANGLE.
The MAX_SAMPLES value and other similar values stored in caps also
need to be lowered to match the maximum number of samples exposed
for required formats.
There seems to be an NVIDIA driver bug related to querying
STENCIL_INDEX8 multisample format. Work around this by querying
DEPTH24_STENCIL8 instead.
There's also some confusion around whether RGB9_E5 should be
renderable. Once the floating point texture extensions got rolled
into the core GL spec, it was eventually made clear that RGB9_E5
is intended not to be renderable. The extension specs that predate
float textures in the core spec do suggest that it would be
renderable, but in practice drivers that advertise the extension
strings don't reliably implement RGB9_E5 as renderable. Solve this
by disabling it as a renderable format and adding an explanatory
comment.
BUG=chromium:682815
TEST=angle_end2end_tests,
dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
Change-Id: I727f03045a1534d6764b571e6d839243705d25b3
Reviewed-on: https://chromium-review.googlesource.com/551957
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a5822b8a
|
2017-06-30T12:55:10
|
|
Temporarily disable the GPU program cache.
We should give the app layer more control over the cache before we
enable it, to save on memory usage in Chrome.
BUG=angleproject:1897
Change-Id: I532c05c3042cb0a2d9c62f362f25d6064042ca2c
Reviewed-on: https://chromium-review.googlesource.com/558370
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
27a60631
|
2017-06-30T15:12:01
|
|
Re-apply UBO binding workaround on program save.
The workaround which was previously defined to only apply on load
also seems to affect save on some AMD drivers.
BUG=angleproject:1637
BUG=angleproject:1897
Change-Id: Ia01a1420a484f3c2682ce97eaab18baccfb66a50
Reviewed-on: https://chromium-review.googlesource.com/558008
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
b12040c4
|
2017-06-27T14:20:45
|
|
Clean up redundant initialization of gl_Position
In case gl_Position is statically used in the input shader, setting
the INIT_OUTPUT_VARIABLES flag will initialize gl_Position. Avoid
redundant initialization of gl_Position in this case.
Includes cleaning up memory management in InitOutputVariables_test:
all the pool-allocated variables will be freed at the end of each test
when the memory pool is cleared, so manual memory management is not
needed.
Also includes making the zero node check used in unit tests stricter
so that the tests are more reliable and moving it to
ShaderCompileTreeTest.h so that it can be reused in the future.
BUG=angleproject:2092
TEST=angle_unittests
Change-Id: I323a0a094afa6cea95c8a64e681d9fc485137423
Reviewed-on: https://chromium-review.googlesource.com/549418
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0fb0864e
|
2017-07-04T15:07:23
|
|
Fix inverted validation check for glClearBuffer.
The validation would generate the correct errors to satisfy tests but
would skip clears.
TEST=conformance2/reading/format-r11f-g11f-b10f.html
TEST=conformance2/reading/read-pixels-from-fbo-test.html
TEST=conformance2/rendering/clearbuffer-sub-source.html
TEST=deqp/functional/gles3/fbocolorbuffer/clear.html
TEST=deqp/functional/gles3/fboinvalidate/sub.html
TEST=deqp/functional/gles3/framebufferblit/default_framebuffer_*.html
BUG=angleproject:1954
Change-Id: I0f220d06f98b630be5d27c7ffb1837d4ef29e0ac
Reviewed-on: https://chromium-review.googlesource.com/558786
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
739bd8ba
|
2017-06-19T21:02:27
|
|
Clip FramebufferD3D::readPixels to framebuffer.
In GL, ReadPixels() is allowed to modify memory that corresponds to
pixels outside the framebuffer.
In WebGL it must not do that, so clip the read area to the framebuffer.
Enable corresponding test.
BUG=angleproject:1815
Change-Id: Ie99401a2102c352ffb1193a57aa66a5b96c184aa
Reviewed-on: https://chromium-review.googlesource.com/540556
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e145def0
|
2017-06-22T12:49:12
|
|
Propagate correct type to the lvalue in an output variable initializer
With the SH_INIT_OUTPUT_VARIABLES option enabled, vertex and fragment
shader outputs get initialized with zeros at the beginning of main.
However, previous to this patch the lvalues in the binary expression did
not receive the correct type. This can lead to incorrect modifications
of the AST in subsequent stages or incorrect output code from the
translator. The patch addresses the issue by copying the type
information from the symbol table.
BUG=angleproject:2081
TEST=angle_unittests
TEST=angle_end2end_tests
Change-Id: I9e062376bcfad7d57b637a5248caebce1c9a0688
Reviewed-on: https://chromium-review.googlesource.com/544982
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ff526f14
|
2017-06-30T12:26:54
|
|
Fix variable vs. function name conflict in HLSL output
GLSL ES spec accepts the case where an initializer of a variable calls
a function with the same name as the variable. The HLSL compiler
doesn't accept that. Work around this limitation in the HLSL compiler
by disambiguating user-defined functions from variables with a
different prefix.
BUG=angleproject:2095
TEST=angle_end2end_test, angle_unittests
Change-Id: I41b32a3fcc6fd4c548e8dc3aa680d1b07fcf8719
Reviewed-on: https://chromium-review.googlesource.com/557872
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
77891c0a
|
2017-06-23T16:30:17
|
|
Fix wrong assignment of maxUniformVectors in GLSL compiler
This patch intends to fix a bug in ANGLE GLSL compiler.
In TCompiler::Init(resources), we should initialize maxUniformVectors by
resource.maxComputeUniformComponents / 4 when we attempt to initialize a
compiler for compute shader instead of resource.maxFragmentUniformVectors.
BUG=angleproject:2083
Change-Id: I4901f71ef5ac4f5770e2d5f8ee21786fcf19fbca
Reviewed-on: https://chromium-review.googlesource.com/545190
Commit-Queue: Jiawei Shao <jiawei.shao@intel.com>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
690057da
|
2017-06-30T14:49:05
|
|
Remove incorrect cast of loop condition in GLSL parsing
Loop condition node may be a declaration node when coming from the
parser, so it shouldn't be casted to TIntermTyped*.
BUG=chromium:738281
TEST=angle_unittests under CFI
Change-Id: Ie98befc4b02b1261949049ddff49404d73db8478
Reviewed-on: https://chromium-review.googlesource.com/558083
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
69056a1e
|
2017-05-18T11:14:50
|
|
Declare and initialize ViewID_OVR and InstanceID
The patch modifies the vertex shader's AST to declare and initialize
the global variables ViewID_OVR and InstanceID. Every occurrence of
gl_ViewID_OVR gets replaced by ViewID_OVR and initialized in main
with a value dependent on gl_InstanceID and the number of views.
To guarantee correct results for instanced rendering, each occurrence
of gl_InstanceID is replaced with InstanceID and initialized similarly.
BUG=angleproject:2062
TEST=angle_unittests
Change-Id: I48be688605b5af869bc370758e70ccc209ea4419
Reviewed-on: https://chromium-review.googlesource.com/548596
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
802a73ba
|
2017-06-29T18:20:25
|
|
[ANGLE] Add missing dependency on exe_and_shlib_deps
BUG=chromium:593874
Change-Id: I025f31e422cf3eb5db1730710cca26587c283839
Reviewed-on: https://chromium-review.googlesource.com/557350
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
8ff73235
|
2017-06-29T19:11:52
|
|
Skip couple UniformBufferTest31 on Linux AMD
Broken by https://chromium-review.googlesource.com/c/522874/
on Linux Release (AMD R7 240) build 2431
BUG=angleproject:1897
TBR=jmadill@chromium.org
Change-Id: I4c1f99a839f215b4c284ae1667d0a3b0774281c7
Reviewed-on: https://chromium-review.googlesource.com/557259
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
834dd263
|
2017-06-29T17:19:37
|
|
Skip WebGLReadOutsideFramebufferTest.CopyTexSubImage2D on Win Intel
Fails on Win10 Intel HD 530 and 630 bots.
BUG=angleproject:1815
TBR=fjhenigman@chromium.org
Change-Id: I27227cfa882f448e8b2de76e16dfe0dfe91703d2
Reviewed-on: https://chromium-review.googlesource.com/556759
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
360daeef
|
2017-06-29T10:36:19
|
|
Add platform hook for program cache updates.
This will need to be matched with a corresponding browser-side CL.
It will enable writing out binary shaders to disk.
BUG=angleproject:1897
Change-Id: I443281086050b9711b92a034cf37f808dd919007
Reviewed-on: https://chromium-review.googlesource.com/542963
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
56375021
|
2017-06-21T11:38:04
|
|
D3D11: Fix Buffer11 for GPU-to-CPU storage copy.
When copying from a non-mappable NativeStorage to a system memory
based storage, a staging buffer storage should be used. Currently
this is only done for PackStorage.
This covers the missed SystemMemoryStorage and
EmulatedIndexedStorage. Also it adds a triggering test case to
expose the bug.
BUG=angleproject:2076
Change-Id: I278a0eef85751e966c1c48ddd71010092a14a3f7
Reviewed-on: https://chromium-review.googlesource.com/542595
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ab04e6a7
|
2017-06-22T20:38:04
|
|
Clip TextureD3D_2D::copySubImage to framebuffer.
WebGL CopyTexSubImage does not allow touching parts of the texture that
correspond to area outside the framebuffer, so we clip the read area to
the framebuffer.
The clipping also avoids problems with code lower down that isn't prepared
for read areas not entirely within the framebuffer.
Enable corresponding test.
BUG=angleproject:1815
Change-Id: I411223669dae2a456dfc3e22acda907b73177988
Reviewed-on: https://chromium-review.googlesource.com/527411
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
79fd1e9f
|
2017-06-15T18:13:31
|
|
Clip TextureGL::copySubImage to framebuffer.
Ensure the underlying GL does not modify areas of the texture that
correspond to areas outside the framebuffer, as required for WebGL.
Enable corresponding test.
BUG=angleproject:1815
Change-Id: I6092d39e43868902de7ae3aee430deea3b3ff8a1
Reviewed-on: https://chromium-review.googlesource.com/538295
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3244736a
|
2017-06-28T14:53:52
|
|
Use MemoryProgramCache.
Add the member functions for saving and loading from the binary cache,
and hook them into the Program class. Requires that the Renderer
supports the program binary extension.
BUG=angleproject:1897
Change-Id: I2dc8d21b02da705ded58c5cd1943562c9c97c49b
Reviewed-on: https://chromium-review.googlesource.com/522874
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
68dfe0c5
|
2017-03-09T17:03:54
|
|
WebGL tests which read outside framebuffer.
Add tests for readPixels, copyTexSubImage2D and copyTexImage2D which
attempt to read outside the framebuffer boundary. readPixels and
copyTexSubImage2D should not touch destination pixels which correspond
to pixels outside the framebuffer. copyTexImage2D should write (0,0,0,0)
to those pixels.
BUG=angleproject:1815
Change-Id: I94042b5b08e319f28cb97d13613fe52514b67213
Reviewed-on: https://chromium-review.googlesource.com/452728
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
13b49757
|
2017-06-28T13:34:57
|
|
Add base SHA-1 routines.
We will need these to implement a more secure version of hashing for the
program binary cache. These versions of lightly modified from the Chrome
versions to make compilation simpler.
BUG=angleproject:1897
Change-Id: Ibcadb56c2316e3f39655a07fa28b5fbd6103e452
Reviewed-on: https://chromium-review.googlesource.com/550000
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
96a483bc
|
2017-06-27T16:49:21
|
|
Add a ResourceMap class for faster GL resource maps.
This gives a very fast query time for handles that are within a fixed
range. For WebGL, where we don't allow create-on-bind, this will be
100% of the time, unless we create a very large number of resources.
It is implemented as a two-tier map - the first uses a flat array to
index into a handle buffer. The second tier uses a map for out-of-
range values.
BUG=angleproject:1458
Change-Id: I421bb3725cf523918cdfdbfaab035ad0dd3bf82d
Reviewed-on: https://chromium-review.googlesource.com/544684
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c8a8b843
|
2017-06-28T01:16:41
|
|
Revert "Don't expose non-conformant multisampling modes on GL"
This reverts commit 3cd0dd370f08e7126fe19b761206280c64f80cd1.
Reason for revert: crashes on NVIDIA Shield TV
https://build.chromium.org/p/chromium.gpu.fyi/builders/Android%20Release%20%28NVIDIA%20Shield%20TV%29/builds/1816
Original change's description:
> Don't expose non-conformant multisampling modes on GL
>
> Some NVIDIA GL drivers expose non-conformant multisampling modes. The
> conformance of multisampling modes can be queried using the extension
> NV_internalformat_sample_query. Use it to filter out the
> non-conformant modes from the modes that are exposed by ANGLE.
>
> The MAX_SAMPLES value and other similar values stored in caps also
> need to be lowered to match the maximum number of samples exposed
> for required formats.
>
> There seems to be an NVIDIA driver bug related to querying
> STENCIL_INDEX8 multisample format. Work around this by querying
> DEPTH24_STENCIL8 instead.
>
> There's also some confusion around whether RGB9_E5 should be
> renderable. Once the floating point texture extensions got rolled
> into the core GL spec, it was eventually made clear that RGB9_E5
> is intended not to be renderable. The extension specs that predate
> float textures in the core spec do suggest that it would be
> renderable, but in practice drivers that advertise the extension
> strings don't reliably implement RGB9_E5 as renderable. Solve this
> by disabling it as a renderable format and adding an explanatory
> comment.
>
> BUG=chromium:682815
> TEST=angle_end2end_tests,
> dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
>
> Change-Id: I2218e3a23ea7b48a0615fea77a91897dc7d5fe9e
> Reviewed-on: https://chromium-review.googlesource.com/525515
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
> Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,oetuaho@nvidia.com
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: chromium:682815
Change-Id: I1ebdf52c3fab1526f5a561ac4c8555e305ef2243
Reviewed-on: https://chromium-review.googlesource.com/551164
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
af01a064
|
2017-06-28T00:16:27
|
|
Revert "Adds TUnorderedMap and uses it for tLevel in TSymbolTableLevel."
This reverts commit c14348a2589e5d995f63019433175545ba90040b.
Reason for revert: crashes in murmurhash on Nexus 6
See https://build.chromium.org/p/chromium.gpu.fyi/builders/Android%20Release%20%28Nexus%206%29/builds/7865
Original change's description:
> Adds TUnorderedMap and uses it for tLevel in TSymbolTableLevel.
>
> Change-Id: I27ba7a41c599ef6f7fe68b22c27bd2a40175ddf9
> Reviewed-on: https://chromium-review.googlesource.com/526672
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
TBR=jmadill@chromium.org,kbr@chromium.org,bajones@chromium.org,kainino@chromium.org,lethalantidote@chromium.org
Change-Id: Id4a428430c6d286b910790ba7c30503c98ce728f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/551235
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
1d72298b
|
2017-06-27T14:36:03
|
|
Fix memory leaks in invariant tests.
Tests weren't properly destroying the compiler instance.
BUG=angleproject:2094
Change-Id: I65eb5a02ba741c6f48f09f03b84ded402581e89f
Reviewed-on: https://chromium-review.googlesource.com/550569
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Kenneth Russell <kbr@chromium.org>
|
|
ffe00c03
|
2017-06-27T16:26:55
|
|
Add program cache transform feedback workaround.
On Qualcomm devices, they don't seem to correctly save transform
feedback info. Work around this by disabling caching on these devices.
This mirrors a Chromium workaround.
BUG=angleproject:2088
Change-Id: I6496d2fb6a03788379a6968bcd5eb3a9cb9d15d4
Reviewed-on: https://chromium-review.googlesource.com/549981
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
761b02c8
|
2017-06-23T16:27:06
|
|
Add an applyNativeWorkarounds context impl hook.
This method can allow the implementation to override the Context's
workarounds. Use this design pattern now that we have access to the
gl::Context everywhere - we don't need to cache a local copy in the
Renderer objects.
This will be used to apply a Shader Program Cache workaround on the
GL level, that will only be used for the GLES back-end on Qualcomm.
BUG=angleproject:2088
Change-Id: I6da25c5c29c3ba01b8820c5234d1b92dd2d2121a
Reviewed-on: https://chromium-review.googlesource.com/549980
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5fdaa2e3
|
2017-06-23T16:05:18
|
|
Reduce test failure spam in TransformFeedbackTest.
The multicontext test could spam thousands of lines of error text
when the test was broken. The test will still produce a lot of
errors when everything is broken, but it will produce a lot less.
BUG=angleproject:2088
Change-Id: Ia07e28897de3aba28cc8468acf27d5c9f56193a4
Reviewed-on: https://chromium-review.googlesource.com/549979
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c14348a2
|
2017-06-05T23:03:28
|
|
Adds TUnorderedMap and uses it for tLevel in TSymbolTableLevel.
Change-Id: I27ba7a41c599ef6f7fe68b22c27bd2a40175ddf9
Reviewed-on: https://chromium-review.googlesource.com/526672
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
19515019
|
2017-06-26T18:00:17
|
|
Refactor CollectVariables
New helper functions are added for collecting built-in variables, and
the traverser is encapsulated inside VariableInfo.cpp. The helper
functions get data for built-in variables from the symbol table, so a
duplicate copy of the data doesn't need to be maintained in
CollectVariables any more.
BUG=angleproject:2068
TEST=angle_unittests
Change-Id: I42595d0da0e5d4fb634a3d92f38db1dd6dd9efab
Reviewed-on: https://chromium-review.googlesource.com/549323
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
0dc97810
|
2017-06-22T14:38:44
|
|
WebGL2 Compat: having no 0 divisor is now valid
BUG=angleproject:TBD
Change-Id: Icb19a685290f4313ad567391cab5152eda91a346
Reviewed-on: https://chromium-review.googlesource.com/544545
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Zhenyao Mo <zmo@chromium.org>
|
|
aed7c570
|
2017-06-23T14:18:36
|
|
GL: Don't call seamless cube cap on GLES.
This cap is only valid on desktop GL. There might be extensions
where the feature is available as well, so we should follow up
and check for the extensions as well.
This fixes a Debug runtime warning in almost every end2end_test
on GLES.
BUG=angleproject:2085
Change-Id: I5edc1c667b58230df903da82de2a8aceb0369c0c
Reviewed-on: https://chromium-review.googlesource.com/546597
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e7b96340
|
2017-06-23T15:06:08
|
|
Fix uint indices WebGL test to draw something.
This test was specifying a draw with two indices instead of six.
This wasn't producing any error on most configurations, but on
Android it was producing a driver error that was only visible in
Debug.
BUG=angleproject:2086
Change-Id: I7c3cee4cc10d6c37e3bac8ed9fbc16ecb2cb9e63
Reviewed-on: https://chromium-review.googlesource.com/546539
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
8033165b
|
2017-06-23T10:59:51
|
|
Don't use constexpr pair constructor in translator.
Although this seems to compile and pass on our bots, the std::pair
constructor with arguments is not constexpr until c++14. Instead
use a helper struct which achieves the same goal.
BUG=chromium:697758
Change-Id: I0f9873729485a5059f79af969cb56f84706e6c98
Reviewed-on: https://chromium-review.googlesource.com/545796
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c6a34b03
|
2017-06-23T10:51:00
|
|
Add guards around dxgi_support_table.h.
BUG=angleproject:2082
Change-Id: I6f20502bac3c664d5ef8c6d65b244c37a5727f26
Reviewed-on: https://chromium-review.googlesource.com/545458
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
c74ff571
|
2017-06-22T14:45:45
|
|
Consolidate TypedResourceManager::isXGenerated.
BUG=angleproject:1458
Change-Id: Ib5c561610ab6dbcf0f65d915dfe8a8ca21ebe7f3
Reviewed-on: https://chromium-review.googlesource.com/544683
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
84a6c5b2
|
2017-06-21T16:12:58
|
|
Perform all glXMakeCurrent in DisplayGLX
This allows caching the current surface more efficiently than at the
egl layer because we can take advantage of having only one backing
context.
BUG=angleproject:1651
Change-Id: I62867b16ac5e06901a988dc41a3d4812accdb74c
Reviewed-on: https://chromium-review.googlesource.com/543835
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
665e4d97
|
2017-06-21T15:04:48
|
|
Perform all wglMakeCurrent calls from DisplayWGL.
Display WGL is the best place to track the currently bound surfaces and
contexts and cache them appropriately. This results in a ~40% speed
increase in the WebGL Aqarium demo because wglMakeCurrent is now only
called once at initialization.
BUG=angleproject:1651
Change-Id: I61132bb4a0db8de592600173c20787c67d18e067
Reviewed-on: https://chromium-review.googlesource.com/543583
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
579d8c7d
|
2017-06-21T14:56:55
|
|
Only use the last context for the texture completeness cache.
The frequency of contexts switches is very slow compared to draw calls.
Instead of doing a map lookup, only store the completeness cache for the
last context used with the texture.
BUG=angleproject:2078
Change-Id: Ia24c891e1b5781b61fd463ce70e90d4b394c6f8a
Reviewed-on: https://chromium-review.googlesource.com/542946
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
65ec0b2e
|
2017-03-28T16:10:52
|
|
ES31: Add support for bindImageTexture on GL backend
This patch refers to https://chromium-review.googlesource.com/c/380636/
BUG=angleproject:1987
Change-Id: If621eed6ecaa7298214843a2a133801ca1487b03
Reviewed-on: https://chromium-review.googlesource.com/462088
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7a20b973
|
2017-06-13T14:25:26
|
|
Refactor uniform block binding
Remove mUniformBlockBindings and move its bindings to mUniformBlocks.
BUG=angleproject:1442
Change-Id: I62b4471990a44e626d2357c41cb914abc27cb18f
Reviewed-on: https://chromium-review.googlesource.com/532834
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
db9e5d31
|
2017-06-12T12:05:45
|
|
D3D11: Only apply attachments that are written by the program
This works around a bug in the AMD driver that writes 0's to the
first attachment if it isn't written by the pixel shader.
BUG=angleproject:2048
Change-Id: I384fd60c0e0a37fbc0fd7b69fe1ec74fe4ffac8f
Reviewed-on: https://chromium-review.googlesource.com/531630
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
cce8965d
|
2017-06-19T16:04:09
|
|
Remove most of the remaining logic from glslang.y
Move most of the logic in glslang.y to ParseContext. This will make it
easier to change the code in the future.
Only a few specific bits of logic are kept in glslang.y:
* Disabling a parsing rule when a given shading language version is
being parsed. This makes it easier to check the grammar against the
grammar in the GLSL ES specs.
* Scoping calls that need to be paired with another call. It's much
easier to check these for correctness when the paired calls are next
to each other.
BUG=angleproject:911
TEST=angle_unittests
Change-Id: I52f42a1fc0f28463ca4b237dc6e88345e5173064
Reviewed-on: https://chromium-review.googlesource.com/539640
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
83dde7b9
|
2017-06-21T15:02:54
|
|
Use the std::unordered_map::at method instead of operator[].
It is known that the entry exists in the map, the at operator is slightly
faster in this case.
BUG=angleproject:2079
Change-Id: I3a64212293fa0320f3df5327e92d11eb7ef28c4f
Reviewed-on: https://chromium-review.googlesource.com/543683
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
da066657
|
2017-06-21T11:33:48
|
|
Fix invalid storage recovery on FL 9_3.
This problem was uncovered when I inadvertently changed TextureD3D to
delete its storage before its images. Small mips of compressed
textures must use a nullptr argument to CopySubResource, otherwise
the runtime complains about un-aligned sizes.
Also change the class to delete the Images before the Storage again
so we don't wastefully recover the images before deleting them. Also
change the Image pointers to use std::array and std::unique_ptr.
BUG=angleproject:1156
BUG=angleproject:2077
Change-Id: Idb2e53835b7a9b973285ff0781f70b25f05c77aa
Reviewed-on: https://chromium-review.googlesource.com/543438
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6be3d4cd
|
2017-06-16T15:54:15
|
|
Fix incorrect format set being used for destination copy formats.
This validation matches Chrome's.
BUG=angleproject:1932
Change-Id: I2dc75c21924231ab75000dff92ef92cbc12adf55
Reviewed-on: https://chromium-review.googlesource.com/538956
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e7bd218c
|
2017-06-16T16:13:13
|
|
Accept GL_FRAGMENT_SHADER_DERIVATIVE_HINT in ES3 contexts.
BUG=angleproject:2070
TEST=deqp/functional/gles3/shaderderivate_dfdx
TEST=deqp/functional/gles3/shaderderivate_dfdy
TEST=deqp/functional/gles3/shaderderivate_fwidth
Change-Id: I4e10343036a813c122ca41913324051b5c02e785
Reviewed-on: https://chromium-review.googlesource.com/538861
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
914b79a6
|
2017-06-19T16:03:19
|
|
Fix parsing GLSL loop conditions that declare a variable
Now the variable declaration is included in the AST, so that the loop
body may refer to the variable. The variable declaration is placed in
a block that wraps the loop. This way we can still only have
TIntermTyped loop conditions in the AST, which keeps the code dealing
with loops fairly simple and type safe.
This change includes reversing the return value of executeInitializer,
so that it returns true on success and false on error. This is more in
line with other ParseContext member functions.
BUG=angleproject:2073
TEST=angle_end2end_tests
Change-Id: I5c4ecbf1b438d3fff6d6237c0dcf191e2a19664c
Reviewed-on: https://chromium-review.googlesource.com/539639
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
8700a98e
|
2017-06-13T10:15:13
|
|
Fix missing return statement in VertexFormat validation.
BUG=angleproject:2063
Change-Id: Idc1c7b42ed0a2545d9ad4f3c645d0dea2c85c11e
Reviewed-on: https://chromium-review.googlesource.com/533273
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
35bcad42
|
2017-06-06T15:12:27
|
|
Optimize builtin function emulator class.
This refactor uses a generator to produce static arrays instead of
using a bunch of std::map inserting statements. It speeds up shader
translation because every shader compile would create and tear down
this table.
Currently it is implemented as a flat array, but in the future we
could use compile-time hashing to implement faster lookup.
BUG=chromium:697758
Change-Id: I689f7de4d9b2c8c76095bb313f4c040116fc61d2
Reviewed-on: https://chromium-review.googlesource.com/521226
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
a71a98ee
|
2017-06-19T15:15:00
|
|
Allow '\' characters in shader source for WebGL2.
TEST=deqp/data/gles3/shaders/preprocessor.html
BUG=angleproject:2016
Change-Id: Ia5240a1ff65ebadc15604a5c3eb63042953c43a5
Reviewed-on: https://chromium-review.googlesource.com/540198
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
672f7f3f
|
2017-06-15T17:42:17
|
|
WebGL Compat: forbid client side arrays, even unused
BUG=angleproject:2064
Change-Id: I9a9c2df9a158799dbdc490446352cdf30fb87ca6
Reviewed-on: https://chromium-review.googlesource.com/537812
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
6260b7aa
|
2017-06-19T11:07:19
|
|
Fix kResourceTypeNames initialization
Due to a missing comma the kResourceTypeNames array contained a single
long (concatenated) string instead of NumResourceTypes independent
strings.
This incorrect initialization caused a crash in out-of-memory
situations, but this was only noticed on VC++ 2017 for some reason.
This fix adds the missing comma and uses a static_assert to ensure that
the array is initialized correctly.
BUG=chromium:727671,728226,731089
Change-Id: I9f0f3d3725b9f773505506513afb6c349db3a7fb
Reviewed-on: https://chromium-review.googlesource.com/539536
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
3cd0dd37
|
2017-06-06T14:43:30
|
|
Don't expose non-conformant multisampling modes on GL
Some NVIDIA GL drivers expose non-conformant multisampling modes. The
conformance of multisampling modes can be queried using the extension
NV_internalformat_sample_query. Use it to filter out the
non-conformant modes from the modes that are exposed by ANGLE.
The MAX_SAMPLES value and other similar values stored in caps also
need to be lowered to match the maximum number of samples exposed
for required formats.
There seems to be an NVIDIA driver bug related to querying
STENCIL_INDEX8 multisample format. Work around this by querying
DEPTH24_STENCIL8 instead.
There's also some confusion around whether RGB9_E5 should be
renderable. Once the floating point texture extensions got rolled
into the core GL spec, it was eventually made clear that RGB9_E5
is intended not to be renderable. The extension specs that predate
float textures in the core spec do suggest that it would be
renderable, but in practice drivers that advertise the extension
strings don't reliably implement RGB9_E5 as renderable. Solve this
by disabling it as a renderable format and adding an explanatory
comment.
BUG=chromium:682815
TEST=angle_end2end_tests,
dEQP-GLES31.functional.state_query.internal_format.renderbuffer.*
Change-Id: I2218e3a23ea7b48a0615fea77a91897dc7d5fe9e
Reviewed-on: https://chromium-review.googlesource.com/525515
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
30ca54f4
|
2017-06-19T11:45:06
|
|
D3D11: Fix mingw64 build.
Two small build errors were breaking ming64.
BUG=angleproject:2071
Change-Id: Ia5c8e629e77c09f151b888364e92475b4c3f1709
Reviewed-on: https://chromium-review.googlesource.com/539796
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
125e220e
|
2017-06-19T13:23:18
|
|
Track LevelInfoGL per cube map face.
When transitioning between formats in cube maps, tracking of luma
workaround information would become incorrect because it was only tracked
per-level.
There are no failing tests due to this because once the cube map is
complete again, the tracking is correct.
TEST=conformance/more/conformance/quickCheckAPI-S_V.html
BUG=angleproject:2074
Change-Id: If4e1e94061208f0cf3668b2bd6be59a9a21e42b6
Reviewed-on: https://chromium-review.googlesource.com/539956
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
fe54834f
|
2017-06-19T11:13:24
|
|
Proliferate gl::Context.
This enables a few small things: it will enable making the platform
a property of the Display rather than a global. The same goes for the
global logging annotator. Also it ensures all back-end implementations
have access to the GL / EGL state when available.
Also introduces a smart pointer helper class to angleutils for objects
that prefer to be destroyed with a context (gl::Context/egl::Display)
parameter. We were using std::unique_ptr in a few places that would
not work well with these objects.
BUG=angleproject:1156
Change-Id: I59e288a3d6f766ff8a0f4b48ff3a1fbf7489daba
Reviewed-on: https://chromium-review.googlesource.com/529706
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
61e16b44
|
2017-06-19T11:13:23
|
|
Context: Bind current display/surface.
Looking at the EGL spec, it says for eglGetCurrentDisplay:
"The display for the current context in the calling thread, for the
current rendering API, is returned."
This implies that MakeCurrent binds a display to a Context. There's
also pretty clear language for the read/draw Surface as well, that
they can only be bound to one Context/thread at a time. Hence we
don't need to duplicate this storage in the egl::Thread structure,
merely storing a pointer to the current Context, which has access
to the read/draw Surface and current Display.
BUG=angleproject:1156
Change-Id: Ia3b99d50b3591012c43e851834c1af02ff62a33f
Reviewed-on: https://chromium-review.googlesource.com/538865
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
12b0b399
|
2017-05-30T13:22:31
|
|
Clean up ValidateOutputs
Remove the validateOutputs method from Compiler and replace it with a
static method alongside the traverser. This encapsulates the
ValidateOutputs implementation better.
TEST=angle_unittests
BUG=angleproject:2068
Change-Id: I1788cb9726db41ca35fd0e746f8d48ced7fee74f
Reviewed-on: https://chromium-review.googlesource.com/535477
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
bb1b19b6
|
2017-06-16T16:59:00
|
|
Generate INVALID_OPERATION when the copy texture destination level is missing.
TEST=conformance2/textures/misc/tex-image-with-bad-args-from-dom-elements
BUG=angleproject:1932
Change-Id: I6e0e9213d86a72aa092131189ecaefa60afa4194
Reviewed-on: https://chromium-review.googlesource.com/538864
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
638c7277
|
2017-06-13T15:50:26
|
|
Implement EGL_KHR_surfaceless_context for D3D, GL and NULL backends.
Skip all config attributes that have the value of EGL_DONT_CARE. From the
EGL 1.5 spec: "If EGL_DONT_CARE is specified as an attribute value, then
the attribute will not be checked.".
BUG=angleproject:1651
Change-Id: I30c95a1970543fb6f1d4b02d2babf3df61cad543
Reviewed-on: https://chromium-review.googlesource.com/533937
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
e72595b4
|
2017-06-06T15:12:26
|
|
Rename EOpFaceForward to EOpFaceforward.
This mirrors the spec naming and makes auto-gen a little easier.
BUG=chromium:697758
Change-Id: I9bcbc2c874b9a93a6d542aedf2b239f01ee708ce
Reviewed-on: https://chromium-review.googlesource.com/526393
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d04908bc
|
2017-06-09T14:15:35
|
|
Refactor ProgramBinary entry points.
These will need to set dirty bits for the program, and this is best
done via the Context.
BUG=angleproject:747
Change-Id: I1379d2d4be0e94206c0aa7cb1546aa1a591f23ff
Reviewed-on: https://chromium-review.googlesource.com/529767
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
2648d929
|
2017-06-15T11:36:47
|
|
Fix scanForWantedComponents not ignoring attribute values of 0.
Slightly refactor scanForWantedComponents to not iterate over every
attribute and only check the needed ones.
BUG=angleproject:2069
Change-Id: I77bab7764552093f79472809aad3594be351831a
Reviewed-on: https://chromium-review.googlesource.com/537132
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|