diff options
author | Jamie Madill <jmadill@chromium.org> | 2014-09-09 13:21:33 -0400 |
---|---|---|
committer | Jamie Madill <jmadill@chromium.org> | 2014-09-10 13:46:10 +0000 |
commit | 82cceb2de7958c7706768f21052a2e3409511fb8 (patch) | |
tree | e750daf7c9158c39ec03789308e17c49461dd638 /src/libGLESv2/renderer/d3d | |
parent | c9610c51e9c02ba67c735ff449a70164cda12a60 (diff) | |
download | angle-82cceb2de7958c7706768f21052a2e3409511fb8.tar.gz |
Only use direct buffers for static data in D3D11.
For highly dynamic data, which gets updated every frame, or almost
every frame, we're better off using our existing dynamic buffer
path. We could further optimize the dynamic buffer path by only
uploading changed data every frame.
BUG=angle:705
Change-Id: Icbb357b889be789b30f73067f75b13664c806929
Reviewed-on: https://chromium-review.googlesource.com/217280
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
Diffstat (limited to 'src/libGLESv2/renderer/d3d')
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp | 8 | ||||
-rw-r--r-- | src/libGLESv2/renderer/d3d/d3d11/Buffer11.h | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp b/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp index ea6660e2..c612ddd0 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp +++ b/src/libGLESv2/renderer/d3d/d3d11/Buffer11.cpp @@ -597,6 +597,14 @@ Buffer11::PackStorage11 *Buffer11::getPackStorage() return static_cast<PackStorage11*>(packStorage); } +bool Buffer11::supportsDirectBinding() const +{ + // Do not support direct buffers for dynamic data. The streaming buffer + // offers better performance for data which changes every frame. + // Check for absence of static buffer interfaces to detect dynamic data. + return (mStaticVertexBuffer && mStaticIndexBuffer); +} + Buffer11::BufferStorage11::BufferStorage11(Renderer11 *renderer, BufferUsage usage) : mRenderer(renderer), mUsage(usage), diff --git a/src/libGLESv2/renderer/d3d/d3d11/Buffer11.h b/src/libGLESv2/renderer/d3d/d3d11/Buffer11.h index 5740566c..5f24fb4e 100644 --- a/src/libGLESv2/renderer/d3d/d3d11/Buffer11.h +++ b/src/libGLESv2/renderer/d3d/d3d11/Buffer11.h @@ -59,7 +59,7 @@ class Buffer11 : public BufferD3D // BufferD3D implementation virtual size_t getSize() const { return mSize; } - virtual bool supportsDirectBinding() const { return true; } + virtual bool supportsDirectBinding() const; virtual Renderer* getRenderer(); // BufferImpl implementation |