|
5d01d538
|
2020-05-12T18:13:52
|
|
Resolve Bad Binary Link Failures
When ANGLE_PROGRAM_BINARY_LOAD is enabled, Program::loadBinary
unconditionally returns angle::Result::Continue to the caller. The
caller, gl::Program::link, postpones the resolution of the link
until resolveLinkImpl.
Unfortunately, resolveLinkImpl is not able to tell whether the link
failed because the shader from the developer is bad or because the
loaded binary is not compatible with the backend. The former case
should fail link. In the latter case, we should fallback to linking
the program from the original shader sources. The loaded binary could
be read from the on-disk shader cache and be corrupted or serialized
with different revision and subsystem id than the currently loaded
ANGLE backend.
This fix adjusts Program::loadBinary and ProgramD3D::load so that
angle::Result::Incomplete is returned to gl::Program::link when the
binary is incompatible with the backend. gl::Program:link falls back
to compilation from original shader sources.
Since no code checks the return value of SizedMRUCache::eraseByKey,
modified it to now return void.
Bug: chromium:1079497
Change-Id: Id5271d7badad8627563e87859d1c9fdb81de5785
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2197944
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Tim Van Patten <timvp@google.com>
Commit-Queue: Rafael Cintron <rafael.cintron@microsoft.com>
|
|
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>
|
|
35fd3063
|
2018-11-20T10:02:48
|
|
Use xxHash for faster hash map lookups.
This most strongly affects the Vulkan back-end which uses a hash map
to cache VkPipelines. It also should speed up some parts of the D3D11
back-end.
Bug: angleproject:2522
Change-Id: I10801654f043abce17339c30d7bf62bc8644e49c
Reviewed-on: https://chromium-review.googlesource.com/c/1316889
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
9137adea
|
2018-08-27T14:22:37
|
|
Add support for EGL_ANDROID_blob_cache
The functionality of MemoryProgramCache is divided up in two. BlobCache
is now a generic binary cache, which interfaces with the callbacks from
EGL_ANDROID_blob_cache. MemoryProgramCache handles program
[de]serialization and interacts with BlobCache.
Bug: angleproject:2516
Change-Id: Ie4328a2e56a26338e033d84f4e53a1103411937d
Reviewed-on: https://chromium-review.googlesource.com/1194285
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
f1b47e89
|
2017-11-21T22:58:31
|
|
Fix ComputeGenericHash.
ANGLE's internal hash maps would run MurmurHash on c++ structs to
come up with hash values. Since the hash ran on 4 byte words only,
it would have no understanding that sometimes our structs would only
have meaninful data in the first N bytes, and would include the
garbage at the end in the hash calculation. This fixes the problem by
forcing our structs to be aligned at compile-time.
It also adds custom copy operators for a few classes to ensure that
all bits are copied when the struct is initialized, including the
padding.
Bug: angleproject:1569
Bug: chromium:721648
Change-Id: I4d11f6e12d9a067b36e1416c7ed15586eff99aab
Reviewed-on: https://chromium-review.googlesource.com/783990
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
8c5b69cb
|
2017-09-18T20:23:08
|
|
Replace MurmurHash3 with PMurHash
PMurHash comes from the smhasher repository at chromium/src/third_party/smhasher
Bug: 697758
Change-Id: Id2859edf37ae66bf27509d53db7f22db8831fe44
Reviewed-on: https://chromium-review.googlesource.com/687970
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
|
|
c43be720
|
2017-07-13T16:22:14
|
|
Implement ANGLE_program_cache_control extensions.
This will give the browsers the ability to control the cache size,
query and populate the contents, and trim cache contents on memory
pressure.
BUG=angleproject:1897
Change-Id: I6edaa7d307b890223db98792d5b074e4a7fdfaa4
Reviewed-on: https://chromium-review.googlesource.com/563606
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
|
|
360daeef
|
2017-06-29T10:36:19
|
|
Add platform hook for program cache updates.
This will need to be matched with a corresponding browser-side CL.
It will enable writing out binary shaders to disk.
BUG=angleproject:1897
Change-Id: I443281086050b9711b92a034cf37f808dd919007
Reviewed-on: https://chromium-review.googlesource.com/542963
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
3244736a
|
2017-06-28T14:53:52
|
|
Use MemoryProgramCache.
Add the member functions for saving and loading from the binary cache,
and hook them into the Program class. Requires that the Renderer
supports the program binary extension.
BUG=angleproject:1897
Change-Id: I2dc8d21b02da705ded58c5cd1943562c9c97c49b
Reviewed-on: https://chromium-review.googlesource.com/522874
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|
|
d222d454
|
2017-06-06T17:48:35
|
|
Use HashingMRUCache in InputLayoutCache.
This simplifies the state management code inside this manager. Also
it should improve the speed of lookups due to using hashing instead
of a tree lookup.
BUG=angleproject:1156
BUG=angleproject:2044
Change-Id: I19ea8dbac6f2dfd7d30dd403d77b66ba0aa85d73
Reviewed-on: https://chromium-review.googlesource.com/527693
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
|
|
88323761
|
2017-06-09T12:48:32
|
|
Introduce SizedMRUCache.
This class is an MRU cache for sized objects, like Textures or
Program binaries. It is based on the base::HashingMRUCache type,
and evicts objects automatically.
BUG=angleproject:2044
Change-Id: I83859a0388f984e872fb9209e4c9efbf5d6c93f1
Reviewed-on: https://chromium-review.googlesource.com/517380
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
|