Refactor HLSL compilation out of Renderer.
This moves the start-up and tear-down code for D3DCompiler.dll into an object
that Renderer9 and Renderer11 use. This will help future efforts to remove
references to HLSL at the GL/Renderer interface level.
BUG=angle:558
Change-Id: I18fcf9b237265d69c1d7d2ea345696c8fd31df29
Reviewed-on: https://chromium-review.googlesource.com/185568
Tested-by: Geoff Lang <geofflang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libGLESv2/renderer/d3d11/Renderer11.cpp b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
index 31d31c4..f9c84dd 100644
--- a/src/libGLESv2/renderer/d3d11/Renderer11.cpp
+++ b/src/libGLESv2/renderer/d3d11/Renderer11.cpp
@@ -113,7 +113,7 @@
EGLint Renderer11::initialize()
{
- if (!initializeCompiler())
+ if (!mCompiler.initialize())
{
return EGL_NOT_INITIALIZED;
}
@@ -1800,6 +1800,8 @@
FreeLibrary(mDxgiModule);
mDxgiModule = NULL;
}
+
+ mCompiler.release();
}
bool Renderer11::resetDevice()
@@ -2837,7 +2839,7 @@
return NULL;
}
- ID3DBlob *binary = (ID3DBlob*)compileToBinary(infoLog, shaderHLSL, profile, D3DCOMPILE_OPTIMIZATION_LEVEL0, false);
+ ID3DBlob *binary = (ID3DBlob*)mCompiler.compileToBinary(infoLog, shaderHLSL, profile, D3DCOMPILE_OPTIMIZATION_LEVEL0, false);
if (!binary)
{
return NULL;
diff --git a/src/libGLESv2/renderer/d3d11/Renderer11.h b/src/libGLESv2/renderer/d3d11/Renderer11.h
index 2f7d403..1a1ea0e 100644
--- a/src/libGLESv2/renderer/d3d11/Renderer11.h
+++ b/src/libGLESv2/renderer/d3d11/Renderer11.h
@@ -14,6 +14,7 @@
#include "common/mathutil.h"
#include "libGLESv2/renderer/Renderer.h"
+#include "libGLESv2/renderer/d3d/HLSLCompiler.h"
#include "libGLESv2/renderer/d3d11/RenderStateCache.h"
#include "libGLESv2/renderer/d3d11/InputLayoutCache.h"
#include "libGLESv2/renderer/RenderTarget.h"
@@ -250,6 +251,8 @@
HMODULE mDxgiModule;
HDC mDc;
+ HLSLCompiler mCompiler;
+
bool mDeviceLost;
void initializeDevice();