summaryrefslogtreecommitdiffstats
path: root/ui/surface
diff options
context:
space:
mode:
authornick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-21 20:30:53 +0000
committernick@chromium.org <nick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-02-21 20:30:53 +0000
commita379c200c32a3627e70e885ba1d8caffde1df722 (patch)
treee022c0b02340ea1d992aa3a2c0d93cab0680f250 /ui/surface
parent2c3c921b6dc38cfa6780644bf9f25034a7c58a40 (diff)
downloadchromium_src-a379c200c32a3627e70e885ba1d8caffde1df722.zip
chromium_src-a379c200c32a3627e70e885ba1d8caffde1df722.tar.gz
chromium_src-a379c200c32a3627e70e885ba1d8caffde1df722.tar.bz2
Restore the caching behavior in AccleratedSurfaceTransformer::CompileShaderCombo. This method is supposed to do lazy compilation with caching, and the way it's called from SetShaderCombo relies on this.
BUG=170767, 170875, 177259 TEST=See that pages can still render after device reset Review URL: https://chromiumcodereview.appspot.com/12328026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@183855 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/surface')
-rw-r--r--ui/surface/accelerated_surface_transformer_win.cc44
1 files changed, 22 insertions, 22 deletions
diff --git a/ui/surface/accelerated_surface_transformer_win.cc b/ui/surface/accelerated_surface_transformer_win.cc
index 834c5b8..30fd1af 100644
--- a/ui/surface/accelerated_surface_transformer_win.cc
+++ b/ui/surface/accelerated_surface_transformer_win.cc
@@ -181,35 +181,35 @@ bool AcceleratedSurfaceTransformer::DoInit(IDirect3DDevice9* device) {
bool AcceleratedSurfaceTransformer::CompileShaderCombo(
ShaderCombo shader) {
- vertex_shaders_[shader] = NULL;
+ if (!vertex_shaders_[shader]) {
+ HRESULT hr = device_->CreateVertexShader(
+ reinterpret_cast<const DWORD*>(vertex_shader_sources_[shader]),
+ vertex_shaders_[shader].Receive());
- HRESULT hr = device_->CreateVertexShader(
- reinterpret_cast<const DWORD*>(vertex_shader_sources_[shader]),
- vertex_shaders_[shader].Receive());
-
- if (FAILED(hr))
- return false;
+ if (FAILED(hr))
+ return false;
- for (int i = 0; i < NUM_SHADERS; ++i) {
- if (vertex_shader_sources_[i] == vertex_shader_sources_[shader] &&
- i != shader) {
- vertex_shaders_[i] = vertex_shaders_[shader];
+ for (int i = 0; i < NUM_SHADERS; ++i) {
+ if (vertex_shader_sources_[i] == vertex_shader_sources_[shader] &&
+ i != shader) {
+ vertex_shaders_[i] = vertex_shaders_[shader];
+ }
}
}
- pixel_shaders_[shader] = NULL;
+ if (!pixel_shaders_[shader]) {
+ HRESULT hr = device_->CreatePixelShader(
+ reinterpret_cast<const DWORD*>(pixel_shader_sources_[shader]),
+ pixel_shaders_[shader].Receive());
- hr = device_->CreatePixelShader(
- reinterpret_cast<const DWORD*>(pixel_shader_sources_[shader]),
- pixel_shaders_[shader].Receive());
-
- if (FAILED(hr))
- return false;
+ if (FAILED(hr))
+ return false;
- for (int i = 0; i < NUM_SHADERS; ++i) {
- if (pixel_shader_sources_[i] == pixel_shader_sources_[shader] &&
- i != shader) {
- pixel_shaders_[i] = pixel_shaders_[shader];
+ for (int i = 0; i < NUM_SHADERS; ++i) {
+ if (pixel_shader_sources_[i] == pixel_shader_sources_[shader] &&
+ i != shader) {
+ pixel_shaders_[i] = pixel_shaders_[shader];
+ }
}
}