|
f668a4b5
|
2018-09-23T17:01:20
|
|
Skip Texture::syncState when no dirty bits.
We sometimes generate local dirty bits in TextureGL. To make sure the local
dirty bits don't get skipped we use a Subject/Observer pattern between the
TextureGL and gl::Texture. This allows us to skip syncState in the hot path.
Also inlines a couple of other texture functions. And fixes a stray header
in EGLBlobCacheTest.
Bug: angleproject:2763
Change-Id: Ie1d8a5865deaf2a563a358c31ae28bef6b2458b1
Reviewed-on: https://chromium-review.googlesource.com/1228374
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
38fe6840
|
2018-09-19T07:20:00
|
|
Remove secondary Texture rendering loop check.
This check was not used. It applied only to rendering Feedback Loops.
The behaviour is undefined in non-WebGL and for WebGL we have a
separate validation check.
Also update the feedback loop tests to ignore the current GL states.
This change is based on feedback from the OpenGL ES working group.
Bug: angleproject:2763
Bug: chromium:763695
Change-Id: I9882b4f9af2d43fc7b5604ff36dadcc79dfd378f
Reviewed-on: https://chromium-review.googlesource.com/1228373
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
e25b8006
|
2018-09-20T13:39:49
|
|
Move sampler sync out of syncProgramTextures.
We only need to call the syncState for samplers when they are dirty.
Also includes changes to refactor out the sampler sync in GL. Adds
observer bindings so sampler sync is handled correctly in resource
sharing scenarios.
Bug: angleproject:2763
Change-Id: I762f0738ee7572ae29ce6bd5384a30aa9588c848
Reviewed-on: https://chromium-review.googlesource.com/1227797
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
99118c1c
|
2018-09-10T16:28:51
|
|
Improve dirtybits for compute
For D3D11 backend, dirtybits are used to sync and update state
for compute.
For GL backend, mProgramUniformBuffersDirty,
mProgramAtomicCounterBuffersDirty, mProgramImagesDirty are newly
applied.
Bug: angleproject:2814
Change-Id: Ia459ca26705b7c685179d64e0c934535bf16741f
Reviewed-on: https://chromium-review.googlesource.com/1215245
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
fcfd3382
|
2018-09-15T22:30:50
|
|
More binding inlining.
Slight performance increase in binding related tests.
Bug: angleproject:2763
Change-Id: I4d14177adab678d596cd34b8f1b99f5309f017f0
Reviewed-on: https://chromium-review.googlesource.com/1227793
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
0fdb956d
|
2018-09-17T17:18:43
|
|
Re-land "Inline and micro-optimize more for perf tests.""
Re-land fixes memory leaks.
Using a custom array instead of std::vector speeds up the resource
manager. One reason is because calls to size() are implemented in many
implementations as a difference between two pointers. This sub size
implementations are slower than storing a simple size variable in a
custom class.
Also includes more inlining of hot spots functions.
Also includes a small unit test class for ResourceMap. And an unrelated
but small test fix for TextureLimisTest. Also a small unrelated fix for
a Transform Feedback test.
Increase the scores of the draw call perf test with texture and buffer
bindings and the buffer binding perf test.
Bug: angleproject:2763
Change-Id: Ic2f0f689107b2bf05c63da2ed6bbc9f0feea63f7
Reviewed-on: https://chromium-review.googlesource.com/1229033
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
98a3e078
|
2018-09-17T19:40:04
|
|
Revert "Inline and micro-optimize more for perf tests."
This reverts commit 57ff6f95f143bd65a0c3d12d64773f274b9935f4.
Reason for revert: Memory leaks detected during roll in https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_asan_rel_ng/100284
Original change's description:
> Inline and micro-optimize more for perf tests.
>
> Using a custom array instead of std::vector speeds up the resource
> manager. One reason is because calls to size() are implemented in many
> implementations as a difference between two pointers. This sub size
> implementations are slower than storing a simple size variable in a
> custom class.
>
> Also includes more inlining of hot spots functions.
>
> Also includes a small unit test class for ResourceMap. And an unrelated
> but small test fix for TextureLimisTest. Also a small unrelated fix for
> a Transform Feedback test.
>
> Increase the scores of the draw call perf test with texture and buffer
> bindings and the buffer binding perf test.
>
> Bug: angleproject:2763
> Change-Id: I41c327987db27ac45e6a62579f01e1cdc22e396c
> Reviewed-on: https://chromium-review.googlesource.com/1171510
> Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
> Reviewed-by: Jamie Madill <jmadill@chromium.org>
> Commit-Queue: Jamie Madill <jmadill@chromium.org>
TBR=fjhenigman@chromium.org,ynovikov@chromium.org,jmadill@chromium.org,syoussefi@chromium.org
Change-Id: Ie047289c9bf23a842c3cbb9692c811da0534991c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2763
Reviewed-on: https://chromium-review.googlesource.com/1228893
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
|
|
57ff6f95
|
2018-09-14T12:44:52
|
|
Inline and micro-optimize more for perf tests.
Using a custom array instead of std::vector speeds up the resource
manager. One reason is because calls to size() are implemented in many
implementations as a difference between two pointers. This sub size
implementations are slower than storing a simple size variable in a
custom class.
Also includes more inlining of hot spots functions.
Also includes a small unit test class for ResourceMap. And an unrelated
but small test fix for TextureLimisTest. Also a small unrelated fix for
a Transform Feedback test.
Increase the scores of the draw call perf test with texture and buffer
bindings and the buffer binding perf test.
Bug: angleproject:2763
Change-Id: I41c327987db27ac45e6a62579f01e1cdc22e396c
Reviewed-on: https://chromium-review.googlesource.com/1171510
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bb2f2c43
|
2018-09-16T09:47:38
|
|
Squash State dirty bits for CHROMIUM_path_rendering
Currently we limit the maximum of State bits to 64 for performance
consideration. To accommodate new ES31 states, we have to pick and
squash some existing bits which are less hot.
Bug: angleproject:2814
Change-Id: I8fc19286bbf8d8273949da8d986a8b1587fa105e
Reviewed-on: https://chromium-review.googlesource.com/1227069
Reviewed-by: Jie A Chen <jie.a.chen@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
63aa0e5b
|
2018-09-05T16:15:46
|
|
Fix 64-bit -> 32-bit implicit conversions in libangle.
../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(910,63): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32]
const gl::ImageUnit &imageUnit = glState.getImageUnit(imageUnitIndex);
~~~~~~~~~~~~ ^~~~~~~~~~~~~~
../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(914,30): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32]
bindImageTexture(imageUnitIndex, textureGL->getTextureID(), imageUnit.level,
~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~
../../third_party/angle/src/libANGLE/renderer/gl/StateManagerGL.cpp(920,30): warning: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32]
bindImageTexture(imageUnitIndex, 0, imageUnit.level, imageUnit.layered, imageUnit.layer,
~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~
../../third_party/angle/src/tests/gl_tests/VertexAttributeTest.cpp(1080,66): warning: implicit conversion loses integer precision: 'GLsizeiptr' (aka 'long long') to 'GLuint' (aka 'unsigned int') [-Wshorten-64-to-32]
glVertexAttribFormat(mTestAttrib, 1, GL_FLOAT, GL_FALSE, inputRelativeOffset);
~~~~~~~~~~~~~~~~~~~~ ^~~~~~~~~~~~~~~~~~~
BUG=chromium:879657
Change-Id: Ic6e8e5ebc0dc5fd38c15a48a936ceafd5407bba8
Reviewed-on: https://chromium-review.googlesource.com/1208315
Commit-Queue: Will Harris <wfh@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
dff32a0d
|
2018-08-28T14:35:50
|
|
Support multisample arrays in shader programs
The added tests check that using textureSize() and texelFetch() on
textures with a fixed point format return expected results. texelFetch
is also covered for integer format textures.
dEQP GLES 3.1 tests also cover a variety of multisampled array texture
formats.
BUG=angleproject:2775
TEST=angle_end2end_tests, angle_deqp_gles31_tests
Change-Id: I99b422e24b39e3563ed72f0fb85c9c1907df807d
Reviewed-on: https://chromium-review.googlesource.com/1196521
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d310a434
|
2018-08-24T15:40:23
|
|
Add validation and negative tests for multisample arrays
This adds errors for binding and allocating multisample array
textures. New tests in TextureMultisampleTest.cpp check that the
errors are generated as specified.
Tests for querying supported sample counts are also improved and
extended for multisample array textures.
BUG=angleproject:2775
TEST=angle_end2end_tests
Change-Id: I6a0fe7ae04bb3d0072f6cbe09026b05e2bc47325
Reviewed-on: https://chromium-review.googlesource.com/1188576
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
47f6dd0d
|
2018-08-10T13:36:32
|
|
Implement robust initialization for image texture
This change fixes a bug that the image texture initialization time is not
correct. It happens when we use compute shader to write data to an
uninitialized texture, then use readPixels to read the result which
results that texture initialization falls behind image store and
covers the real result.
Bug: angleproject:2766
Change-Id: I4e986972096857afc975c40dfa4d559a2f31194c
Reviewed-on: https://chromium-review.googlesource.com/1170569
Commit-Queue: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
7b2f0274
|
2018-08-27T10:16:08
|
|
Inline more buffer binding calls.
This splits checkObjectAllocation into the inline part and the
slow part. It uses ANGLE_INLINE to force the former to be inlined.
Also inlines and optimizes a few other buffer binding related checks.
Improves performance in a bindings performance test by about 20%.
Includes contributions from matavenrath@nvidia.com.
Test: Bindings_gl_100_objects_allocated_at_initialization
Bug: angleproject:2777
Change-Id: I71b07d72a8e81db7a90140ef84eca599a29239ed
Reviewed-on: https://chromium-review.googlesource.com/1190442
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6d32cefd
|
2018-08-14T02:34:28
|
|
Use Observer pattern for Buffers in front-end.
This will allow us to react to state change notifications for validation
caching. It also cleans up some of the logic in the D3D11 State Manager.
Bug: angleproject:2747
Change-Id: I85ed6404206c2b9bf504d552cf5751be56e62146
Reviewed-on: https://chromium-review.googlesource.com/1172086
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
70aeda49
|
2018-08-20T12:17:40
|
|
Add gl::Program::syncState and dirty bits.
Currently this handles uniform block bindings. Cleans up some logic in D3D.
Bug: angleproject:2747
Change-Id: I8c2989738d50a77d6f6d90a9ff11dceab6d3129c
Reviewed-on: https://chromium-review.googlesource.com/1172085
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
bf5177d3
|
2018-08-21T12:58:20
|
|
Optimize element array binding.
This inlines some methods and code that was regressing binding
performance. Improves the score of a bindings benchmark by 15%.
Based on contributions by matavenrath@nvidia.com.
Test: bindings_gl_100_objects_allocated_at_initialization
Bug: angleproject:2777
Change-Id: Ied5fdbc67ced862a36c5145fff5ac94f93b40c21
Reviewed-on: https://chromium-review.googlesource.com/1181865
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
6e5bf36f
|
2018-08-15T09:53:17
|
|
GLES1: Fixes for Gets() test
- Fixed wrong face parameter for glGetMaterial*.
- Enabled GL_LINE_SMOOTH capability in state only (no rendering yet)
- Enabled logical operation capability in state only (no rendering yet)
- Fixed wrong handling of GL_RGB/ALPHA_SCALE and
GL_POINT_COORD_REPLACE_OES
Test: Enable and pass Gets() GLES1 conformance test
BUG=angleproject:2306
Change-Id: Ib5c50a2055129b76ad24053baf0dac24dcc00761
Reviewed-on: https://chromium-review.googlesource.com/1176161
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
90f466a6
|
2018-08-13T15:05:25
|
|
Suppress cast warnings for active textures mask
Bug: angleproject:2747
Bug: angleproject:2763
Change-Id: I19f9e5ba760d3b5baf3997284523ee1db6bb8166
Reviewed-on: https://chromium-review.googlesource.com/1172206
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
6c43a01a
|
2018-08-08T15:49:27
|
|
Make Context handle dirty texture events.
Moving from State to Context allows the Context to update the State
Cache class directly. It also calls through to the State class to
update the Texture cache. This consolidates notification events into
the Context class. This is also in line with how we handle state event
updates in other gl classes.
Bug: angleproject:2747
Bug: angleproject:2763
Change-Id: Iff7dc7e46ee8768819235ebd151707cd2a03dfc9
Reviewed-on: https://chromium-review.googlesource.com/1166143
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4787d70b
|
2018-08-08T15:49:26
|
|
Use active textures mask in GL and Vulkan.
This also inlines a few accessors and changes the type of the texture
cache.
Bug: angleproject:2763
Change-Id: I82f3c508613f6284d835e8cb64808cfe26a56161
Reviewed-on: https://chromium-review.googlesource.com/1166142
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
7e4eff11
|
2018-08-08T15:49:26
|
|
Program: Add cache samplers and type masks.
This mask cleans up some of the iteration logic in
State::syncProgramTextures. It will make it easier to optimize this
function in the future. This will also make it easier to recompute
the sampler type validation.
Leads to a 5% improvement in State::syncProgramTextures.
Bug: angleproject:2747
Bug: angleproject:2763
Change-Id: Ic9a555df843ad23b4c562e6e4a2d425bee58a856
Reviewed-on: https://chromium-review.googlesource.com/1164306
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cc73f241
|
2018-08-01T11:34:48
|
|
Micro-optimize some validation checks.
Prepares for caching hasMappedBuffer. Also inclines several checks for
faster speed.
Bug: angleproject:2746
Change-Id: I74f9408d7b41e245c3f58d367dd2cc8fbace4a7a
Reviewed-on: https://chromium-review.googlesource.com/1150762
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
a11819de
|
2018-07-30T10:26:01
|
|
Context: Use Observer pattern for container objects.
Container objects in this case are the Vertex Array and Read and Draw
Framebuffers. Instead of using a mutable dirty bit state with a const
function to notify of dirty bits we can use the Observer/Subject
pattern. This more cleanly allows us to do cache updates.
Bug: angleproject:1391
Change-Id: I88f863894ec3efa00322038f323a84850166107d
Reviewed-on: https://chromium-review.googlesource.com/1153399
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9bf86f07
|
2018-07-26T11:46:34
|
|
Don't sync the read framebuffer on draw calls.
The read framebuffer may not be complete and be incapable of syncing.
Removed the generate syncDirtyObjects method so each caller must make sure they
are only syncing objects that are known to be valid for the operation.
BUG=angleproject:2737
Change-Id: Ia8edf3fca3a8369aa813be46ba99f6b50a36b2e6
Reviewed-on: https://chromium-review.googlesource.com/1151621
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Olli Etuaho <oetuaho@nvidia.com>
|
|
09303e44
|
2018-06-22T17:53:57
|
|
Treat transform feedback generic binding point specially
The transform feedback generic binding point is not part of the
transform feedback object and is not used for transform feedback. Only
the indexed binding points are used. A buffer that is bound to the
generic binding point should be usable for either transform feedback or
non-transform-feedback purposes.
Bug: 853978
Change-Id: I5b730212c65524188134ac34645328328664f0a4
Reviewed-on: https://chromium-review.googlesource.com/1112841
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
82af620e
|
2018-06-22T10:59:52
|
|
ParallelCompile: Add entry points.
Add the extension text, entry points and validations.
BUG=chromium:849576
TEST=angle_end2end_tests
Change-Id: I4c06ee30e4f4fe9bb1c1fecada747b9c78fed0ea
Reviewed-on: https://chromium-review.googlesource.com/1103789
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jie A Chen <jie.a.chen@intel.com>
|
|
9c4c0926
|
2018-06-13T09:29:00
|
|
Reland "GLES1: Point rasterization (partial implementation)"
This is a reland of 4004ae0e033a0169de3cb53c0a036833ad47178a
Fix: Put the missing early-out in ValidatePointParameterCommon
Original change's description:
> GLES1: Point rasterization (partial implementation)
>
> - Not included: Smooth points
>
> - GL_OES_point_sprite
> - Update test expectations. Note: due to different random sampling,
> edge cases were hit in UserClip. Disabling that test for now.
>
> BUG=angleproject:2306
>
> Change-Id: If8367bc3321804b3299d3bc381d6a8e236754baa
> Reviewed-on: https://chromium-review.googlesource.com/1101910
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Lingfeng Yang <lfy@google.com>
Bug: angleproject:2306
Change-Id: Id8e71352a77ff0ce71cb604965effbfb8aca613e
Reviewed-on: https://chromium-review.googlesource.com/1108458
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
a58d69e9
|
2018-06-20T18:07:11
|
|
Revert "GLES1: Point rasterization (partial implementation)"
This reverts commit 4004ae0e033a0169de3cb53c0a036833ad47178a.
Crash in PointParameterTest.NegativeEnum/ES1_OPENGL.
https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac%20FYI%20GPU%20ASAN%20Release/1178
angle_end2end_tests on Intel GPU on Mac on Mac-10.12.6
angle_end2end_tests on ATI GPU on Mac Retina on Mac-10.12.6
Original change's description:
> GLES1: Point rasterization (partial implementation)
>
> - Not included: Smooth points
>
> - GL_OES_point_sprite
> - Update test expectations. Note: due to different random sampling,
> edge cases were hit in UserClip. Disabling that test for now.
>
> BUG=angleproject:2306
>
> Change-Id: If8367bc3321804b3299d3bc381d6a8e236754baa
> Reviewed-on: https://chromium-review.googlesource.com/1101910
> Reviewed-by: Corentin Wallez <cwallez@chromium.org>
> Commit-Queue: Lingfeng Yang <lfy@google.com>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,lfy@google.com
Change-Id: I776ce0506d349382b3af035c962aa2c3f6826b99
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2306
Bug: angleproject:2680
Reviewed-on: https://chromium-review.googlesource.com/1108457
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
|
|
4004ae0e
|
2018-06-13T09:29:00
|
|
GLES1: Point rasterization (partial implementation)
- Not included: Smooth points
- GL_OES_point_sprite
- Update test expectations. Note: due to different random sampling,
edge cases were hit in UserClip. Disabling that test for now.
BUG=angleproject:2306
Change-Id: If8367bc3321804b3299d3bc381d6a8e236754baa
Reviewed-on: https://chromium-review.googlesource.com/1101910
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
7ba3f425
|
2018-06-01T09:43:04
|
|
GLES1: Fog API and rendering
- Update test expectations
BUG=angleproject:2306
Change-Id: Ic5aa5f052bcbe9c5adaf0eb0c6c06df66fd1720c
Reviewed-on: https://chromium-review.googlesource.com/1082978
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
060088a5
|
2018-05-30T20:40:57
|
|
GLES1: Clip plane API and rendering
- Add unit tests for the API
- Update test expectations
+ Pass through point size from the vertex array to the shader,
required for new tests to pass.
BUG=angleproject:2306
Change-Id: Ib19436c1f4cb12873adea94f734c821363f9e27d
Reviewed-on: https://chromium-review.googlesource.com/1079993
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4fb8a8bd
|
2018-06-01T16:47:57
|
|
Move the EGL-based initial state to the gl::State constructor.
This is a small refactor to allow State::initialize to be called without
needing the EGL context creation attributes.
BUG=angleproject:2464
Change-Id: Ifa167cc83f652435ecc00a0a73e4c6c4a3295430
Reviewed-on: https://chromium-review.googlesource.com/1083312
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
6b600645
|
2018-05-31T14:53:31
|
|
D3D11: Micro-optimize StateManager11::updateState.
This inlines several accessors.
Bug: angleproject:2574
Change-Id: I61d223dd2a8f08e5331ccefde02e6ce55f5a607d
Reviewed-on: https://chromium-review.googlesource.com/1067118
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4166f014
|
2018-05-31T14:53:30
|
|
D3D11: Optimize Renderer11::drawArrays.
Uses inlining and more efficient computation re-use to streamline this
function.
Bug: angleproject:2575
Change-Id: Ib13e32811f56ec9a010ed66f298d4235e5c6807d
Reviewed-on: https://chromium-review.googlesource.com/1067120
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a0cfa873
|
2018-05-30T21:12:17
|
|
GLES1: Shade model API
+ add sample
BUG=angleproject:2306
Change-Id: Ie0c391618ec2b771cc99b96db02b9008a86272b9
Reviewed-on: https://chromium-review.googlesource.com/1079992
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d0febe7a
|
2018-05-17T22:36:52
|
|
Reland "GLES1: Entry points for lighting and materials"
This is a reland of 4a09c1a245c406e402b3996b7ed33798b897e60f
Entry points have been autogenerated again.
Original change's description:
> GLES1: Entry points for lighting and materials
>
> - glLight*/glMaterial and their queries
> - Use new packed enums in these entry points, except for lightmodel
> which stays GLenum to be consistent with other generic glGet's
> - State.cpp: New glGet* queries related to light model and
> light/normal rescale enablement
> - GLES1State.cpp: Functions to get/set lighting/material state
> - Validation for lighting/materials
>
> + Add a few convenience methods to random_utils for sampling
> non-negative floats and a sampler for random booleans
>
> BUG=angleproject:2306
>
> Change-Id: If7ba0c0a0dc75f88fbaa986b904f1ea96ee6512e
> Reviewed-on: https://chromium-review.googlesource.com/1065502
> Commit-Queue: Lingfeng Yang <lfy@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
Bug: angleproject:2306
Change-Id: I434273acd5200dd9f4925e239a032cc8db31a434
Reviewed-on: https://chromium-review.googlesource.com/1072849
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Lingfeng Yang <lfy@google.com>
|
|
668e507f
|
2018-05-24T17:12:14
|
|
Revert "GLES1: Entry points for lighting and materials"
This reverts commit 4a09c1a245c406e402b3996b7ed33798b897e60f.
Reason for revert: Seems to break the build
Original change's description:
> GLES1: Entry points for lighting and materials
>
> - glLight*/glMaterial and their queries
> - Use new packed enums in these entry points, except for lightmodel
> which stays GLenum to be consistent with other generic glGet's
> - State.cpp: New glGet* queries related to light model and
> light/normal rescale enablement
> - GLES1State.cpp: Functions to get/set lighting/material state
> - Validation for lighting/materials
>
> + Add a few convenience methods to random_utils for sampling
> non-negative floats and a sampler for random booleans
>
> BUG=angleproject:2306
>
> Change-Id: If7ba0c0a0dc75f88fbaa986b904f1ea96ee6512e
> Reviewed-on: https://chromium-review.googlesource.com/1065502
> Commit-Queue: Lingfeng Yang <lfy@google.com>
> Reviewed-by: Geoff Lang <geofflang@chromium.org>
TBR=geofflang@chromium.org,jmadill@chromium.org,cwallez@chromium.org,lfy@google.com
Change-Id: Ifabd708ded87c7484ad6d466508e2c2d6ea2557c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: angleproject:2306
Reviewed-on: https://chromium-review.googlesource.com/1071828
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4a09c1a2
|
2018-05-17T22:36:52
|
|
GLES1: Entry points for lighting and materials
- glLight*/glMaterial and their queries
- Use new packed enums in these entry points, except for lightmodel
which stays GLenum to be consistent with other generic glGet's
- State.cpp: New glGet* queries related to light model and
light/normal rescale enablement
- GLES1State.cpp: Functions to get/set lighting/material state
- Validation for lighting/materials
+ Add a few convenience methods to random_utils for sampling
non-negative floats and a sampler for random booleans
BUG=angleproject:2306
Change-Id: If7ba0c0a0dc75f88fbaa986b904f1ea96ee6512e
Reviewed-on: https://chromium-review.googlesource.com/1065502
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ad3ae90a
|
2018-03-09T13:40:42
|
|
Use packed enums for QueryType.
BUG=angleproject:2169
Change-Id: I129a9d8e295859daa071a298dab9fe1895315cc0
Reviewed-on: https://chromium-review.googlesource.com/957318
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
7267aa65
|
2018-04-17T15:28:21
|
|
Optimize ValidateDrawAttribs: Part 3.
This is a small optimization for the WebGL compatibility mode.
Instead of scanning the list of attributes for a Transform feedback
conflict, it can quickly check a cached mask. This should save a lot
of cycles on the fast path.
Bug: angleproject:1391
Change-Id: Icb8d095493a629dbff0e93872357e5bf7c7458ae
Reviewed-on: https://chromium-review.googlesource.com/1011236
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
23dc90b8
|
2018-04-23T09:01:49
|
|
GLES1: Enable/disable for texture targets
BUG=angleproject:2306
Change-Id: I08ac9ef91753112f8185d16423925cf265f0384e
Reviewed-on: https://chromium-review.googlesource.com/1023987
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
4bba74f0
|
2018-04-19T14:40:45
|
|
Refactor Texture::syncState to pass down the Context
Also returning a gl::Error everywhere.
Bug: angleproject:2478
Change-Id: Ic8cae0ee7aee318bb95b3588044c34c62707b578
Reviewed-on: https://chromium-review.googlesource.com/1020083
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Luc Ferron <lucferron@chromium.org>
|
|
abb09f12
|
2018-04-16T10:43:53
|
|
GLES1: Client vertex array pointer API
glVertexPointer
glNormalPointer
glColorPointer
glPointSizePointerOES
glTexCoordPointer
BUG=angleproject:2306
Change-Id: Id022b467ac998ea116130c5cec0c77afefb0dd4c
Reviewed-on: https://chromium-review.googlesource.com/1014381
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
427064d2
|
2018-04-13T16:20:34
|
|
Fix perf regression with checkStatus.
Returning an Error was costing us performance in extra
error checks. This intead uses the Context to process the
Error immediately, and returns a value from isComplete and
checkStatus.
Improves performance in draw call validation.
Bug: chromium:822235
Change-Id: I0793fc690e86137425fed593d45083e40aee8db9
Reviewed-on: https://chromium-review.googlesource.com/1011370
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
01074436
|
2018-04-16T10:19:51
|
|
GLES1: gl(Enable|Disable)ClientState
+ Introduce the GL_OES_point_size_array extension for point size array
support.
BUG=angleproject:2306
Change-Id: Ib1a60b7dcd0497eb807f0d3c80bc95b4748d9a96
Reviewed-on: https://chromium-review.googlesource.com/1014282
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
3a41af64
|
2018-04-09T07:28:56
|
|
GLES1: glLoadIdentity / glLoadMatrix(f|x)
BUG=angleproject:2306
Change-Id: I46fe961e6eb87b2f41c39afe1e943d9146a0abfa
Reviewed-on: https://chromium-review.googlesource.com/1002913
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
e547aac7
|
2018-04-05T09:39:20
|
|
GLES1: gl(Push|Pop)Matrix
BUG=angleproject:2306
Change-Id: I96498aebbbc62ebd53e5320db17ef6a54d20d2dc
Reviewed-on: https://chromium-review.googlesource.com/998308
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d2488aba
|
2018-04-04T09:25:48
|
|
GLES1: glMatrixMode
BUG=angleproject:2306
Change-Id: I83e15990c10d9354c2db00766ddc7b0ab960aa5c
Reviewed-on: https://chromium-review.googlesource.com/996019
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
038dd539
|
2018-03-29T17:31:52
|
|
GLES1: glMultiTexCoord4(f|x)
BUG=angleproject:2306
+ common validation for multitexturing units
+ clang-format
Change-Id: I6eb456c273490e85fc7008e7e11d15e22dd20276
Reviewed-on: https://chromium-review.googlesource.com/987298
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0946393d
|
2018-04-04T05:26:59
|
|
Move Buffer Subject/Observer to front end.
This makes BufferImpl into an Observer Subject. It also refactors
the Vertex Array updates for the D3D11 backend use more of a dirty
bit coding style.
This change makes it so Buffer contents changes trigger front-end
dirty bits from the back-end, which may be undesirable.
Bug: angleproject:2389
Change-Id: Iac8ce1171284a86851c18cd1373ddf24fcefe40b
Reviewed-on: https://chromium-review.googlesource.com/979812
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
5a7e61bb
|
2018-03-29T16:50:32
|
|
GLES1: glNormal3(f|x)
BUG=angleproject:2306
Change-Id: I42834078b14aaa20c4d4e6b67c097c810f5a17a3
Reviewed-on: https://chromium-review.googlesource.com/987297
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a43994c9
|
2018-03-29T07:21:41
|
|
GLES1: glColor4(f|ub|x)
BUG=angleproject:2306
Change-Id: I4a57732d4c470c821a3847a7ee012cf3ccbba197
Reviewed-on: https://chromium-review.googlesource.com/986454
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
96310cda
|
2018-03-28T11:56:28
|
|
GLES1: glClientActiveTexture
+ adds query for GL_MAX_TEXTURE_UNITS
BUG=angleproject:2306
Change-Id: Ie89fa6a067551170856bf0f7e6d7b4452b3da132
Reviewed-on: https://chromium-review.googlesource.com/984894
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
0af5b86a
|
2018-03-27T20:19:33
|
|
Return gl::Error from VertexArray::syncState().
No functional change.
When we add vertex data format conversion to Vulkan we will need to be
able to return an error from VertexArray::syncState().
BUG=angleproject:2405
Change-Id: I4b537946ecbb6593280b6510c5cd8d8e3c65e8dd
Reviewed-on: https://chromium-review.googlesource.com/982897
Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
13b708f2
|
2018-03-21T12:14:10
|
|
GLES1: glAlphaFunc
BUG=angleproject:2306
Change-Id: I0bf229d3ab8a4a1217c12b434dcd8fa67d7cbadc
Reviewed-on: https://chromium-review.googlesource.com/973897
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d2fa07e4
|
2018-03-15T09:20:25
|
|
ES31: Support queries on primitives generated by geometry shader
This patch implements a new query target GL_PRIMITIVES_GENERATED_EXT
for querying the number of primitives generated by geometry shader.
BUG=angleproject:1941
TEST=dEQP-GLES31.functional.geometry_shading.query.primitives_generated*
Change-Id: Icdc0d2d8be4ff4d589972eada2fa1f917d7bae4c
Reviewed-on: https://chromium-review.googlesource.com/963793
Reviewed-by: Jiajia Qin <jiajia.qin@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
5ae6ee45
|
2018-03-06T17:39:42
|
|
ES31: Sync dirty objects for compute shader
BUG=angleproject:2395
TEST=angle_end2end_tests
Change-Id: Ife833a6573c49fc453c120ebc66765064d807b16
Reviewed-on: https://chromium-review.googlesource.com/954991
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
690c8eb7
|
2018-03-12T15:20:03
|
|
Framebuffer: syncState before internal format query.
Since querying the internal format of an attachment might need ot look
at the RenderTarget for some back-ends, or otherwise flush attachment
changes, we should call syncState internally. This means that we can't
mark these queries as const.
Bug: angleproject:2372
Change-Id: I9bfb43a472bcd7dfdd6ea7fab4751d494e1126bb
Reviewed-on: https://chromium-review.googlesource.com/948784
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4d9d4839
|
2018-03-13T12:43:28
|
|
Optimize buffer deletion by returning early if buffer is not bound.
This improves angle_perftests
bindings_gl_100_objects_allocated_every_iteration by over 30%.
Bug: 820723
Change-Id: Icfaa0f54f7c61db6475948e3a95296f37ab4f7dc
Reviewed-on: https://chromium-review.googlesource.com/961302
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
dbb9c534
|
2018-02-25T19:58:24
|
|
GLES1: state: Define / initialize GLES1-specific states
Contains definitions of GLES1-specific states such as material /
lighting.
Tweaked the Color class for easier copying to uniforms / reading as a
float array.
This CL also adds the GLES1-specific state in GLES1State, which is then
part of the State class and is initialized to the spec's values if the
context major version is ES 1.
+ Some clang-format
BUG=angleproject:2306
Change-Id: I7fc3bd9a22ebf0ffcd98d931d0176f21e17b1c5c
Reviewed-on: https://chromium-review.googlesource.com/936424
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
54ef3ad4
|
2018-03-12T08:31:12
|
|
Run clang-format on State.cpp
BUG=angleproject:2306
Change-Id: I1c5a2dd40fb7d9b51cbf3fd37720a172578d76e8
Reviewed-on: https://chromium-review.googlesource.com/959105
Commit-Queue: Lingfeng Yang <lfy@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
e98b1b5d
|
2018-03-08T09:47:23
|
|
Framebuffer: Handle errors in checkStatus.
This pipes a lot more errors around in the Validation, where
they now will be caught.
Bug: angleproject:2372
Change-Id: Ibb4e47ddc932995a02dd92e10578b7a4097182a9
Reviewed-on: https://chromium-review.googlesource.com/954406
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d4fff506
|
2017-09-22T11:28:28
|
|
Reorder state synchronization for resource init.
Some backends may change state while initializing resources. Make sure
that all resources are initialized before synchronizing the backend
state for the given operation.
BUG=angleproject:2107
Change-Id: Ie75ac3eee986e41dfe3dd11a94a706e19df7497e
Reviewed-on: https://chromium-review.googlesource.com/678481
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
e8a93c6e
|
2018-01-04T18:02:24
|
|
New transform feedback buffer binding rules
Detects undefined behavior when a buffer is bound to a transform feedback
binding point and a non transform feedback binding point at the same time.
Also moves the transform feedback buffer generic binding point out of the
transform feedback object and into the context's global state, to match
driver behavior. This way binding a new transform feedback object does not
affect GL_TRANSFORM_FEEDBACK_BUFFER_BINDING which is similar to how VAOs
work with GL_ARRAY_BUFFER_BINDING.
Bug: 696345
Change-Id: If3b9306cde7cd2197a8ce35e10c3af9ee58da0b8
Reviewed-on: https://chromium-review.googlesource.com/853130
Commit-Queue: James Darpinian <jdarpinian@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
19fa1c6f
|
2018-03-08T09:47:21
|
|
Return an Error from Framebuffer::syncState.
This pipes errors up from the Impl to the top level. There are
still a few places were error swallowing is needed, because the
Framebuffer API doesn't support returning an error.
Bug: angleproject:2372
Change-Id: Idc06bda1817fd28075940f69874d8b6ba69194f9
Reviewed-on: https://chromium-review.googlesource.com/954290
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
|
|
bc918e7d
|
2018-03-08T09:47:21
|
|
Return errors from gl::State::syncDirtyObjects.
This plumbs the front-end code, but doesn't implement Error handling
for any objects yet. Framebuffers and VertexArrays will get error
handling from their syncState methods.
Bug: angleproject:2372
Change-Id: I226049e25ac7af2bdd3c4787b67a5d297c0b9c4b
Reviewed-on: https://chromium-review.googlesource.com/954289
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f0e89be6
|
2017-11-08T14:00:32
|
|
Use packed enums for the texture types and targets, part 1
In OpenGL there are two enum "sets" used by the API that are very
similar: texture types (or bind point) and texture targets. They only
differ in that texture types have GL_TEXTURE_CUBEMAP and target have
GL_TEXTURE_CUBEMAP_[POSITIVE|NEGATIVE]_[X|Y|Z].
This is a problem because in ANGLE we use GLenum to pass around both
types of data, making it difficult to know which of type and target a
variable is.
In addition these enums are placed somewhat randomly in the space of
OpenGL enums, making it slow to have a mapping from texture types to
some data. Such a mapping is in hot-code with gl::State::mTextures.
This commit stack makes the texture types and target enums be
translated to internal packed enums right at the OpenGL entry point
and used throughout ANGLE to have type safety and performance gains.
This is the first of two commit which does the refactor for all of the
validation and stops inside gl::Context. This was the best place to
split patches without having many conversions from packed enums to GL
enums.
BUG=angleproject:2169
Change-Id: Ib43da7e71c253bd9fe210fb0ec0de61bc286e6d3
Reviewed-on: https://chromium-review.googlesource.com/758835
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
888081d5
|
2018-02-27T00:24:46
|
|
D3D11: Refactor dependent Framebuffer state changes.
Previously, when a state change would cause a Texture to
recreate its storage specific to D3D11, we would use a
dependent notification from RenderTarget11 to Framebuffer11
to re-check internal dirty bits. In this new method, we
instead set dirty bits on the gl::Frambuffer directly. This
also means we use fewer internal objects for these
notifications, because we share the same structures between
the D3D11 back-end notifications and the top-level notifications
we use for Robust init and Framebuffer completeness.
This also allows us to get rid of one "if" that we check on
every draw call in D3D11.
This also introduces a dirty bits guard concept - a shadow
set of dirty bits that is checked in dependent state changes
to ensure that extra bits aren't set inside syncState.
This also implements Framebuffer dirty bits for the D3D9
back-end. This has the side effect of cleaning up the
"null colorbuffer" D3D9 workaround.
Bug: angleproject:2372
Change-Id: Ie346d39030f4f6df583d735685b0babea4e745a8
Reviewed-on: https://chromium-review.googlesource.com/936691
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d444255a
|
2018-02-27T22:03:47
|
|
Refactor signal utils into Observer pattern.
These types were over-generalized. All use cases featured
arrays of resources attached to single parent resources. The
channel ID is sufficient to identify the child resource in the
parent, and having variadic template arguments wasn't necessary.
Futhermore we can rename these types to use the common Observer
pattern. This should make them more readable to new developers.
Also update some classes to inherit from Subject instead of
having a member Subject. This cleans up the code in a few places.
This should lead to a simpler refactor to allow dependent dirty
bits notifications in the Vulkan back-end.
In the following patch the signal_utils files will be renamed. They
are not renamed in this patch to ensure git history is preserved.
Bug: angleproject:2372
Change-Id: I17a3f2c8d92afd4bb3cba2d378c3a2e8a6d7fb11
Reviewed-on: https://chromium-review.googlesource.com/936690
Reviewed-by: Luc Ferron <lucferron@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
41b072b6
|
2018-02-09T10:01:32
|
|
Prepare for -Wimplicit-fallthrough in ANGLE.
Disable the warning for flex-generated output, which contains
lots of intentional fallthrough.
Fixes a bug where GL_SAMPLE_ALPHA_TO_ONE_EXT would fall through
to GL_COVERAGE_MODULATION_CHROMIUM and hence behave like that.
Fixes a bug in the D3D9 state management where invalidating
DIRTY_BIT_POLYGON_OFFSET would also invalidate the stencil bits.
One somewhat common incorrect pattern in ANGLE is nested switch
statements that look like so:
switch (a) {
case a1:
switch (b) {
case b1:
...
break;
}
case a2:
...
}
The assumption here seems to be that the breakk exits the outer
case (here a1), while it in fact only exits the inner switch,
so that we fall through to a2. In most places, I fixed this
by adding an explicit `break` after the inner switch.
This fixes a bug wher GL_PATH_JOIN_STYLE_CHROMIUM would fall through to
GL_PATH_MITER_LIMIT_CHROMIUM in validation (but since the join style
enum is always > 0, this happened to not have an effect in practice).
This also fixes 87 bugs in GetLoadFunctionsMap() where invalid
values would previously return an unrelated function map instead
of the empty load function map.
Bug: chromium:810767
Change-Id: Ib51388c73fbfc229160e2c10f8fb9364cc7c996c
Reviewed-on: https://chromium-review.googlesource.com/911529
Commit-Queue: Nico Weber <thakis@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
c405ae71
|
2017-12-06T14:15:03
|
|
Optimize Vertex Shader Attribute Type Validition
Improves ValidateVertexShaderAttributeTypeMatch by storing vertex
attributes types into masks for quick comparisons when needed. This shows
2% improvement to glDrawElements for the aquarium workload.
BUG=angleproject:2202
Change-Id: I87fa3d30c3d8cdba6dfd936cd1a41fd27b1c6b77
Reviewed-on: https://chromium-review.googlesource.com/814795
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
d078c681
|
2018-01-02T11:50:24
|
|
VertexArray: Add enabled attribs bitmask.
This replaces the "max enabled attrib" integer with a bitmask of
enabled attribs. Should have better worst-case performance (only
attribute 15 is enabled) and similar best-case performance (when
only attribute 0 is enabled).
This might also help implementing validation optimizations.
Bug: angleproject:2202
Change-Id: I5cbb533c3af23851a42c80a6dc409a0da84e87c3
Reviewed-on: https://chromium-review.googlesource.com/847284
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9c8e1a36
|
2017-12-06T17:59:58
|
|
ES31: Implement image state query
BUG=angleproject:2278
TEST=dEQP-GLES31.functional.state_query.indexed.image_binding*
Change-Id: Ia624d55ccf1fdf92188d9e710265bdffe96a23c6
Reviewed-on: https://chromium-review.googlesource.com/810465
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
f414121d
|
2017-12-12T15:08:07
|
|
D3D11: Fix program uniform buffer dity bits.
There were actually three missing state synchronization points:
1. When re-binding a uniform buffer, we had no dirty bits.
2. When modifying the Program bindings, we also had no update.
3. When triggering a dependent state update via BufferData.
This fixes all the missing syncs and adds tests for the cases.
Bug: angleproject:1390
Change-Id: I2f05766545784248bcca8308ae34ac5720237ab1
Reviewed-on: https://chromium-review.googlesource.com/823150
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
a98a2811
|
2017-11-30T18:12:06
|
|
ES31: Add support for GL_DISPATCH_INDIRECT_BUFFER_BINDING binding point
BUG=angleproject:2270
TEST=dEQP-GLES31.functional.state_query.integer.dispatch_indirect_buffer_binding_*
Change-Id: I2c286c219c5c849d7ba417069f53f2d0fae6abf1
Reviewed-on: https://chromium-review.googlesource.com/799990
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
10a4d434
|
2017-11-28T14:46:26
|
|
ES31: Enable some dirty bits and dirty objects for compute pipeline
BUG=angleproject:2265
TEST=dEQP-GLES31.functional.shaders.builtin_var.compute.*
angle_end2end_test.ShaderStorageBufferTest31
.MultiStorageBuffersForMultiPrograms
Change-Id: Icc3df122602951a2328003c10a76696ab4c9f0d8
Reviewed-on: https://chromium-review.googlesource.com/792951
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
ded7923b
|
2017-11-28T15:21:11
|
|
GL backend: Only synchronize transform feedback state when it changes.
BUG=angleproject:2188
Change-Id: I5bfcc038c887dde0770564d103eb3cb234b248c9
Reviewed-on: https://chromium-review.googlesource.com/794100
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
e51ba63b
|
2017-11-21T11:45:25
|
|
Optimize Texture initialization tracking with extra caching.
In both Texture and State, track when all images/textures are
initailized so that State::clearUnclearedActiveTextures can early-exit.
Improves performance on the WebGL Aquarium by 26% (23->29 FPS) with 30000
fish.
BUG=angleproject:2188
Change-Id: Ie2860a81d7be19ee87262325d8cf27bde43f80b8
Reviewed-on: https://chromium-review.googlesource.com/782339
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
d5d3099e
|
2017-11-13T10:21:52
|
|
Avoid redundant BindingPointer::set in setBufferBinding
BUG=angleproject:2169
Change-Id: I91f099a53b456fc96988839e34733ce09fe38336
Reviewed-on: https://chromium-review.googlesource.com/766473
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cac94a91
|
2017-11-10T10:09:32
|
|
Optimize ShaderVariable::isBuiltIn.
This makes the check a bit faster, by inlining the prefix check.
Also some cleanups to ValidateVertexShaderAttributeTypeMatch.
BUG=angleproject:2202
Change-Id: Ifeab4cd85a91a1639a461f44776a68ac98c5bd79
Reviewed-on: https://chromium-review.googlesource.com/761240
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
336129f6
|
2017-10-17T15:55:40
|
|
Use a packed enum for buffer targets.
BUG=angleproject:2169
Change-Id: I4e08973d0e16404b7b8ee2f119e29ac502e28669
Reviewed-on: https://chromium-review.googlesource.com/723865
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
cda6af19
|
2017-10-30T19:20:37
|
|
Split pixelBuffer from pack/unpack state
This will refactor will help use packed enums for buffer targets.
BUG=angleproject:2169
Change-Id: Ie7ed3e105f89457c67027e6598d7e29503ad355c
Reviewed-on: https://chromium-review.googlesource.com/745181
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
29a20992
|
2017-11-06T18:23:16
|
|
Add back dirty bits for pack / unpack buffer binding
BUG=angleproject:2169
Change-Id: I8cee9e1c7565d90022216d62b45f0eec5bc51f14
Reviewed-on: https://chromium-review.googlesource.com/755461
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
|
|
c67323a9
|
2017-11-02T23:11:41
|
|
Squash State dirty bits to below 64.
This will dramatically speed up performance on 64-bit systems due to
the efficiency of angle::BitSet64. Improves performance of the GL
back-end on benchmarks quite a bit.
Squashes the Pack and Unpack states together. Also moves the current
value dirty bits to a single dirty bit, with a separate set for each
attribute. Also squashes a multisample dirty bit.
Also fixes an incorrect dirty bit in StateManagerGL.
We may want to implement a semi-fast version of BitSet64 for 32-bit
systems if we find performance is not satisfactory.
BUG=angleproject:2188
Change-Id: I4616782bf75413252ede3e3ac752b9ccdb9aab49
Reviewed-on: https://chromium-review.googlesource.com/722423
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a59fc19f
|
2017-11-02T12:57:58
|
|
Use active textures mask with robust init.
This should speed up clearUnclearedActiveTextures considerably.
It was showing up as a hotspot when running the aquarium demo with
the passthrough command decoder.
Also rename the complete textures mask in gl::State to an active
textures mask, since it includes incomplete textures.
BUG=angleproject:2188
Change-Id: Idf020fc49c1e74f17a8005c3b88516829767b84c
Reviewed-on: https://chromium-review.googlesource.com/722421
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4751aabb
|
2017-10-30T15:14:52
|
|
Fix minor issues with ANGLE_texture_rectangle.
* Some texture parameters were not initialized correctly.
* Binding points were not created for enableable texture extensions.
BUG=angleproject:1650
BUG=angleproject:1523
Change-Id: Id3436fe1dbb4069eafad97e722ac519a6b59e5db
Reviewed-on: https://chromium-review.googlesource.com/744446
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
2e568cfb
|
2017-09-18T17:05:22
|
|
Add generator for packed GL enums.
For testing this also converts two unimportant GLenums, gl::BufferUsage
and gl::CullModeFace.
BUG=angleproject:2169
Change-Id: If1e86a97d0fed3fd567303aca6506ec579503076
Reviewed-on: https://chromium-review.googlesource.com/688000
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
42975644
|
2017-10-12T12:31:51
|
|
Move incomplete texture logic to shared helper.
The incomplete texture handling is similar between the D3D and Vulkan
back-ends. We create 1x1 textures, initialize them to black, and bind
them when we detect incomplete textures. We would also bind incomplete
textures when we detect feedback loops. In the GL back-end, we
wouldn't detect feedback loops, and would allow the driver to handle
incompleteness.
Instead implement this in a shared helper class, and do the feedback
loop detection in the front-end for every back-end. This makes our
behaviour more consistent between back-ends, and prevents undefined
behaviour.
Because initializing multisample textures is tricky (they
can't be updated with TexImage calls) we do a bit of a workaround so
the back-end can clear the incomplete multisample texture initially.
This progresses the initial Vulkan textures implementation.
BUG=angleproject:2167
Change-Id: I79ddcc0711fcc986f2578a52ac6f701231d241ac
Reviewed-on: https://chromium-review.googlesource.com/700993
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
b433e872
|
2017-10-05T14:01:47
|
|
Change robust resource init into a context creation attribute.
Enabled support on OpenGL even through the extension is not fully
implemented so that testing with Chromium/Passthrough commmand decoder
is still possible.
BUG=angleproject:1635
Change-Id: Ia417b1779aace1eae19514325701a79cd33f4ef3
Reviewed-on: https://chromium-review.googlesource.com/678479
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
a99ed554
|
2017-09-22T08:10:32
|
|
Refactor data conversions for state commands
This mainly enforces the rules as descripted in ES 3.10, section
2.2.1 and 2.2.2, by enhancing the "queryconversions" to support
more rules, removing the scattered type convertors in "utilities"
, "mathutil" and "queryutils", and forcing to only use the
convertors in "queryconversions".
BUG=angleproject:2165
Change-Id: I73c1dc850e2b3b8a479ece1d9c5eb7ae4ce851fe
Reviewed-on: https://chromium-review.googlesource.com/680094
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
488130e0
|
2017-09-27T13:53:11
|
|
Make GL_ANGLE_framebuffer_multisample enableable.
BUG=angleproject:1523
Change-Id: Idc2cf338ba1fb5142ef2596603d291790fd6ddd6
Reviewed-on: https://chromium-review.googlesource.com/688100
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Geoff Lang <geofflang@chromium.org>
|
|
05b35b21
|
2017-10-03T09:01:44
|
|
D3D11: Lazy robust resource init.
This patch moves the robust resource init logic to the GL front-end.
Instead of initializing texture resources immediately on creation in
D3D11, it defers the clear until before a draw call in some cases, or
skips the update if we can determine if a texture (or other resource)
has been fully initialized.
Currently lazy init is only implemented for Textures, Renderbuffers,
and Surfaces.
Various places where lazy resource init is triggered:
* Framebuffer operations (Draw, Blit, CopyTexImage, Clear, ReadPixels)
* Texture operations (SubImage, GenerateMipmap, CopyTexImage)
Some efficiency gains remain to be implemented, such as when a
SubImage call fills the entire object. Similarly for Blit, and a few
other operations. In these cases we can skip lazy init as an
optimization. Edge cases with EGLImage are mostly untested.
BUG=angleproject:2107
Change-Id: I2bf3a69b1eae0d4feeb5b17daca23451f1037be8
Reviewed-on: https://chromium-review.googlesource.com/576058
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
db342276
|
2017-09-27T10:21:45
|
|
ES31: Implement glSampleMaski on OpenGL
This patch intends to implement glSampleMaski on OpenGL
backends.
Refers to: https://chromium-review.googlesource.com/c/487603
BUG=angleproject:1592
TEST=dEQP-GLES31.functional.state_query.*.sample_mask*
TEST=dEQP-GLES31.functional.texture.multisample.*.sample_mask*
Change-Id: If5ddd6ab57259593919a482be80fbdbe29f6f54d
Reviewed-on: https://chromium-review.googlesource.com/573727
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
0f80ed86
|
2017-09-19T00:24:56
|
|
Improve speed of iterating dirty textures.
We had a performance regression in the Textures benchmark. What the
test was doing was iterating over all possible texture state,
ensuring the active texture was dirty every frame. This is an attempt
to improve on the speed by not doing as much resetting work in
State::syncProgramTextures. It introduces an active textures mask to
speed iteration over the active texture set.
Also makes a refactoring change to Context to make it easier to limit
caps to an implementation maxium. The number of active textures is
limited to 64 so they easily fit in the bitset mask, with a limit of
32 per shader stage. No mask is currenly kept for compute shaders.
With the fix the performance should be about the same as before (which
is good, as the test always sets the textures dirty).
Test: TexturesBenchmark.Run/gl_8_textures_5_rebind_3_state_8_mips
BUG=chromium:765363
BUG=angleproject:1387
Change-Id: I8bcf95be3671195373573f89f406edaba40aa1be
Reviewed-on: https://chromium-review.googlesource.com/670279
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
a336b90f
|
2017-08-02T16:05:21
|
|
ES31: Impl program pipeline object management entries for GL backend.
The program pipeline object management entries are:
GenProgramPipelines
DeleteProgramPipelines
BindProgramPipeline
IsProgramPipeline
BUG:angleproject:2123
Change-Id: I114d054b90caf2ee3f9befef7439552a1c309bc4
Reviewed-on: https://chromium-review.googlesource.com/629978
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
af4ffe0a
|
2017-09-09T23:32:48
|
|
D3D11: Implement dirty bits for texture updates.
BUG=angleproject:1387
Change-Id: I5f759c3dc60b53a5d4f8a1dd1f4a1d3d5330bfda
Reviewed-on: https://chromium-review.googlesource.com/648487
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
06ef36b9
|
2017-09-09T23:32:46
|
|
Add top-level state sync for Samplers.
This also reformats the Sampler class to use a shared state struct
with the implementation. It removes the call to sync the sampler
state from the StateManagerGL::setGenericShaderState method, since
it should all be handled at the front-end now.
Also rename 'syncImplState' to 'syncState' methods.
BUG=angleproject:1387
Change-Id: I5f0219b719aee99aaaa486ec188b2af0c9128e6a
Reviewed-on: https://chromium-review.googlesource.com/648054
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
81c2e253
|
2017-09-09T23:32:46
|
|
Add top-level dirty bits for texture and samplers.
These will have to be fleshed out in the back-ends.
Also currently uses a single bit for all the bindings, and we can
extend this to more fine-grained updates in the future.
This patch implements top-level updates for texture completeness.
Sampler completeness caches are removed from the Texture class, and
replaced by a cache in the gl::State class. The State class also
keeps a channel binding to the bound textures so it can be notified
when textures might change from complete <-> incomplete.
In future CLs we skip updating back-ends if texture state doesn't
change.
BUG=angleproject:1387
Change-Id: If580b4851303c86f3240e62891f5f6047eefb6a2
Reviewed-on: https://chromium-review.googlesource.com/648053
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
8693bdb8
|
2017-09-02T15:32:14
|
|
Add a few missing dirty bit cases.
Discovered some of these while investigating Texture dirty bits.
BUG=angleproject:1387
Change-Id: I8b170462bfd283e4b0f9d47b7f7ddbaa7957914d
Reviewed-on: https://chromium-review.googlesource.com/648051
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|