|
ab4be84f
|
2017-07-18T11:23:07
|
|
Add newlines when writing original shader source to shader debug output.
Previously, the entire original shader would end up being written to a single
line, not very readable.
Change-Id: I8cdfd498bb47395da2bd11c3d3b2eecf266c914e
Reviewed-on: https://chromium-review.googlesource.com/576064
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
dde78e8c
|
2017-05-22T14:13:27
|
|
ES31: Implement Vertex Attrib Binding on OpenGL
This patch intends to implement Vertex Attrib Binding on OpenGL
back-ends:
1. Add supports for updating vertex attributes by Vertex Attrib
Binding APIs.
2. Refactor the process of updating vertex attribtues in class
VertexArray to make it easier to implement this feature.
BUG=angleproject:1593
TEST=dEQP-GLES31.functional.vertex_attribute_binding.*
Change-Id: I800e61518c552b94b84c415895ad31668b0a84b2
Reviewed-on: https://chromium-review.googlesource.com/510251
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4cff8d62
|
2017-07-06T14:54:09
|
|
ES31: TexParameter{if} validation for TEXTURE_2D_MULTISAMPLE on OpenGL
When setting parameters by TexParameter{if} for TEXTURE_2D_MULTISAMPLE,
an INVALID_ENUM error is generated if target is TEXTURE_2D_MULTISAMPLE,
and pname is any sampler state from table 20.11. An INVALID_OPERATION
error is generated if target is TEXTURE_2D_MULTISAMPLE, and pname
TEXTURE_BASE_LEVEL is set to a value other than zero.
BUG=angleproject:1590
TEST=angle_deqp_gles31_tests.exe --deqp-case=dEQP-GLES31.functional.texture.multisample.negative.texture*
Change-Id: I5d71731c11fb6e114a57e753e439e180695a7c79
Reviewed-on: https://chromium-review.googlesource.com/560607
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yunchao He <yunchao.he@intel.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c7ba85c9
|
2017-07-14T22:17:01
|
|
TexutreD3D: Only update storage level if it exists.
This was causing an assertion failure in updateStorageLevel when the
storage didn't contain the requested level. Gate the call behind an
isValidLevel check.
TEST=conformance/misc/type-conversion-test.html
BUG=angleproject:1815
Change-Id: Iadf46d232d5a117ae1ae74c6e71677b1e06a5321
Reviewed-on: https://chromium-review.googlesource.com/572705
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a0016b7f
|
2017-07-14T14:30:46
|
|
Check depth-stencil attachment sample count.
Currently we would only check for the color attachment sample count,
which could return incorrect results for depth or stencil-only
Framebuffers.
BUG=angleproject:2108
Change-Id: I378349c91c0139ee507d88fa6a36a86234fea0d4
Reviewed-on: https://chromium-review.googlesource.com/571064
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
318f9aa5
|
2017-05-17T17:47:28
|
|
Initialize ANGLE_multiview caps and workaround state
The patch checks whether ANGLE_multiview can be supported in the OpenGL
renderer, updates the caps and adds a workaround field to enable
multiview support through the NV_viewport_array2 extension.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: I99dae10564db7bcca41d7624f8de272c1d996e09
Reviewed-on: https://chromium-review.googlesource.com/567934
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
c43be720
|
2017-07-13T16:22:14
|
|
Implement ANGLE_program_cache_control extensions.
This will give the browsers the ability to control the cache size,
query and populate the contents, and trim cache contents on memory
pressure.
BUG=angleproject:1897
Change-Id: I6edaa7d307b890223db98792d5b074e4a7fdfaa4
Reviewed-on: https://chromium-review.googlesource.com/563606
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
c5af8ba6
|
2017-07-11T12:18:31
|
|
D3D11: Make sure to resolve the storage for CopyTexImage3D.
TextureD3D_3D::copySubImage worked around missing functionality in D3D11
for copying a framebuffer directly to a texture storage but didn't handle
the case of a texture storage already existing. This caused the image to
have out-of-date data before the new data was copied into it. Simply copy
the data from the storage back into the image before performing the copy
from the framebuffer and then copy back to the storage afterwards.
TEST=conformance2/textures/misc/copy-texture-image-webgl-specific.html
BUG=angleproject:1815
Change-Id: I308d6a1d3ecbc738f7d0e232bece433e6b353638
Reviewed-on: https://chromium-review.googlesource.com/567199
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d90b214f
|
2017-07-12T15:33:35
|
|
D3D11: If an image is dirty, copy it to the storage before copying from a FB.
If a storage already existed, it may have old data in it. Check if the
image is dirty and copy the initialized memory into the storage before
copying data from the framebuffer.
TEST=conformance/textures/misc/copy-tex-image-and-sub-image-2d
BUG=angleproject:1815
Change-Id: Ic69c5519b2e09e4b62025b1bf413d2a71a4a2afb
Reviewed-on: https://chromium-review.googlesource.com/568410
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d178aa46
|
2017-07-13T14:03:22
|
|
Fix attachment validation bug
Passing COLOR_ATTACHMENTm, where m is greater or equal to
MAX_COLOR_ATTACHMENTS, to a FramebufferTexture* function should
generate an INVALID_OPERATION instead of an INVALID_VALUE error.
BUG=angleproject:2106
TEST=angle_end2end_tests
Change-Id: I99045defcbe5eb2afefac1b45062ee4245f50dd3
Reviewed-on: https://chromium-review.googlesource.com/569966
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
34bc315d
|
2017-03-29T14:56:01
|
|
ES31: Implement multisampled Textures for D3D part.
Implement TexStorage2DMultisample api for d3d part.
BUG=angleproject:1590
TEST=angle_end2end_tests --gtest_filter=TextureMultisampleTest*
TEST=angle_deqp_gles31_tests --deqp-case=dEQP-GLES31.functional.texture.multisample.negative.fbo_*
Change-Id: Icbfba45b9c2965af02b54dd4060b7b49970cb74b
Reviewed-on: https://chromium-review.googlesource.com/457161
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
84db5733
|
2017-07-13T08:00:02
|
|
Merge "Fix non statically used fragment input structs on HLSL"
|
|
e2a728aa
|
2017-07-12T20:39:35
|
|
Merge "Validate uniforms and attributes name conflicts when linking"
|
|
59bc668c
|
2017-07-12T18:57:24
|
|
Merge "Validate the ReadPixels type and format for INVALID_ENUM."
|
|
caa5cda0
|
2017-06-15T21:14:03
|
|
Validate uniforms and attributes name conflicts when linking
Uniforms and attribute names have global scope, according to:
GLSL 1.017 sections 4.2.6, 4.3.3 and 4.3.4.
Thus, they can't have same names.
BUG=angleproject:2014
Change-Id: Ibeb064aca877e404a67b9e3e9b57a0cc42e86f9f
|
|
6fc8c9b9
|
2017-07-12T17:14:54
|
|
Merge "Validate that the mip level is not too large for CopyTextureCHROMIUM."
|
|
9dd5dbd8
|
2017-07-12T16:26:42
|
|
Merge "Link atomic counters to buffers"
|
|
280ba991
|
2017-04-18T16:30:58
|
|
Validate the ReadPixels type and format for INVALID_ENUM.
GL_INVALID_ENUM should be generated if the type or format arguments were
not valid for any ReadPixels command. This validation should happen
before validating if the combination of format and type is valid.
TEST=conformance/reading/read-pixels-test
BUG=angleproject:2000
Change-Id: If49d69655f5ab0a3abbde58b49541c84249c1750
|
|
3847f94d
|
2017-07-12T11:17:28
|
|
Validate that the mip level is not too large for CopyTextureCHROMIUM.
When the mip level was greater than the maximum, it could cause an
out-of-bounds read when trying to query the Texture's size and format
later in the validation.
BUG=740426
Change-Id: Ibd6c977981e5f8b7368c161b7969d9e916c6095b
|
|
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"
|
|
06a06f5e
|
2017-07-12T12:22:15
|
|
Fix non statically used fragment input structs on HLSL
Add static use information to struct fields that mirrors the static
use information on the struct itself. This way dynamically generated
HLSL doesn't need special handling for initializing fragment inputs
if they are structs.
This fixes a problem with the previous code where dynamically
generated HLSL ended up trying to initialize structs that are not
declared in the HLSL output because they were not being referenced.
BUG=angleproject:2104
TEST=angle_end2end_tests
Change-Id: I21283ce4fe26515d62d95e61f8155dc9a9b44cf1
|
|
eaef1e5e
|
2017-06-13T10:44:11
|
|
Link atomic counters to buffers
Gather counters from each shader and group them according the
layout qualifier 'binding' into each buffer.
BUG=angleproject:1729
TEST=angle_end2end_tests:AtomicCounterBufferTest
Change-Id: I8d0cd0d2bf65be37c035b0e1540481c8bee0bae4
|
|
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
|
|
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
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
165dcf15
|
2017-06-07T15:05:14
|
|
Allow CHROMIUM_copy_texture to copy to non-zero mips.
Fix some errors in the GL backend related to source and destination mipmap
targets.
BUG=angleproject:1356
Change-Id: I030529c8626f3bc30dbb4f7f859a02ba56e315e3
Reviewed-on: https://chromium-review.googlesource.com/527653
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
8d471f90
|
2017-06-13T16:05:35
|
|
Make distinct header guards for anglebase.
BUG=angleproject:2065
Change-Id: I7783d4866a2e16e0cee79aecccb6d5ee1b74165d
Reviewed-on: https://chromium-review.googlesource.com/533724
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
97ee6548
|
2017-06-07T17:06:05
|
|
Shunt more code to StateManager11.
Previously the Renderer11 would call directly into the state manager
sync methods. Instead make a single updateState method, and make
several state sync methods private to the manager. Also rename them
to clarify they're for syncing state, not for direct use.
BUG=angleproject:1156
Change-Id: I94880a744e7ade3895fa2a312a2436ba4ef38dba
Reviewed-on: https://chromium-review.googlesource.com/529705
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fb05bcba
|
2017-06-07T15:43:18
|
|
Move the vk Serial class to renderer_utils.
This can be useful for other back-ends, for various types of state
management. Also redesign the class to use an opaque factory instead
of an increment operator. The class maintains the property of being
ordered. Also assume we don't overflow with 64-bit serials. We could
maybe redesign this to use 32-bit serials for memory constrained
situations, and handle overflow more gracefully.
I plan to use the serials to track state revisions for the vertex
array class, to avoid doing redundant work.
BUG=angleproject:1156
Change-Id: I02c78b228bc6e2fb3ee786fe67a4e607baaca18e
Reviewed-on: https://chromium-review.googlesource.com/529704
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c174db3a
|
2017-06-13T15:44:00
|
|
D3D11: Apply a non-null blendstate in masked depth clear.
In https://chromium-review.googlesource.com/c/453888/, we changed how
blendstates were applied in masked clears. This change would apply a
null blendstate when all color channels were disabled, but this seems
to have an issue on Intel Cherry View drivers. Work around this issue
by restoring the prior functionality of making a simple masked blend
state.
Also clean up some of the code style in the Clear11 class.
BUG=chromium:730126
Change-Id: I9a4044201b2f07e9483525513a59e19bb2a8bcd3
Reviewed-on: https://chromium-review.googlesource.com/533684
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dbcced8e
|
2017-06-06T15:55:54
|
|
When validating image size, use format for SubImage calls.
internalFormat is GL_NONE when validating these calls for glTexSubImage
and leads to an expected minimum size of 0.
Add extra unsized formats that are never supported to the format tables.
These are needed for determining the size of input data.
BUG=angleproject:2054
Change-Id: Ic827a279a246ff92c9f279232574521692b1c6f2
Reviewed-on: https://chromium-review.googlesource.com/526356
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
d222d454
|
2017-06-06T17:48:35
|
|
Use HashingMRUCache in InputLayoutCache.
This simplifies the state management code inside this manager. Also
it should improve the speed of lookups due to using hashing instead
of a tree lookup.
BUG=angleproject:1156
BUG=angleproject:2044
Change-Id: I19ea8dbac6f2dfd7d30dd403d77b66ba0aa85d73
Reviewed-on: https://chromium-review.googlesource.com/527693
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
34ca4f5b
|
2017-06-13T11:49:39
|
|
Remove Shader::getSemanticIndex.
This method doesn't really belong to GL, and was only used by the D3D
back-end to compute some attribute indexes. Simplify the code by
moving it into ProgramD3D. Also add the ability for the ShaderImpl to
assert that any pending compiles have resolved.
BUG=angleproject:1156
Change-Id: I0af3d3082ff8c908e6a87b9734989efbefd28808
Reviewed-on: https://chromium-review.googlesource.com/526336
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dd5f27ee
|
2017-06-07T10:17:09
|
|
Make VertexBinding's member variables private
The patch decorates all members in VertexBinding as private and limits
access to them only through getters and setters. This makes it easier to
debug and keep track of any assignments to the class members.
BUG=angleproject:2062
TEST=angle_end2end_tests
Change-Id: Iddd49063d060f136bc9cf11c313a5af0931d433c
Reviewed-on: https://chromium-review.googlesource.com/530786
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4f86d053
|
2017-06-05T12:59:26
|
|
Introduce MemoryProgramCache.
This class will manage GPU binary programs in memory. It will be
owned by the Display, and shared between Contexts. Currently this
CL just refactors the Program binary saving and loading into static
members of this new class.
BUG=angleproject:1897
Change-Id: I34f5afb2c02416f6fd80dd65ba3827a8637ce190
Reviewed-on: https://chromium-review.googlesource.com/522873
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
9cf9e871
|
2017-06-05T12:59:25
|
|
Move LinkResult to the gl:: namespace.
This is a derived type from gl::Error so makes sense to be there.
Also makes it more accessible than in ProgramImpl.h
BUG=angleproject:1897
Change-Id: Id41b13e5a072745d8c361057f5bef8f152e0452b
Reviewed-on: https://chromium-review.googlesource.com/522872
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
83418fb1
|
2017-06-05T12:59:24
|
|
Don't allow for error in ProgramImpl::save.
Refactoring cleanup patch only.
BUG=angleproject:1897
Change-Id: I6d12de5dab16ead9684886a1cf15b570e3c98156
Reviewed-on: https://chromium-review.googlesource.com/522871
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
88323761
|
2017-06-09T12:48:32
|
|
Introduce SizedMRUCache.
This class is an MRU cache for sized objects, like Textures or
Program binaries. It is based on the base::HashingMRUCache type,
and evicts objects automatically.
BUG=angleproject:2044
Change-Id: I83859a0388f984e872fb9209e4c9efbf5d6c93f1
Reviewed-on: https://chromium-review.googlesource.com/517380
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c084de14
|
2017-06-05T14:28:52
|
|
ProgramD3D: only broadcast when the GL_EXT_draw_buffers is enabled
The behavior is undefined in GL ES when multiple attachments are used
with gl_FragColor but WebGL clarifies that:
- If the extension is enabled, broadcast happens
- If the extension isn't enabled, only the first attachment is written
BUG=angleproject:2048
Change-Id: I6d85ba91df77d42fb8863a03f1faa006cd7817bf
Reviewed-on: https://chromium-review.googlesource.com/523809
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
0492d447
|
2017-06-07T13:45:15
|
|
Move murmurhash to src/common/third_party
Bug: chromium:697758
Change-Id: I8a3a990b14cde0fdd45319d593040bfc571abf3e
Reviewed-on: https://chromium-review.googlesource.com/527602
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
60f6eb20
|
2017-05-08T15:34:46
|
|
Add WebGL test that draws to missing attachment.
In WebGL one can Clear, DrawArrays, and DrawElements to a framebuffer
with a missing attachment with no error.
BUG=angleproject:1822
Change-Id: I4dece2fa8fad31c812e24ae18bdc380c2857a1f8
Reviewed-on: https://chromium-review.googlesource.com/502967
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
2cd45629
|
2017-06-08T20:14:13
|
|
D3D11: Consolidate Vertex Buffer application.
With this change, IASetVertexBuffers is only called from a single
code site in StateManager11. All other classes call through to here.
This will make adopting the dirty bits for InputLayouts and VBs much
simpler.
BUG=angleproject:2052
Change-Id: I6e7b6146deb7f80f5f0e75dd0aff18eb4cc2bfc2
Reviewed-on: https://chromium-review.googlesource.com/524232
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
863b6236
|
2017-06-08T11:18:49
|
|
Refactor redefineImage and track dirty images properly.
Several issues showed up in testing with WebGL:
* Images should only be forcefully re-defined when there is no data to
upload.
* After an image is marked dirty, a later call to subImage would cause
assertion failures because the texture storage would try to verify that
the image was not dirty, don't try to copy directly to storage in this
case.
BUG=angleproject:1635
Change-Id: I9e5d83850d743b7d4d2db938312ee5c35a3a79ee
Reviewed-on: https://chromium-review.googlesource.com/527348
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
982f6e01
|
2017-06-07T14:33:04
|
|
Improvements to the gl::Range class.
Make this a proper class, fix the extends method (previously did not
work as expected), add a contains method, and add tests. Also add an
iterator helper class so we can iterate over the range with range-for
loops.
This also fixes the shader resource unsetting code, which was not
actually unsetting all the possible applied textures.
BUG=angleproject:2052
Change-Id: I2a6fa97f96ccb612ad01a5e3f24dc869c54c967b
Reviewed-on: https://chromium-review.googlesource.com/527318
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
165361ca
|
2017-06-07T14:56:57
|
|
Entry point refactoring
Refactor texStorage2D and texStorage3D.
BUG=angleproject:747
Change-Id: Id5ab6bbff5ce6debc84318e28b12683bf8b106b1
Reviewed-on: https://chromium-review.googlesource.com/526371
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5ea762a6
|
2017-06-07T14:59:51
|
|
Consolidate base:: imports.
This merges the mrucache and numerics into one folder, to prevent
having to make two identical versions of logging.
BUG=angleproject:2044
Change-Id: Iba6dab05b21eb9ba0de44f27a90579c590a9a7fd
Reviewed-on: https://chromium-review.googlesource.com/522870
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c4d18aac
|
2017-03-09T18:45:02
|
|
Use ErrorStream everywhere
Eliminates one more usage of FormatString and its static initializer.
Add more ErrorStream types
and replace gl::Error and egl::Error with them.
BUG=angleproject:1644
Change-Id: Ib498d0ae4b81a332ec71aed7cf709993b154e6bb
Reviewed-on: https://chromium-review.googlesource.com/505429
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|