This patch works using a notification scheme - whenever a Texture or Renderbuffer changes in such a way as to recreate its RenderTarget, we pass a signal to the Framebuffer to invalidate some internal state. Everything is entirely tracked in the Renderer11 layer, and the GL layer is left untouched. A RenderTarget11 now tracks points to which it is bound, and the Framebuffer11 is mostly responsible for managing those links. The three locations where we notify a Framebuffer when its bound RenderTargets might be dirty are: 1) RenderTarget11::~RenderTarget 2) EGLImageD3D::copyToLocalRendertarget 3) TextureStorage11_2D::useLevelZeroWorkaroundTexture This patch gives about a 10% score increase in the D3D11 draw call benchmark on my system. BUG=angleproject:1260 Change-Id: Ide38aeadff4a2681bf5bd685e8ca3c9e2612a380 Reviewed-on: https://chromium-review.googlesource.com/327255Reviewed-by:Geoff Lang <geofflang@chromium.org> Commit-Queue: Jamie Madill <jmadill@chromium.org>
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| compiler_tests | Loading commit data... | |
| deqp_support | Loading commit data... | |
| egl_tests | Loading commit data... | |
| gl_tests | Loading commit data... | |
| gles_conformance_tests | Loading commit data... | |
| perf_tests | Loading commit data... | |
| preprocessor_tests | Loading commit data... | |
| test_utils | Loading commit data... | |
| third_party | Loading commit data... | |
| BUILD.gn | Loading commit data... | |
| WebGL-CTS-known-failures.txt | Loading commit data... | |
| angle_end2end_tests.gypi | Loading commit data... | |
| angle_end2end_tests_main.cpp | Loading commit data... | |
| angle_perftests.gypi | Loading commit data... | |
| angle_perftests_main.cpp | Loading commit data... | |
| angle_unittests.gypi | Loading commit data... | |
| angle_unittests_main.cpp | Loading commit data... | |
| angle_unittests_utils.h | Loading commit data... | |
| deqp.gypi | Loading commit data... | |
| tests.gyp | Loading commit data... |