|
a8000240
|
2021-10-05T13:12:22
|
|
Don't release EGLImage refs until backends are respecified
orphanImages is called before impl methods to respecify textures
and renderbuffers. This can cause the backend objects to reference
deleted images. TextureVk::handleImmutableSamplerTransition is one
such function that is called using "previousImage".
Fix this by having orphanImages return a RAII object that deletes
the image when the caller chooses. In this case, after the impl
methods have been called to respecify the backend data.
Bug: b/194432407
Change-Id: Ifb265b4409ba43478731a1701e2409f089976b1d
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3206430
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
|
|
49ac15a5
|
2021-09-20T11:29:01
|
|
Optimize VAO bindings.
This CL makes the XFB binding tracking WebGL-only. That will
speed up VAO binding changes in non-WebGL considerably.
Also has a few inline micro-optimizations that may not have
a large effect.
Bug: angleproject:6371
Change-Id: Ib0a26a3b956dcd6ff78626e5cd6514b46270d882
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3170116
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
5c56f228
|
2020-08-28T14:45:14
|
|
Enable two override suggestion warnings.
-Wsuggest-destructor-override and -Wsuggest-override.
Bug: skia:7647
Change-Id: Iaac1baa8f34fdf210baf2fdbe811a582b3ac2d14
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2376717
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
c431d596
|
2019-12-16T10:59:44
|
|
Add Serial to all GL resources.
The Serial will help track active resources for filtering out
inactive setup calls in capture/replay.
Bug: angleproject:4223
Change-Id: I64ba50f27d656c12d45155dc735e9b6f9c04528f
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1969062
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Cody Northrop <cnorthrop@google.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
cd129d17
|
2019-12-16T15:08:11
|
|
Reset binding offset & size when unbinding
Bug: angleproject:4147
Change-Id: I4ace1221d32631cdb14a95c71ee9a1617837a5ea
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1970495
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
Commit-Queue: Courtney Goeltzenleuchter <courtneygo@google.com>
|
|
f703443b
|
2019-09-21T14:10:35
|
|
Use Resource IDs in RefCountObject.
This lets us use strongly typed IDs pretty much everywhere. Only one or
two additional places still use GLuint IDs. Mostly for external queries
and for Framebuffer Attachments.
With some clever type reflection helpers lets us define a single
template function for handling operator== and != for resource IDs.
Refactor in preparation for more Capture/Replay work.
Bug: angleproject:3611
Change-Id: I1c0c848e89eb8a4b769714d57686f816daf01634
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1815550
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tobin Ehlis <tobine@google.com>
|
|
9d737966
|
2019-08-14T12:25:12
|
|
Standardize copyright notices to project style
For all "ANGLE Project" copyrights, standardize to the format specified
by the style guide. Changes:
- "Copyright (c)" and "Copyright(c)" changed to just "Copyright".
- Removed the second half of date ranges ("Y1Y1-Y2Y2"->"Y1Y1").
- Fixed a small number of files that had no copyright date using the
initial commit year from the version control history.
- Fixed one instance of copyright being "The ANGLE Project" rather than
"The ANGLE Project Authors"
These changes are applied both to the copyright of source file, and
where applicable to copyright statements that are generated by
templates.
BUG=angleproject:3811
Change-Id: I973dd65e4ef9deeba232d5be74c768256a0eb2e5
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1754397
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
4f6592fa
|
2018-11-27T16:37:45
|
|
Remove gl::Error.
Removes several TODOs. Only egl::Error remains.
Also slightly decreases binary size.
Bug: angleproject:2491
Change-Id: I3a9d1c22eb0884ca9e37362463fddd0083faf826
Reviewed-on: https://chromium-review.googlesource.com/c/1337462
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
b980c563
|
2018-11-27T11:34:27
|
|
Reformat all cpp and h files.
This applies git cl format --full to all ANGLE sources.
Bug: angleproject:2986
Change-Id: Ib504e618c1589332a37e97696cdc3515d739308f
Reviewed-on: https://chromium-review.googlesource.com/c/1351367
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
bc6f52f3
|
2018-10-18T18:41:57
|
|
Make BindingPointer::set non-virtual.
This should give more potential for inlining the function. Makes the
non-parameterized set and assign private in OffsetBindingPointer to
prevent user errors.
Bug: angleproject:2891
Change-Id: I0d581a96154c0cd33a93b06ef4a3c162809a8208
Reviewed-on: https://chromium-review.googlesource.com/c/1286378
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
|
|
cd0a0a3c
|
2018-10-18T18:41:57
|
|
Introduce SubjectBindingPointer.
We can share the same pointer for the subject binding and the binding
pointer. This further allows us to optimize buffer re-binding. The
shared memory increases cache coherency and reduces the number of
instructions needed.
Bug: angleproject:2891
Change-Id: Id3162fa79de203f75989e7289ea02cb2ea1bec73
Reviewed-on: https://chromium-review.googlesource.com/c/1270217
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
ca8eda41
|
2018-10-18T18:41:56
|
|
Use dispatch table to optimize buffer binding.
Using a table of function pointers is faster than using a switch
followed by a function call. Also more aggressively inline binding
methods.
Based on contribution by mtavenrath@nvidia.com.
In total this patch sequence improves the performance of a buffer
binding perf test by up to 27%.
Test: BindingsBenchmark.Run/gl_100_objects_allocated_at_initialization
Bug: angleproject:2891
Change-Id: Iaab1e2a135b635bd72736d7d1d4271562c3a4ece
Reviewed-on: https://chromium-review.googlesource.com/c/1281783
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Frank Henigman <fjhenigman@chromium.org>
|
|
1c7f08c3
|
2018-10-10T16:13:02
|
|
Inline RefCountObject::release.
Also don't return errors from the object release methods. Not returning
errors reduces the amount of code generated. Also we shouldn't be
exiting early from destructor type functions.
Increases object binding performance.
Bug: angleproject:2877
Change-Id: Ieb8120d885b946915e355419825e1f52f31d7b49
Reviewed-on: https://chromium-review.googlesource.com/c/1270218
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
9d05b930
|
2018-07-27T15:47:18
|
|
Don't store a ref from an EGL image to its source.
ImageSiblings no longer inherit from RefCountObeject because they may be EGL
or GL objects and should handle their own deletion.
This can cause GL resources to outlive their contexts. When the GL resource
is deleted, simply orphan the image.
BUG=angleproject:2668
Change-Id: I4a5c12bbe6e725f946209f9b48345a4097c9c91c
Reviewed-on: https://chromium-review.googlesource.com/1153601
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
620a6895
|
2018-07-27T14:40:40
|
|
Refactor RefCountObject and Binding pointer into the angle namespace.
Make the onDestroy method generic to use different context and error types.
This will allow us to have RefCountObjects for EGL that return EGL errors
and destroy with egl::Displays.
BUG=angleproject:2668
Change-Id: I77549cdc7119979d6eec96c7e6246242aed74830
Reviewed-on: https://chromium-review.googlesource.com/1153452
Commit-Queue: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
ad63728b
|
2018-07-31T11:22:14
|
|
VertexArray: Store bound attributes mask in binding.
Making the bound attributes mask part of the struct keeps the style a
bit more consistent. It will also make updating the cache variable a
bit easier.
Bug: angleproject:1391
Change-Id: I2b0ba1161d2579d95ddfbae7a05e490c9644a126
Reviewed-on: https://chromium-review.googlesource.com/1150513
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@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>
|
|
acf2f3ad
|
2017-11-21T19:22:44
|
|
Apply Chromium style fixes.
This addresses several minor code quality issues that are validated
in Chromium, but not yet applied to ANGLE:
* constructors and destructors must be defined out-of-line
* auto is not allowed for simple pointer types
* use override everywhere instead of virtual
* virtual functions must also be defined out-of-line
Slightly reduces binary size for me (~2k on Win, 150k on Linux).
Bug: angleproject:1569
Change-Id: I073ca3365188caf5f29fb28d9eb207903c1843e6
Reviewed-on: https://chromium-review.googlesource.com/779959
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
71c88b31
|
2017-09-14T22:20:29
|
|
Enable [[nodiscard]] for gl::Error.
This forces all return values to be checked for gl::Error.
Requires quite a bit of minor refactoring. I also added a macro to
swallow an error without returning from a function.
We could look at storing the errors in the Context at some point,
since almost always when we're generating errors that we need to
discard we have access to the Context as a parameter.
BUG=angleproject:2150
Change-Id: I457e48a30c002eda0993acbcd3180ba87bf169fb
Reviewed-on: https://chromium-review.googlesource.com/665173
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Yuly Novikov <ynovikov@chromium.org>
|
|
32b7e237
|
2017-09-14T15:44:17
|
|
Fix bad casts in BindingPointer::set.
The object owned by the BindingPointer does not necessarily derive
from RefCountObject; it could also just derive from RefCountObjectNoID
(e.g. Compiler).
Found with Clang's CFI bad cast checker.
BUG=chromium:507755
Change-Id: I7e431746b2783e2fc0f2d347a4a27bd60da18473
Reviewed-on: https://chromium-review.googlesource.com/667218
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
4928b7ca
|
2017-06-20T12:57:39
|
|
Proliferate gl::Context everywhere.
This gives the D3D back-end access to the GL state almost anywhere.
This uses the onDestroy hook for Textures to push errors up from
destructors, although they still don't quite make it to the Context.
There are places, such as in EGL object (Context/Surface) destruction,
where we end up calling through to GL implementation internals without
having access to a gl::Context. We handle this via a proxy Context
to a Display, basically a null context, that has access to impl-side
state like the Renderer pointer if necessary. It does not have access
to the normal GL state.
Also Pass gl::Context to RefCountObject::release(). Since we're using
destroy() methods now, we should not ever call the destructor directly.
BUG=angleproject:1156
Change-Id: Ie4c32ad6bf6caaff0289901f30b5c6bafa2ce259
Reviewed-on: https://chromium-review.googlesource.com/529707
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
6c1f671b
|
2017-02-14T19:08:04
|
|
Add destroy hooks for several GL objects.
These hooks allow the back-end renderer to free object resources
without having to store pointers to shared device handles for
each and every object. This will allow us to save memory on
back-ends that really care about memory overhead.
There is a downside in that there is more boilerplate in passing
gl::Context handles around everywhere.
BUG=angleproject:1684
Change-Id: I89463bba8d23f92920e8956650cb73c7fc6d66b7
Reviewed-on: https://chromium-review.googlesource.com/426401
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
8ecf7f9b
|
2017-01-13T17:29:52
|
|
Vulkan: Implement shader compilation.
This hooks up the Vulkan GLSL, decorated with locations, to glslang,
and then pipes the SPIRV back to the Program implementation for later
use when making pipelines to run draw calls.
The program compilation tests work now, but don't really test
anything other than not generating Vulkan validation layer errors
during compilation and shader object generation.
BUG=angleproject:1576
Change-Id: I625e42219f4b4d1433dd3109b94e1a2f666ba4bd
Reviewed-on: https://chromium-review.googlesource.com/408519
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
986d09df
|
2016-01-07T11:23:21
|
|
Improved performance of RefCountObject
Drop virtual specifier on addRef() and release(). There are no derived
classes which re-implement these functions.
Inlined implementation of constructor and destructor. Destructor is
still virtual, but empty implementation is now visible for derived
classes. Destructor is now protected to make sure that object is
destructed through release().
BUG=angleproject:1263
Change-Id: I744430c1d99b917f3d7b63d47305d937be323ee7
Reviewed-on: https://chromium-review.googlesource.com/320861
Tryjob-Request: Tibor Ouden, den <tibordenouden@gmail.com>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
1a683460
|
2015-09-29T15:09:59
|
|
Implement TransformFeedbackGL.
Reland with supression for TransformFeedbackTest.MultiContext on Linux
AMD.
BUG=angleproject:889
Change-Id: I6f2a2e856dacf16308de222dd0936bedbb3b175c
Reviewed-on: https://chromium-review.googlesource.com/307871
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
a9ca8e20
|
2015-10-22T14:34:20
|
|
Revert "Implement TransformFeedbackGL."
Failing on AMD Linux bots.
This reverts commit a9c5288192f90ebf03b0d26d86964b4fbce74bcb.
Change-Id: I2a2db8c3d96c4b927d7d784486c6df772ae63084
Reviewed-on: https://chromium-review.googlesource.com/308130
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
a9c52881
|
2015-09-29T15:09:59
|
|
Implement TransformFeedbackGL.
BUG=angleproject:889
Change-Id: I347ac21cfd0a56654a75fb41ac24c6c67ede3a05
Reviewed-on: https://chromium-review.googlesource.com/302351
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
cdb94508
|
2015-07-17T14:03:27
|
|
Add a RefCountObject::getRefCount method for testing.
BUG=angleproject:970
Change-Id: I4fae29766ee76512375872535dbaf2d31a379de0
Reviewed-on: https://chromium-review.googlesource.com/286551
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8e34494f
|
2015-07-09T14:22:07
|
|
Share data between VertexArray and Impl.
Using the same design as for the Framebuffer::Data helper, we can
use a struct to share between the object and the Impl. This also
gives the Impl access to the maxEnabledAttrib, and saves some
duplicated storage.
BUG=angleproject:1040
TEST=WebGL CTS, end2end_tests, unittests
Change-Id: I55c91e8a5f3dcae302cab441182320aafd5375ef
Reviewed-on: https://chromium-review.googlesource.com/283930
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
045536bf
|
2015-03-27T15:17:18
|
|
Store current transform feedback buffer bindings in the object itself.
BUG=angleproject:763
Change-Id: I76565f68fa8145da29713de2a517a39a8d50a24b
Reviewed-on: https://chromium-review.googlesource.com/263061
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
f0d10f89
|
2015-03-31T12:56:52
|
|
Replace non-copyable macro with a helper class.
This class provides a simpler scheme for blocking default copy
and assignment operators. It also reduces the amount of code
needed since it's inherited to child classes. This also fixes
the conflict between our macro and the same-named macro in
Chromium code.
BUG=angleproject:956
Change-Id: If0dc72aa3f63fbc7b8fa34907418821c64c39e2f
Reviewed-on: https://chromium-review.googlesource.com/263257
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Brandon Jones <bajones@chromium.org>
|
|
1f40291c
|
2015-03-09T14:28:02
|
|
Remove the non-templated RefCountObjectBindingPointer class.
This allows the regular BindingPointer class to template on const types.
Also added assignment and copy operators that don't leak the resources.
BUG=angleproject:880
Change-Id: If3efa26a7fa89306d783c3e8a5fb92b16861d77a
Reviewed-on: https://chromium-review.googlesource.com/257670
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
9d9132df
|
2014-12-03T14:46:48
|
|
Remove support for compiling libANGLE as a dynamic library.
BUG=angle:733
Change-Id: Iacef45b89f234091eb5df505437adabece1e564b
Reviewed-on: https://chromium-review.googlesource.com/232961
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
8bc361e1
|
2014-11-20T16:23:31
|
|
Support compiling libANGLE as a static or shared library.
BUG=angle:733
Change-Id: If27d3330534bce0f5b691010ea7d97bcb7579122
Reviewed-on: https://chromium-review.googlesource.com/231052
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
2207213b
|
2014-11-20T15:15:01
|
|
Move as many files as possible from common to libANGLE.
BUG=angle:733
Change-Id: If01c91cd52ac5c2102276a9fdc4b68ebc13e47f9
Reviewed-on: https://chromium-review.googlesource.com/231850
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
4349ab85
|
2014-11-25T15:53:34
|
|
Revert "Move as many files as possible from common to libANGLE."
Chromium directly includes our common/version.h and couldn't build after this change.
This reverts commit f0a2c7727f9863c38a435a16a69d513c481fbbdd.
Change-Id: Iafc41b1a3973f609518fe3588fdb64cecc285332
Reviewed-on: https://chromium-review.googlesource.com/231840
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|
|
f0a2c772
|
2014-11-20T15:15:01
|
|
Move as many files as possible from common to libANGLE.
BUG=angle:733
Change-Id: I40cee6e2e305ac493acbc8649f858785c0569aed
Reviewed-on: https://chromium-review.googlesource.com/231051
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
|