|
51f40ecd
|
2016-06-15T14:06:00
|
|
Make Framebuffer::checkStatus non-const.
BUG=angleproject:1388
Change-Id: Ia9befba0c915c087f2fe0557d91060256f6d4950
Reviewed-on: https://chromium-review.googlesource.com/348955
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a9d60da8
|
2016-06-08T16:09:09
|
|
D3D11: Fix uploading RGB10A2 data to RGB5A1 textures.
WebGL test: textures/misc/tex-new-formats
BUG=angleproject:1407
BUG=chromium:616176
Change-Id: I7b557587c1ea0861bcac327a370480b36f679794
Reviewed-on: https://chromium-review.googlesource.com/351170
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e40dd76c
|
2016-06-08T15:30:14
|
|
D3D11: Fix loading of RGB5A1 data from RGBA8.
BUG=angleproject:1407
BUG=chromium:616176
Change-Id: I2b88616b6b72dd9caf07fac8ebba9a065cf2983f
Reviewed-on: https://chromium-review.googlesource.com/350907
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9fc7b4c7
|
2016-06-08T15:30:14
|
|
D3D11: Fix loading of RGBA8 data to RGB565.
BUG=angleproject:1407
BUG=chromium:616176
Change-Id: I663d265abfabb88a5aca8ca0002d2cbc29f6b069
Reviewed-on: https://chromium-review.googlesource.com/350906
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
986475fa
|
2016-06-14T19:10:53
|
|
Fix native EGL library loading on Android.
Takes care of non-component Clank build and 64 bit.
BUG=angleproject:1362
TEST=angle_end2end_tests
Change-Id: Ib338734960c6ac378ae49028ae30416bff31ac2a
Reviewed-on: https://chromium-review.googlesource.com/352710
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
1d688763
|
2016-06-08T15:30:13
|
|
D3D11: Fix loading of RGBA4 textures for ubyte.
BUG=angleproject:1407
BUG=chromium:616176
Change-Id: Ibb7c5e71b4cf8afe7b7d0092e7d019b87d507ba6
Reviewed-on: https://chromium-review.googlesource.com/350905
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dfde6abf
|
2016-06-09T07:07:18
|
|
Context: Remove mutable gl::State getter.
This will preserve layering - the API layer doesn't mutate the state
directly, it passes the API call through to the Context. Is also
removes the possiblity of any shenanigans of the Validation layer
changing the GL state.
Also, this CL refactors a few validation entry points to take
ValidationContext instead of Context. ValidationContext will be the
correct way to interact with the gl::Context in the Validation code.
Finally, additional refactorings make ContextState a proper class with
private data. This allows the ContextState itself to keep a mutable
pointer to the gl::State, so ValidationContext can modify it if
necessary (and it will be necessary for Framebuffer completeness
caching).
BUG=angleproject:1388
Change-Id: I86ab3561573caa9535c8d1b8aad4ab3d0e7cd470
Reviewed-on: https://chromium-review.googlesource.com/348954
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
95faa233
|
2016-06-07T14:01:53
|
|
Do not apply UNPACK_SKIP_IMAGES for 2D textures on D3D
Resubmitted with test skip added for Intel OpenGL.
GLES 3.0.4 section 3.8.3:
"For the purposes of decoding the texture image, TexImage2D is
equivalent to calling TexImage3D with corresponding arguments and
depth of 1, except that UNPACK_SKIP_IMAGES is ignored."
An "applySkipImages" boolean parameter is added to the functions in
the D3D backend that apply skip offset to the unpack pointer. In case
2D texture data is uploaded, the parameter is set to false and
UNPACK_SKIP_IMAGES is not applied.
BUG=angleproject:1406
TEST=angle_end2end_tests
Change-Id: I5878439e3d38dbae89cc2452a056c2d6bbf9e0b3
Reviewed-on: https://chromium-review.googlesource.com/351330
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
a1d6c4dc
|
2016-06-09T18:00:42
|
|
Revert "Do not apply UNPACK_SKIP_IMAGES for 2D textures on D3D"
The Windows Intel GPU FYI bot started failing the Texture2DTestES3.UnpackSkipImages2D/ES3_OPENGL test after this CL. Example: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28New%20Intel%29/builds/866
This reverts commit ac3575b27296398baebeb6c891871c6dac7df338.
Change-Id: I5120261f5cf1ece9b21e4a94f63f85e014d2d8e4
Reviewed-on: https://chromium-review.googlesource.com/351280
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e02a6834
|
2016-06-09T06:52:41
|
|
Refactor how we signal dependent state changes.
Dependent state changes happen when the user calls TexImage
on a Texture attached to a Framebuffer. The Framebuffer should be
told 'hey, you should know about this'. Other objects also have
dependent relationships, like VertexArrays and Buffers.
This refactoring uses a binding pointer design, similar to the type
'RefCountObject'. This design fixes the need for manual decoupling
when one or the other is destroyed. The pointers are cleaned up in
destructors, and do no-ops when either the source or dest is missing.
Also move these new classes to a location where they are accessible to
the GL layer; they will be important for framebuffer completeness.
BUG=angleproject:1388
Change-Id: I92610acb85dae6f9c009b8f071e121fde53782ae
Reviewed-on: https://chromium-review.googlesource.com/348953
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d2b50a0b
|
2016-06-09T00:13:35
|
|
Move ReadPixels logic to helper methods.
These routines were pretty much duplicated between D3D9 and D3D11.
Since I was going to have to rewrite them again for Vulkan, I
figured it would be best to move them into a common location and
clean them up a bit.
BUG=angleproject:1319
Change-Id: I15d39b052daf3e1020dbd0880f01ae84f3686a0a
Reviewed-on: https://chromium-review.googlesource.com/349630
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6e4d1d21
|
2016-06-08T13:32:27
|
|
D3D11: Simplify load function table init.
Now that C++11 constructor syntax is allowed, we can use a much
simpler scheme.
BUG=angleproject:1407
BUG=chromium:616176
Change-Id: Ida5f235c3ed1429564af5213a5fead6c3b896080
Reviewed-on: https://chromium-review.googlesource.com/350903
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
ac3575b2
|
2016-06-07T14:01:53
|
|
Do not apply UNPACK_SKIP_IMAGES for 2D textures on D3D
GLES 3.0.4 section 3.8.3:
"For the purposes of decoding the texture image, TexImage2D is
equivalent to calling TexImage3D with corresponding arguments and
depth of 1, except that UNPACK_SKIP_IMAGES is ignored."
An "applySkipImages" boolean parameter is added to the functions in
the D3D backend that apply skip offset to the unpack pointer. In case
2D texture data is uploaded, the parameter is set to false and
UNPACK_SKIP_IMAGES is not applied.
BUG=angleproject:1406
TEST=angle_end2end_tests
Change-Id: Iedc2b05377adee8d5c2504511a87421f4b1db18d
Reviewed-on: https://chromium-review.googlesource.com/350465
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
b2ebb5e8
|
2016-06-08T18:17:55
|
|
Revert "Revert "Use MapBufferRangeWithFallback in VertexArrayGL::streamAttributes""
This reverts commit 8b8d043205a69802be7579bd90798162f34740b2.
Change-Id: I25726642d066ca322830d1f5a4327f4e7e551fa6
Reviewed-on: https://chromium-review.googlesource.com/350870
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
4b4cdff8
|
2016-06-06T13:53:38
|
|
Fix unpack parameter validation.
BUG=angleproject:1397
Change-Id: Icdfc99eefcfad730ec887b82ec0758a6d6c0b9a7
Reviewed-on: https://chromium-review.googlesource.com/348064
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8b8d0432
|
2016-06-07T21:34:11
|
|
Revert "Use MapBufferRangeWithFallback in VertexArrayGL::streamAttributes"
This reverts commit c88d8354479c2e8021ceacebed1450d509cf8ffa.
Likely causing failures on Linux webgl tests:
http://build.chromium.org/p/chromium.gpu.fyi/waterfall?builder=Linux%20Release%20(New%20Intel)
Change-Id: I0294f7f544c666ee7db13c4f7acae868c6bd2240
Reviewed-on: https://chromium-review.googlesource.com/350530
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a6426d67
|
2016-06-03T00:18:38
|
|
Android GL backend and end2end tests
Just the bare minimum implementation for end2end tests to run.
BUG=angleproject:1362
TEST=angle_end2end_tests on Nexus 5X
Change-Id: I92293e0f8bdc2ffaa5d4661927750d7cb3d931e6
Reviewed-on: https://chromium-review.googlesource.com/349353
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
acccc6c9
|
2016-05-03T17:22:10
|
|
Vulkan: Hook up Renderer create functions.
Do this in a separate CL to preserve the renderer generation.
BUG=angleproject:1319
Change-Id: I6d5768f199f6aabff747b3708c0625ff78e1ceb0
Reviewed-on: https://chromium-review.googlesource.com/349424
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
07529ff8
|
2016-06-04T02:19:03
|
|
Remove const qualifier from generateConfigs
Requested in https://chromium-review.googlesource.com/349353
BUG=angleproject:1362
Change-Id: I989757c2fb8f65d5afcfb177b7f8da1414871e6f
Reviewed-on: https://chromium-review.googlesource.com/349694
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
c88d8354
|
2016-06-02T23:37:47
|
|
Use MapBufferRangeWithFallback in VertexArrayGL::streamAttributes
Otherwise, end2end tests crash on Nexus 5X,
because Adreno driver doesn't provide glMapBuffer.
BUG=angleproject:1362
TEST=angle_end2end_tests on Nexus 5X and Linux
Change-Id: I6207eca2d0e03eee957bb612271a66016fd562bb
Reviewed-on: https://chromium-review.googlesource.com/349421
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
7c5d2364
|
2016-06-02T23:31:45
|
|
Fix GL_KHR_debug extension functions names
Otherwise, running end2end tests on Nexus 5X crashes.
BUG=angleproject:1362
TEST=angle_end2end_tests on Nexus 5X
Change-Id: I063d9f9836a1575cbf0abe361dbf8b2c1492105d
Reviewed-on: https://chromium-review.googlesource.com/349420
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
513558d3
|
2016-06-02T13:04:11
|
|
Pass depth to computeBlockSize.
This was very wrong for 3D textures.
BUG=angleproject:1384
Change-Id: I7f042449e30e1e909778c0524d1ce99d20ddfd65
Reviewed-on: https://chromium-review.googlesource.com/348063
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e2e406c3
|
2016-06-02T13:04:10
|
|
Add base::numerics for safe math and conversions.
This replaces are "IsUnsignedXXXSafe" family of methods.
Also add overflow checks to unpack block sizes.
BUG=angleproject:1397
Change-Id: Ib47be149b0486c70f795b0d0f8899441faac9340
Reviewed-on: https://chromium-review.googlesource.com/348062
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
171e6a58
|
2016-06-02T09:57:13
|
|
ProgramGL: translate location in setUniform1uiv
BUG=angleproject:1401
Change-Id: I5d08ecb2d4090e4be049dc6d25fc2ea17911ff2c
Reviewed-on: https://chromium-review.googlesource.com/349011
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
44c2156e
|
2016-05-25T13:10:16
|
|
D3D11: Fix CopyTexture for ES3 types.
We were passing a sized format and indexing a table which expects unsized.
BUG=angleproject:1384
Change-Id: I69eb8e3d66cfb2178e3a7a4ddb93a54f47bbc938
Reviewed-on: https://chromium-review.googlesource.com/347249
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d787e50b
|
2016-05-25T13:10:15
|
|
Try more to use ANGLE_TRY.
Also refactor the Renderer11::copyImage functions to share code.
BUG=angleproject:1384
Change-Id: I95f4266c0c9b67a13cba17797989fcc0b0d50c1d
Reviewed-on: https://chromium-review.googlesource.com/347248
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9e54b5af
|
2016-05-25T12:57:39
|
|
Add Vulkan stubs.
Currently enabled for Windows by default.
BUG=angleproject:1319
Change-Id: I87921c579bee466465fb1e3f629bb3a40fdff659
Reviewed-on: https://chromium-review.googlesource.com/328730
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
35170f5c
|
2016-05-25T12:57:38
|
|
Fix Renderer generator script.
This script breaks peridocially because we don't have automated tests
for it. Split the FBO attachment object class into its own file, and
also fix a couple other small snags that prevented the script from
running.
This will facilitate generating Vulkan renderer stubs.
BUG=angleproject:1319
Change-Id: I30a6ce4ab0adad962cea76731dbe82837c5c9a1b
Reviewed-on: https://chromium-review.googlesource.com/347064
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
25ab4510
|
2016-05-13T18:13:59
|
|
Implement GL_EXT_texture_norm16 extension
BUG=angleproject:1365
Change-Id: I972b156ecb41ff44bc1f6365373ab386bacc85f1
Reviewed-on: https://chromium-review.googlesource.com/346530
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
fd08a959
|
2016-05-24T15:19:33
|
|
DisplayGLX: make the Mesa context creation workaround Mesa specific.
BUG=598902
Change-Id: Ib2ca69fb3573dbd0df3dafb4caec0500c7a8aa3b
Reviewed-on: https://chromium-review.googlesource.com/347071
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
00ed7a1f
|
2016-05-19T13:13:38
|
|
Enable always-available extensions in gl::Context.
We can consolidate exposing these extensions in initCaps. Otherwise
we have to maintain the lists in every Renderer back-end.
Also do the same treatment for select egl::Display extensions.
BUG=angleproject:1319
Change-Id: I529dd120c6d2cdbb789bd9dd20491e796e97f3f6
Reviewed-on: https://chromium-review.googlesource.com/345914
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
60515399
|
2016-05-24T10:35:38
|
|
Fix include order for Clang in Renderer11.cpp.
BUG=angleproject:1369
Change-Id: Ie02e7c0b469e148bd8da4499ed560c4907d2a539
Reviewed-on: https://chromium-review.googlesource.com/346891
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8b9b792d
|
2016-05-19T13:13:37
|
|
Make RendererD3D a bit smaller.
Move some D3D11-specific stuff into Renderer11, and remove a few
virtual methods that weren't needed to be virtual.
BUG=angleproject:1369
Change-Id: Id37e7271ffc28b089dbea123dca70f38c1a06ffb
Reviewed-on: https://chromium-review.googlesource.com/345913
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
34106e7a
|
2016-05-19T15:33:13
|
|
D3D11: Require FL 10.1+ for ES3.
We decided some time ago to make our lives easier and raise the
lower bound on the feature level to 10.1 from 10.0. This makes
using some multisample samplers easier in HLSL. It is also a very
small and poorly suppoted fraction of our userbase.
BUG=angleproject:1381
Change-Id: I25d330a6097f71ec772899d49ff5d3a97c0cb0d2
Reviewed-on: https://chromium-review.googlesource.com/346102
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
62baf0cf
|
2016-05-19T13:13:36
|
|
Add a shared egl::SurfaceState struct.
This structure can share GL-level properties (immutably) with the
implementation.
BUG=angleproject:1369
Change-Id: I1e9406f18b6b88bb7db2a8f87b5e6d547cc7ecb1
Reviewed-on: https://chromium-review.googlesource.com/342061
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
0f2b1560
|
2016-05-13T16:15:35
|
|
Fix GenerateMipmap when base level or max level are set
According to GLES 3.0.4 section 3.8.10, GenerateMipmap should generate
levels based on the base level, and generate them at most up to the
max level. Levels outside the base/max level range should be unchanged
by GenerateMipmap.
The Texture class is fixed so that the image descs are set only for
the changed mipmap range when GenerateMipmap is called.
The D3D backend is fixed so that mipmap generation is correctly
started from the base level instead of level 0, and making sure that
mipmaps are generated only up to the max level. Generating mipmaps for
array textures is also fixed for cases where the base level depth >=
max(width, height) * 2.
The GL backend is fixed to sync texture state before GenerateMipmap is
called, so that base level and max level are set correctly in the
driver.
The GenerateMipmap entry point is refactored so that it has a separate
validation function and a context function which does the work.
Validation for out-of-range base levels is added.
New tests are added to verify the functionality. One corner case in
the tests fails on NVIDIA GL drivers likely due to a driver bug -
similar rules for GenerateMipmap are found from newer GLES specs and
also OpenGL specs (checked versions 3.3 and 4.4).
BUG=angleproject:596
TEST=angle_end2end_tests
Change-Id: Ifc7b4126281967fc4f6dc4f9452e5b01e39f83d7
Reviewed-on: https://chromium-review.googlesource.com/344514
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
d3a5b185
|
2016-05-19T13:13:35
|
|
Make inheritance heirarchy for egl::Surface.
This will allow us to select the Impl constructor more easily
createWindowSurface
createPbufferSurface
createPbufferSurfaceFromClientBuffer
createPixmapSurface
This in turn lets us pass an EGLImplFactory to the constructor and
will allow us to pass in the local SurfaceState to the constructor.
BUG=angleproject:1369
Change-Id: I6b13c1548c54bd5c493d59b68bfdaf55226b6bb5
Reviewed-on: https://chromium-review.googlesource.com/342060
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e8528d89
|
2016-05-16T17:50:52
|
|
Fix determining texture mipmap completeness
The code didn't previously take base level properly into account
when determining how many levels to check when checking for texture
completeness.
The code is refactored so that the "q" value in spec, that is the
maximum mipmap level for determining completeness, can be queried from
TextureState. This value is used now for checking completeness.
This requires moving ImageDescs under TextureState. Functions that
operate on the ImageDesc array are also moved from Texture to
TextureState. TextureState members are also renamed to start with the
"m" prefix and made private.
Also handle levels outside the base/max level range consistently in
eglCreateImageKHR validation. We interpret the spec so that if the
level used for the EGL image is not a part of the texture levels that
affect texture completeness, an error is generated.
BUG=angleproject:596
TEST=angle_end2end_tests
Change-Id: I038ef24aa83e0a6905ca3c0bbada5989eecb00d9
Reviewed-on: https://chromium-review.googlesource.com/344880
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
b66a9097
|
2016-05-16T15:59:14
|
|
Add support for OES_EGL_image_external and OES_EGL_image_external_essl3.
BUG=angleproject:1372
Change-Id: I8489e7fd0ab409b0775041ad5e9fbf0aab53886d
Reviewed-on: https://chromium-review.googlesource.com/344734
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a797e066
|
2016-05-12T15:23:40
|
|
Support CHROMIUM_framebuffer_mixed_samples in the GL backend
BUG=angleproject:1378
Change-Id: I634c41f3507dbdeaa56234c4de1b498f81c848ed
Reviewed-on: https://chromium-review.googlesource.com/344520
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
|
|
be815a4f
|
2016-05-12T20:38:38
|
|
Apply effective base and max level on GL backend
This works around GL drivers that neglect to clamp the base level or
max level of immutable textures.
BUG=angleproject:596
BUG=610800
TEST=angle_end2end_tests
Change-Id: Ie4e04aaa9253f2befd73bccefa7759486b3ef487
Reviewed-on: https://chromium-review.googlesource.com/344590
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
53ea9cc6
|
2016-05-17T10:12:52
|
|
Replace rx::Renderer with rx::ContextImpl.
Previously Context had no Impl class, but had a special relationship
with the instanced Renderer class. Having a ContextImpl backing every
Context will allow new designs to enable things like multithreading
(where each ContextImpl stores a Context-specific device) or non-
virtual Contexts on Android or other platforms where it is more
efficient.
A large refactoring patch that touches every back-end.
BUG=angleproject:1363
Change-Id: Icb73a7d37447f08a664eeb499a310ba05d71a57e
Reviewed-on: https://chromium-review.googlesource.com/342052
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
74c2347e
|
2016-05-09T17:30:30
|
|
Support EXT_multisample_compatibility in the GL backend
BUG=angleproject:1377
Change-Id: Ie14aceca8e01f1cbc93fd5bd06d986336fb752b3
Reviewed-on: https://chromium-review.googlesource.com/343501
Reviewed-by: Sami Väisänen <svaisanen@nvidia.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Sami Väisänen <svaisanen@nvidia.com>
|
|
87fc71c4
|
2016-05-11T14:25:21
|
|
D3D: Reallocate storage when texture format changes with base level
Different levels of the same texture may have different formats, so
changing the base level may affect the format that should be used for
the storage. Take this into account in the D3D backend.
The added test fails on some GL drivers.
TEST=angle_end2end_tests
BUG=angleproject:596
Change-Id: I5380e942694a75685ebb510edb01c0489e0d5179
Reviewed-on: https://chromium-review.googlesource.com/344230
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
77ae8d57
|
2016-05-06T14:19:01
|
|
Share TextureState structure with TextureImpl
This refactoring patch removes the need to pass texture state to
methods of TextureImpl in some cases. It also adds target value to
TextureState, and moves TextureState definition to Texture.h.
The effective base level can now also be queried from TextureState,
which reduces the need to pass it around.
Two different code paths that dealt with the TextureStorage11 SRV
cache are combined into one.
Besides refactoring, this patch fixes applying mTopLevel twice when
determining the amount of mip levels TextureStorage11.
BUG=angleproject:596
TEST=angle_end2end_tests, angle_unittests
Change-Id: I1add3d9ad847bec56774e394125156cf9cb0fc2a
Reviewed-on: https://chromium-review.googlesource.com/342940
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
2b4ce80c
|
2016-04-28T13:34:50
|
|
Implement GL_CHROMIUM_sync_query for D3D9 and D3D11.
BUG=angleproject:1366
Change-Id: Iadde61968f45b969c76578a6dd9116a25d63fb4b
Reviewed-on: https://chromium-review.googlesource.com/341230
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
538281f6
|
2016-04-13T23:36:55
|
|
Initial Chrome OS support.
Samples and end2end tests mostly work. Only one config, and no input.
BUG=angleproject:1297
Change-Id: I5b69babccc5b97e486d86e1721a0a1740ad80941
Reviewed-on: https://chromium-review.googlesource.com/319460
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
7aea7e05
|
2016-05-10T10:39:45
|
|
Add EGLImplFactory.
Also rename ImplFactory to GLImplFactory.
This will allow us to use the same factory design pattern for EGL
objects, and to use State helper classes to share data with Impls.
BUG=angleproject:1363
BUG=angleproject:1369
Change-Id: I07a8fe40838d5d4ca32b04910c306edeab4d25a7
Reviewed-on: https://chromium-review.googlesource.com/342051
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
43d0e609
|
2016-05-11T10:35:49
|
|
Disable the DXGI WGL swap chain surface on AMD drivers.
BUG=540829
Change-Id: Ib15658c3fd7132068e9eb1e69a7a04720b3e3d6b
Reviewed-on: https://chromium-review.googlesource.com/344250
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
a314b61c
|
2016-03-10T16:43:00
|
|
Determine D3D texture storage size with correct base level
The size of the texture storage is now determined by extrapolating
the level zero texture dimensions from the base level dimensions.
This fixes crashing when images for levels below the base level are
not defined, and also fixes texture storage dimensions being
calculated wrong in case the levels outside the used level range have
dimensions that are inconsistent with the dimensions inside the used
level range.
Checking texture level completeness in TextureD3D is now done based on
the dimensions of the base level, and levels that are outside the base
level to max level range are not taken into account. Textures are
marked incomplete in case their base level is greater than their max
level.
Changing the base level can also affect the size of the storage
required for the texture. Old storage is now discarded when the base
level is changed and the new base level calls for different storage
dimensions.
Code in TextureD3D is refactored so that "base level" actually means
the base level of the texture specified through the GLES API, and
"level zero" is used where TextureD3D would sometimes previously use
"base level".
Changing either the base level or max level can also affect texture
completeness, so invalidate the cached completeness in Texture if
they are changed.
Some of the added tests are still failing on Intel and NVIDIA OpenGL
drivers because of driver bugs. Tests also fail on OSX.
BUG=angleproject:596
TEST=angle_end2end_tests,
dEQP-GLES3.functional.texture.* (no regressions),
dEQP-GLES3.functional.shaders.texture_functions.* (no regressions),
dEQP-GLES3.functional.state_query.texture.* (no regressions)
Change-Id: Icd73d6e29f84a341ed5ff36d5ec5cb2f469cb4e8
Reviewed-on: https://chromium-review.googlesource.com/333352
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
8415b5fd
|
2016-04-26T13:41:39
|
|
Pass ContextImpl to Framebuffer methods instead of ContextState.
BUG=angleproject:1363
Change-Id: I7e7524d95f2ca31c35918f9fe5c0cb681ed93616
Reviewed-on: https://chromium-review.googlesource.com/340746
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
437fa654
|
2016-05-03T15:13:24
|
|
Add a ContextImpl class.
This class can contain impl-specific functionality for a Context.
This will eventually replace the Renderer class, and we can then
start passing around a gl::Context instead of gl::ContextState.
In D3D11, the ContextImpl could hold a DeferredContext, which would
enable multi-thread rendering. In GL, we can implement non-virtual
(native) Contexts. In Vulkan it might store the logical device.
BUG=angleproject:1363
Change-Id: I39617e6d1a605d1a9574832e4d322400b09867ec
Reviewed-on: https://chromium-review.googlesource.com/340745
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bbd663a2
|
2016-04-20T17:49:17
|
|
Add dirty bits for the pixel pack and unpack buffer
BUG=605775
Change-Id: Ifb7eee94a395a9e9f5a5c1d6c0f05299162264a9
Reviewed-on: https://chromium-review.googlesource.com/340115
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
7cd70337
|
2016-04-20T16:40:49
|
|
Fix integer constant vertex attributes in OpenGL backend
BUG=605775
Change-Id: Ie76cae5be686478019c61c1877611bea83d7502f
Reviewed-on: https://chromium-review.googlesource.com/340114
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
3f572680
|
2016-04-26T13:41:36
|
|
Rename gl::VertexArray::Data to gl::VertexArrayState.
BUG=angleproject:1363
Change-Id: I5acf670bd88988941676cc9bc75606d55cca224e
Reviewed-on: https://chromium-review.googlesource.com/340744
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
15243d9b
|
2016-04-26T13:41:35
|
|
Rename gl::Shader::Data to gl::ShaderState.
BUG=angleproject:1363
Change-Id: I49cb5d7319742487c8c00c58ec58f9a29561b9c1
Reviewed-on: https://chromium-review.googlesource.com/340743
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bda75597
|
2016-04-18T17:25:54
|
|
Finish NV12 support via streams.
The main functionality for NV12 texture support through EGL streams has
been added. Updates to the compiler, texture code, and stream code were
added to support binding to external D3D11 NV12 textures. An end2end test
was also added to test sampling of YUV textures and converting to RGB.
There is also a new script to convert BMP files to an NV12 texture ready
to load into D3D11 for testing purposes.
BUG=angleproject:1332
Change-Id: I39b6ec393ea338e2c843fb911acc1b36cd1158a0
Reviewed-on: https://chromium-review.googlesource.com/339454
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
Reviewed-on: https://chromium-review.googlesource.com/341254
Reviewed-by: Ian Ewell <ewell@google.com>
|
|
48ef11b2
|
2016-04-27T15:21:52
|
|
Rename gl::Framebuffer::Data to gl::FramebufferState.
Moving this out of the Framebuffer class allows us to forward-
declare it.
BUG=angleproject:1363
Change-Id: I91971c37a92151df508cdf7f0eb8c3e93506d112
Reviewed-on: https://chromium-review.googlesource.com/340741
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3d63bc79
|
2016-04-19T12:42:49
|
|
OpenGL backend: fix logic updating max uniform components
BUG=605775
Change-Id: I37c1dc7117e7e47ee3a7e031cbccb44f39458c09
Reviewed-on: https://chromium-review.googlesource.com/340111
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
9670b03e
|
2016-04-29T09:47:47
|
|
Revert "Finish NV12 support via streams."
Broke Windows Clang compilation, see https://build.chromium.org/p/chromium.gpu.fyi/builders/GPU%20Win%20Clang%20Builder%20%28dbg%29/builds/3583/steps/compile/logs/stdio and search for TextureStorage11.h
This reverts commit 9b8b359fa3615be7c7492239a48f61103b2e4fcc.
Change-Id: I6e54305eba02b40927a35577594df39e951adb32
Reviewed-on: https://chromium-review.googlesource.com/341430
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
9082b982
|
2016-04-27T15:21:51
|
|
Rename gl::Data to gl::ContextState.
Part of the new world order of renaming the Obj::Data classes to ObjState.
BUG=angleproject:1363
Change-Id: I15cf002b8b093d687f540b9e86f045874af24a7e
Reviewed-on: https://chromium-review.googlesource.com/340740
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9b8b359f
|
2016-04-18T17:25:54
|
|
Finish NV12 support via streams.
The main functionality for NV12 texture support through EGL streams has
been added. Updates to the compiler, texture code, and stream code were
added to support binding to external D3D11 NV12 textures. An end2end test
was also added to test sampling of YUV textures and converting to RGB.
There is also a new script to convert BMP files to an NV12 texture ready
to load into D3D11 for testing purposes.
BUG=angleproject:1332
Change-Id: I098940e6f25e113dcc4fc8d22ffed4b5a16fd860
Reviewed-on: https://chromium-review.googlesource.com/339454
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
ac93b7ca
|
2016-04-28T17:16:59
|
|
D3D: Fix RGB5_A1 texture upload from PBO failure on Windows 10
Failure is consistently seen in the dEQP tests on Windows 10 on
NVIDIA and Intel drivers, where creating an SRV from the buffer in the
right format fails. Disable the fast copy path for this format
similarly to how it's already disabled for some other formats.
BUG=angleproject:1095
TEST=dEQP-GLES3.functional.texture.specification.teximage2d_pbo.rgb5*
Change-Id: I7a1cd15c2cd130c9e8a637457c201778f157333b
Reviewed-on: https://chromium-review.googlesource.com/341170
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
65a0be92
|
2015-10-02T09:57:30
|
|
Implement program binary in ProgramGL.
BUG=angleproject:882
Change-Id: I8d57c185066e9fc0c1b8def09bc48d80ad97d328
Reviewed-on: https://chromium-review.googlesource.com/303901
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
aab7e868
|
2016-04-18T11:47:28
|
|
DisplayGLX: Add AMD driver version detection
BUG=590870
Change-Id: I8b2548038635182bafa691671bdaa16f12b45694
Reviewed-on: https://chromium-review.googlesource.com/339450
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
e7419b9f
|
2016-04-13T23:29:27
|
|
Add FunctionsEGL, FunctionsEGLDL - EGL wrappers.
FunctionsEGL is an abstract class.
FunctionsEGLDL is an libdl-based implementation.
BUG=angleproject:1297
Change-Id: I0fe5a337e34518cc6248494dbc4ee5c2938d4b77
Reviewed-on: https://chromium-review.googlesource.com/338884
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
d860552f
|
2016-04-13T10:19:12
|
|
Implement support for CHROMIUM_bind_uniform_location.
BUG=angleproject:1353
Change-Id: Ia219ff973de0de2f8e112c276b3ab6319f7d3884
Reviewed-on: https://chromium-review.googlesource.com/334252
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
250062bc
|
2016-04-25T12:33:44
|
|
Make sure D3DRS_TWOSIDEDSTENCILMODE is enabled if the stencil test is.
This state-setting code was not ported when adding the dirty bits for D3D9
depth stencil state in https://chromium-review.googlesource.com/#/c/316449.
BUG=597107
Change-Id: I0a1bdae18dd22c9b01f12a73267040157a866654
Reviewed-on: https://chromium-review.googlesource.com/340436
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
82c47ad0
|
2016-04-20T18:28:47
|
|
Pass ImplFactory to Texture constructor
This improves encapsulation inside the Texture class, and removes
duplication of createTexture calls. This is a necessary step towards
adding a shared "Data" structure to the Texture classes, following a
similar pattern as for example the Framebuffer class.
This patch also shares the same MockFactory class among different
unit tests.
BUG=angleproject:596
TEST=angle_unittests
Change-Id: Ie8d3a9aa4ec35565d7ecbabb8c40e7b1ba068721
Reviewed-on: https://chromium-review.googlesource.com/340200
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
e4857c7d
|
2016-04-21T14:13:53
|
|
Buffer11: Use adaptive threshold for releasing system memory.
The hard-coded threshold of five uses before a release was regressing
the Oort online benchmark, which seems to use an index buffer many
times, then change to a different range of indices, which would need
to check the system memory for index range validation.
Also add a performance regression test, and an update to the perf
runner script which checks for the most recent binary among the search
directories.
BUG=594066
Change-Id: Id09cc32fd00bff1c72cbe9b6fb7c210fd047a551
Reviewed-on: https://chromium-review.googlesource.com/339271
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b0a53105
|
2016-04-01T11:43:54
|
|
Add a NativeWindowD3D abstract class to handle native window interactions.
The previous NativeWindow class included D3D11 headers while being included in
all D3D backds and had platform-dependent includes and members. This
turns it into an abstract class that only implements the minimal
functionality for each renderer.
BUG=angleproject:1345
Change-Id: I8f20339dd6bba719e574a1dcb3ec859897c9228f
Reviewed-on: https://chromium-review.googlesource.com/336780
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
ae2d0a0e
|
2016-04-15T15:04:14
|
|
Fix incorrect dirty bit state tracking on D3D9 AMD with color masks.
When using the zero color mask workaround in StateManager9, the blend state and
blend equation were being modified. This caused inconsistant state if the
workaround stopped being used in subsequent draw calls. To deal with this
issue, dirty the BLEND_ENABLED and BLEND_EQUATION states when the COLOR_MASK
changes and dirty the COLOR_MASK state wheneither BLEND_ENABLED or
BLEND_EQUATION changes.
BUG=597107
Change-Id: I03de934b419b7593e4863838720ced1e5773c092
Reviewed-on: https://chromium-review.googlesource.com/339280
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
|
|
6684007a
|
2016-03-15T17:01:42
|
|
Takes principal component analysis to improve the endpoint in ETC transcode.
Insteading of getting the BC1 endpoints from the max and min intensity, a PCA
on pixels might give us better quality results, with limited costs.
Change-Id: I7638d78c666c2580a6b0c267470bf4a0f7082e05
Reviewed-on: https://chromium-review.googlesource.com/332871
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
3d932d83
|
2016-04-12T11:10:30
|
|
Defer global initializers when necessary
Move global variable initializers that are not constant expressions to
a function that gets called at the start of main(). This is done
with an AST transformation. This needs to be done because global
variable initializers must be constant in native GL, but ANGLE is more
lenient with what can be put into ESSL 1.00 global initializers to
remain compatible with legacy WebGL content.
Non-constant global variable initializers also caused issues in HLSL
output, since in HLSL output some types of expressions get unfolded
into multiple statements. These include short-circuiting operators and
array initialization. To make sure that these cases are covered, any
initializers that can't be constant folded are deferred, even if they
have the const qualifier.
The old deferring mechanism in OutputHLSL is removed in favor of this
new AST transformation based approach.
BUG=angleproject:819
BUG=angleproject:1205
BUG=angleproject:1350
BUG=596616
TEST=WebGL conformance test
conformance/glsl/misc/global-variable-init.html
Change-Id: I039cc05d6b8c284baeefbdf7f10062cae4bc5716
Reviewed-on: https://chromium-review.googlesource.com/338291
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
b079c7af
|
2016-04-01T12:32:52
|
|
Wrap integer textures with correct wrap mode in HLSL
The wrap mode information for all three dimensions is packed to a
single integer in order to conserve sampler metadata space. Only one
int4 vector is used for the metadata for a single sampler.
The sampler metadata is now packed into a struct instead of an array
of integers in order to make the code more readable and maintainable.
The internalFormatBits field is not removed in this patch. It's better
to remove it in a separate patch, so restoring it is easier in case it
will be used for optimizing some of the texture sampling functions.
The wrap mode passed in sampler metadata is used to wrap the texture
coordinates in the code generated to implement ESSL 3.00 integer
texture sampling built-ins.
Those dEQP-GLES3.functional.texture.units.* tests that sample from
integer cube maps still fail on Intel D3D after this change,
presumably due to driver issues.
BUG=angleproject:1244
BUG=angleproject:1095
BUG=angleproject:1092
TEST=dEQP-GLES3.functional.texture.units.* (all pass on NVIDIA),
dEQP-GLES3.functional.shaders.texture_functions.* (no regressions)
Change-Id: I4e31e5796086f9cc290c6f1f8c4380a768758d71
Reviewed-on: https://chromium-review.googlesource.com/336638
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
50fcf744
|
2016-04-11T13:57:32
|
|
Add a test for gl_VertexID
BUG=angleproject:1217
BUG=587781
Change-Id: I2fd20c686863c1409228717606977a3c4e1cd7fa
Reviewed-on: https://chromium-review.googlesource.com/338180
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
52b09c2f
|
2016-04-11T14:12:31
|
|
Re-re-land "D3D11: Implement dirty bits for VertexArray11.""
Translated attributes are now stored in the VertexArray11 in a cache,
and only updated when dirty bits change. Currently dynamic attributes
must be re-translated every call, so these are stored in a list and
processed repeatedly.
This skips doing a lot of the VertexDataManager work for vertex
attributes that don't change between draw calls.
Current value attributes, which correspond to disabled attributes that
the program will pulls vertex data from, are owned by the Context, so
these need to be handled outside of the VertexArray11.
Further changes will be necessary to reduce the redundant work we do in
the InputLayoutCache. We shouldn't need to re-check the cache if
nothing relevant changed.
This give about a 23% performance improvement on the draw call
benchmark on my machine.
Re-land with a fix for the start vertex offset.
Re-re-land with a fix for using XFB with deleted buffers.
BUG=angleproject:1327
Change-Id: I0fba49515375c149bbf54d933f8d1f747fbb8158
Reviewed-on: https://chromium-review.googlesource.com/338003
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4091119b
|
2016-04-07T16:45:50
|
|
Add workaround to always call useProgram after a successful link.
This workaround is meant to reproduce the behavior of the
use_current_program_after_successful_link workaround in
Chromium (http://crbug.com/110263)
The workaround was shown to be unnecessary for MacOSX 10.9 and
higher (http://crrev.com/39eb535b).
BUG=349137
Change-Id: I3023f053aa1593ba7044a889dd47746b8f7e0581
Reviewed-on: https://chromium-review.googlesource.com/337780
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
53a36004
|
2016-04-08T19:03:18
|
|
Revert "Re-land "D3D11: Implement dirty bits for VertexArray11."""
Seems to make the following dEQP test flaky:
dEQP-GLES3.functional.lifetime.attach.deleted_output.buffer_transform_feedback
doesn't show up on every bot test, but run it a few times and it'll flake. Reverting while I investigate.
BUG=angleproject:1327
This reverts commit 3477f3a62dc139a253a0b361ee138116e9fa881f.
Change-Id: Ic23a392526f5f6e107cf0aa06448389804d6b208
Reviewed-on: https://chromium-review.googlesource.com/337961
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
54f8746e
|
2016-03-10T13:47:21
|
|
Add initial support for various stream extensions.
Add entry points and validation for various egl stream extensions
including EGL_KHR_stream_consumer_gltexture and
EGL_NV_stream_consumer_gltexture_yuv and NV_EGL_stream_consumer_external.
The extensions functionality is not yet implemented and the extension
strings are thus not exposed yet.
BUG=angleproject:1332
Change-Id: I115d872557db38d8dd94cc367038668406719109
Reviewed-on: https://chromium-review.googlesource.com/332026
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
ec2c0c5e
|
2016-04-05T13:46:26
|
|
Update internal AttributeMap type to EGLAttrib.
Newer EGL functions use EGLAttrib to pass in attributes, which can be
either 32-bit or 64-bit depending on the system while the old attributes
are passed in as EGLints, which are usually 32-bits. To support these
newer functions, AttributeMap now uses EGLAttrib internally instead of
EGLint, and all the code using AttributeMap has been updated to cast
properly.
BUG=angleproject:1348
Change-Id: I7c4dd9ef23ea1b1741f3a565502fb5e26bf962d7
Reviewed-on: https://chromium-review.googlesource.com/337162
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Ian Ewell <ewell@google.com>
|
|
9696316d
|
2016-03-21T11:54:33
|
|
Support ESSL structs containing samplers on D3D
Since HLSL can't natively handle samplers in structs, samplers need to
be extracted out of structs into separate variables in the translated
shader code. In HLSL 4.1, samplers that were in structs go into the
normal sampler arrays and are identified by index constants. In other
HLSL versions, samplers that were in structs are translated as uniform
variables.
These transformations are done inside the HLSL output classes, not as
tree transformations. This helps to keep the uniform API provided by
the shader translator intact.
Wherever a struct containing samplers is passed into a user-defined
function, the translated HLSL code passes the separate sampler
variables alongside a struct where the samplers have been removed.
The D3D backend in libANGLE queries the uniform registers of any
samplers that were in uniform structs, and adds them to the register
maps, so that correct sampler state gets assigned to them.
The extracted sampler variables are prefixed with "angle_" instead of
the usual "_" to prevent any name conflicts between them and regular
variables.
BUG=angleproject:504
TEST=angle_end2end_tests,
dEQP-GLES*.functional.shaders.struct.uniform.* (all pass),
dEQP-GLES*.functional.uniform_api.* (most now pass)
Change-Id: Ib79cba2fa0ff8257a973d70dfd917a64f0ca1efb
Reviewed-on: https://chromium-review.googlesource.com/333743
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
3477f3a6
|
2016-03-29T17:15:29
|
|
Re-land "D3D11: Implement dirty bits for VertexArray11.""
Translated attributes are now stored in the VertexArray11 in a cache,
and only updated when dirty bits change. Currently dynamic attributes
must be re-translated every call, so these are stored in a list and
processed repeatedly.
This skips doing a lot of the VertexDataManager work for vertex
attributes that don't change between draw calls.
Current value attributes, which correspond to disabled attributes that
the program will pulls vertex data from, are owned by the Context, so
these need to be handled outside of the VertexArray11.
Further changes will be necessary to reduce the redundant work we do in
the InputLayoutCache. We shouldn't need to re-check the cache if
nothing relevant changed.
This give about a 23% performance improvement on the draw call
benchmark on my machine.
Re-land with a fix for the start vertex offset.
BUG=angleproject:1327
Change-Id: Ic23e48fb18ed7f29c1999914a2f799ac04aa03e9
Reviewed-on: https://chromium-review.googlesource.com/334225
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
04c8cc2e
|
2016-03-31T17:18:58
|
|
Mark mRenderer as unused in Stream11.
BUG=angleproject:1332
Change-Id: I122f1b079e6d507423719df4576d7460e058f4b2
Reviewed-on: https://chromium-review.googlesource.com/336696
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
701b74b0
|
2016-03-02T15:26:39
|
|
Add support for EGL_KHR_stream.
EGL_KHR_stream is now implemented. Since the extension does not come with
any producers or consumers, it does not have much functionality and the
implementation is therefore very simple (validation layers and a new
object to store some attributes). This however add the groundwork to add
the appropriate consumer and producer extensions to stream D3D NV12
textures directly into ANGLE which will significantly improve video
performance on Chromium on D3D-based platforms.
BUG=angleproject:1332
Change-Id: Ie240c73869f5098d1215cc5e27aa5decd06c3ed1
Reviewed-on: https://chromium-review.googlesource.com/330003
Commit-Queue: Ian Ewell <ewell@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
b076adde
|
2016-01-11T16:45:46
|
|
Implement gl_VertexID
BUG=angleproject:1217
Change-Id: Ibb9423d7de4966bce231734925a804b6340b5059
Reviewed-on: https://chromium-review.googlesource.com/321420
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
da123308
|
2016-03-29T17:00:48
|
|
Add ANGLE_TRY macros to reduce boilerplate with gl/egl Errors.
The macros don't need to disambiguate between GL/EGL. Also make
helpers to deal with ErrorOrResult.
BUG=angleproject:1310
BUG=angleproject:1327
Change-Id: I8041c4b17a859fe1f236bca3ad266453d67a8fd4
Reviewed-on: https://chromium-review.googlesource.com/335826
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
7d712e7d
|
2016-03-29T21:54:33
|
|
Re-land "Clean up Buffer11."
This cleans up some messy stuff from the emulated index buffers, which
were caching variables that didn't need to be cached.
Also add in missing error checks. This touches a lot of code.
Re-land with a fix for clang-win build.
BUG=angleproject:1327
BUG=angleproject:1310
Change-Id: I31ed81c7242782bef7c5f6cde2192552f7ff9403
Reviewed-on: https://chromium-review.googlesource.com/336052
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e34deaa3
|
2016-03-30T01:50:40
|
|
Revert "Clean up Buffer11."
Fails Clang-win because of std::forward
..\..\third_party\angle\src\libANGLE/Error.h(60,40): error: no matching function for call to 'forward'
BUG=598944
BUG=angleproject:1327
BUG=angleproject:1310
This reverts commit 041d678b4764484386f934df927f00a5df48a351.
Change-Id: I9fb0685cd01090b1faf8417ffa3c9b49eeb4510e
Reviewed-on: https://chromium-review.googlesource.com/336040
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
041d678b
|
2016-03-29T17:00:47
|
|
Clean up Buffer11.
This cleans up some messy stuff from the emulated index buffers, which
were caching variables that didn't need to be cached.
Also add in missing error checks. This touches a lot of code.
BUG=angleproject:1327
BUG=angleproject:1310
Change-Id: Icd722d57d9449388fbabc62c7ea37f0526a568ff
Reviewed-on: https://chromium-review.googlesource.com/334731
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
cc068e93
|
2016-02-29T16:37:04
|
|
Add DisplayGL::getDriverVersion and implementation on Linux NVIDIA
Some GPU driver bug workarounds should be active only for specific
driver version ranges. This adds NVIDIA Linux driver detection using
the XNVCtrl X11 extension.
BUG=590870
Change-Id: I8cbf692a0c8a6da7473169f29d720bdc2d07663d
Reviewed-on: https://chromium-review.googlesource.com/329637
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
a3d333c2
|
2016-03-22T22:09:14
|
|
Don't enable/disable sRGB on GLES.
glEnable/glDisable GL_FRAMEBUFFER_SRGB isn't meaningful on GLES.
BUG=angleproject:1300
Change-Id: I0afd697ed9770e2eb1cdcc851884b90de1a4583c
Reviewed-on: https://chromium-review.googlesource.com/334490
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
1a4523f3
|
2016-03-18T15:33:55
|
|
Avoid copying of texture format info structures
Use const pointers to the statically allocated structures instead of
copying them in TextureStorage11. This avoids the cost of copying and
saves a little bit of memory.
BUG=angleproject:1244
TEST=angle_end2end_tests
Change-Id: Ib59fddd68ba9bc53e491d55683416c0661f26e0e
Reviewed-on: https://chromium-review.googlesource.com/333930
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
90a96efc
|
2016-01-27T14:53:36
|
|
Allow BufferGL to function without being able to map buffers for read.
Reading back buffer data is required for index range validation but
without glMapBufferRange it is not possible to read back buffer data on
OpenGL ES. To work around this, keep a shadow copy of the buffer data
when this function is not available.
BUG=angleproject:1145
Change-Id: I8e9b3b174574316d3af0022bd29c7d9c96d168c3
Reviewed-on: https://chromium-review.googlesource.com/324092
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
f26ada3b
|
2016-03-16T18:05:48
|
|
Minor mingw cross compilation fix.
Change-Id: I380fa56e9f65e5982e77d2b0cd5af70777cc24be
Reviewed-on: https://chromium-review.googlesource.com/332951
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
00f394ec
|
2016-03-16T12:09:11
|
|
Revert Dirty bits for VertexArray11
This is a combination of two reverts:
Revert "D3D11: Remove unused mRenderer from VertexArray11."
Revert "D3D11: Implement dirty bits for VertexArray11."
Reverting only the first commit would trigger warnings on the Windows
clang bot.
BUG=594509
BUG=angleproject:1327
This reverts commit fc4712b5ed270436f2993bfda9e916d4f92684a4.
This reverts commit 7d8585b802b7eb741b380bd0d05769281d9507c9.
Change-Id: I612dbba0816d6144f71ce815701c13a798585bc7
Reviewed-on: https://chromium-review.googlesource.com/332989
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a0fc18d9
|
2016-02-29T11:17:16
|
|
Fix D3D11 DXGI format info tables
- Treat red/green views into depth/stencil formats as being red/green.
- Sort all AddDXGIFormat calls in a similar way and remove duplicate
AddDXGIFormat calls.
- Add info on typeless formats.
These changes are needed to make it possible to change integer texture
DXGI formats. Native mipmap generation support will still be
determined by querying the DXGI format info table with the texture
storage format, so the TYPELESS formats will need entries there.
The changes to format info used for depth/stencil formats will not
affect existing uses of GetDXGIFormatInfo:
- In Clear11.cpp, info is queried for rtvFormat and dsvFormat. Info
for possible values of rtvFormat and dsvFormat is not changed.
- In Renderer11::blitRenderbufferRect, info is queried for rtvFormat
and dsvFormat.
- In Renderer11::packPixels, GetDXGIFormaInfo is used to get a
fast-copy function. The function only exists for conversion from
BGRA to RGBA, so the changes do not affect this.
- In Renderer11::getVertexComponentType, the component type is
queried for vertex formats. The formats that might be queried here
are SINT, SNORM, UINT, UNORM, or FLOAT formats with regular RGBA
fields. Info is not changed for these.
- In TextureStorage11_Cube::createSRV, the SRV or blitSRV format is
queried for whether it has integer on unsigned integer channels.
This will not be affected by the changes done to the format table.
This change does not enable native mipmap generation for any new
formats to avoid any possible regressions.
BUG=angleproject:1244
TEST=angle_end2end_tests,
dEQP-GLES3.functional.texture.mipmap.* (no regressions),
dEQP-GLES3.functional.fbo.* (no regressions)
Change-Id: Ic5ed731ddf153ae97bce631b1634347f8d9ae75c
Reviewed-on: https://chromium-review.googlesource.com/329690
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
7b591905
|
2016-02-26T14:37:57
|
|
D3D11: Use blit SRV format for blits
blitSRVFormat stores the format that is used with ANGLE's internal
blit shaders. By default, it is the same as the normal SRV format.
For integer textures with a red channel, the RTV format is used
instead. This makes it possible to change the storage format and the
SRV format for the integer textures without affecting the blit format.
The blitSRVFormat is used when doing blits in Blit11::copyTexture().
An exception is made for depth/stencil renderbuffer blit - in these cases
it is okay to assume that the regular SRV format works for blitting.
In the future the regular SRV format for integer textures will be changed
to be different from their blit SRV format.
TEST=angle_end2end_tests
dEQP-GLES3.functional.fbo.blit.* (no regression)
dEQP-GLES3.functional.texture.swizzle.* (no regression)
BUG=angleproject:1244
Change-Id: Ie0e790e58ec054b64ef5983a09dbfc7754f269ca
Reviewed-on: https://chromium-review.googlesource.com/327104
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
|
|
fc4712b5
|
2016-03-10T11:31:25
|
|
D3D11: Remove unused mRenderer from VertexArray11.
This was uncovered by the Clang-win bot, which uses a different set of
warnings from MSVS.
BUG=angleproject:1327
Change-Id: Id298fee2df92752b77bf6e2b93307fa5311cf1fc
Reviewed-on: https://chromium-review.googlesource.com/332035
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
3be43be0
|
2016-03-09T20:05:08
|
|
Fix crash in IndexDataManagerPerfTest.
Using a mock BufferFactory would sometimes leave us with a nullptr in
the VertexBufferInterface class. This would lead to a null deref in
the perf tests only. Fix this by adding a null check.
BUG=593541
Change-Id: I98685a9990124f521cd26ed81a26aeb11aafaf0d
Reviewed-on: https://chromium-review.googlesource.com/331768
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|