From 710ad8ce1bd5d01ce048851d210ac3831ca17dde Mon Sep 17 00:00:00 2001 From: Andrew Knight Date: Wed, 3 Apr 2013 19:57:09 +0300 Subject: Upgrade ANGLE to DX11 Proto Upgrades ANGLE to dx11proto (dx11-MRT-support tag), which splits out support for DirectX9 & DirectX11. The DX9 codepath is used by default; CONFIG+=angle_d3d11 must be passed to the ANGLE project to build for DX11. Existing patches to ANGLE have been updated (or removed if no longer needed), and a patch has been added to make DX9/DX11 codepaths mutually exclusive. Change-Id: Ibe13befadb94f04883eca449d0ee1f0da955ff92 Reviewed-by: Oswald Buddenhagen Reviewed-by: Gunnar Sletta Reviewed-by: Friedemann Kleint Reviewed-by: Axel Waggershauser --- .../src/compiler/preprocessor/preprocessor.pro | 52 +++--- src/angle/src/compiler/translator_common.pro | 24 +-- src/angle/src/compiler/translator_hlsl.pro | 6 +- src/angle/src/config.pri | 5 + src/angle/src/libEGL/libEGL.pro | 9 +- src/angle/src/libGLESv2/libGLESv2.pro | 186 ++++++++++++++++++--- 6 files changed, 205 insertions(+), 77 deletions(-) (limited to 'src/angle/src') diff --git a/src/angle/src/compiler/preprocessor/preprocessor.pro b/src/angle/src/compiler/preprocessor/preprocessor.pro index 62476008b3..432c8dcf32 100644 --- a/src/angle/src/compiler/preprocessor/preprocessor.pro +++ b/src/angle/src/compiler/preprocessor/preprocessor.pro @@ -4,43 +4,43 @@ TARGET = $$qtLibraryTarget(preprocessor) include(../../config.pri) -INCLUDEPATH = $$ANGLE_DIR/src/compiler/preprocessor/new +INCLUDEPATH = $$ANGLE_DIR/src/compiler/preprocessor DEFINES += _SECURE_SCL=0 FLEX_SOURCES = \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Tokenizer.l + $$ANGLE_DIR/src/compiler/preprocessor/Tokenizer.l BISON_SOURCES = \ - $$ANGLE_DIR/src/compiler/preprocessor/new/ExpressionParser.y + $$ANGLE_DIR/src/compiler/preprocessor/ExpressionParser.y HEADERS += \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Diagnostics.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/DirectiveHandler.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/DirectiveParser.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/ExpressionParser.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Input.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Lexer.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Macro.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/MacroExpander.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/numeric_lex.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/pp_utils.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Preprocessor.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/SourceLocation.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Token.h \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Tokenizer.h + $$ANGLE_DIR/src/compiler/preprocessor/DiagnosticsBase.h \ + $$ANGLE_DIR/src/compiler/preprocessor/DirectiveHandlerBase.h \ + $$ANGLE_DIR/src/compiler/preprocessor/DirectiveParser.h \ + $$ANGLE_DIR/src/compiler/preprocessor/ExpressionParser.h \ + $$ANGLE_DIR/src/compiler/preprocessor/Input.h \ + $$ANGLE_DIR/src/compiler/preprocessor/Lexer.h \ + $$ANGLE_DIR/src/compiler/preprocessor/Macro.h \ + $$ANGLE_DIR/src/compiler/preprocessor/MacroExpander.h \ + $$ANGLE_DIR/src/compiler/preprocessor/numeric_lex.h \ + $$ANGLE_DIR/src/compiler/preprocessor/pp_utils.h \ + $$ANGLE_DIR/src/compiler/preprocessor/Preprocessor.h \ + $$ANGLE_DIR/src/compiler/preprocessor/SourceLocation.h \ + $$ANGLE_DIR/src/compiler/preprocessor/Token.h \ + $$ANGLE_DIR/src/compiler/preprocessor/Tokenizer.h SOURCES += \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Diagnostics.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/DirectiveHandler.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/DirectiveParser.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Input.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Lexer.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Macro.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/MacroExpander.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Preprocessor.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/new/Token.cpp + $$ANGLE_DIR/src/compiler/preprocessor/DiagnosticsBase.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/DirectiveHandlerBase.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/DirectiveParser.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/Input.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/Lexer.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/Macro.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/MacroExpander.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/Preprocessor.cpp \ + $$ANGLE_DIR/src/compiler/preprocessor/Token.cpp # NOTE: 'win_flex' and 'bison' can be found in qt5/gnuwin32/bin flex.commands = $$addGnuPath(win_flex) --noline --nounistd --outfile=${QMAKE_FILE_BASE}.cpp ${QMAKE_FILE_NAME} diff --git a/src/angle/src/compiler/translator_common.pro b/src/angle/src/compiler/translator_common.pro index 2d867a921e..cafbb1595d 100644 --- a/src/angle/src/compiler/translator_common.pro +++ b/src/angle/src/compiler/translator_common.pro @@ -48,22 +48,12 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/ValidateLimitations.h \ $$ANGLE_DIR/src/compiler/VariableInfo.h \ $$ANGLE_DIR/src/compiler/VariablePacker.h \ - $$ANGLE_DIR/src/compiler/preprocessor/atom.h \ - $$ANGLE_DIR/src/compiler/preprocessor/compile.h \ - $$ANGLE_DIR/src/compiler/preprocessor/cpp.h \ - $$ANGLE_DIR/src/compiler/preprocessor/length_limits.h \ - $$ANGLE_DIR/src/compiler/preprocessor/memory.h \ - $$ANGLE_DIR/src/compiler/preprocessor/parser.h \ - $$ANGLE_DIR/src/compiler/preprocessor/preprocess.h \ - $$ANGLE_DIR/src/compiler/preprocessor/scanner.h \ - $$ANGLE_DIR/src/compiler/preprocessor/slglobals.h \ - $$ANGLE_DIR/src/compiler/preprocessor/symbols.h \ - $$ANGLE_DIR/src/compiler/preprocessor/tokens.h \ $$ANGLE_DIR/src/compiler/timing/RestrictFragmentShaderTiming.h \ $$ANGLE_DIR/src/compiler/timing/RestrictVertexShaderTiming.h \ $$ANGLE_DIR/src/compiler/depgraph/DependencyGraph.h \ $$ANGLE_DIR/src/compiler/depgraph/DependencyGraphBuilder.h \ - $$ANGLE_DIR/src/compiler/depgraph/DependencyGraphOutput.h + $$ANGLE_DIR/src/compiler/depgraph/DependencyGraphOutput.h \ + $$ANGLE_DIR/src/third_party/compiler/ArrayBoundsClamper.h SOURCES += \ $$ANGLE_DIR/src/compiler/BuiltInFunctionEmulator.cpp \ @@ -93,19 +83,13 @@ SOURCES += \ $$ANGLE_DIR/src/compiler/ValidateLimitations.cpp \ $$ANGLE_DIR/src/compiler/VariableInfo.cpp \ $$ANGLE_DIR/src/compiler/VariablePacker.cpp \ - $$ANGLE_DIR/src/compiler/preprocessor/atom.c \ - $$ANGLE_DIR/src/compiler/preprocessor/cpp.c \ - $$ANGLE_DIR/src/compiler/preprocessor/cppstruct.c \ - $$ANGLE_DIR/src/compiler/preprocessor/memory.c \ - $$ANGLE_DIR/src/compiler/preprocessor/scanner.c \ - $$ANGLE_DIR/src/compiler/preprocessor/symbols.c \ - $$ANGLE_DIR/src/compiler/preprocessor/tokens.c \ $$ANGLE_DIR/src/compiler/depgraph/DependencyGraph.cpp \ $$ANGLE_DIR/src/compiler/depgraph/DependencyGraphBuilder.cpp \ $$ANGLE_DIR/src/compiler/depgraph/DependencyGraphOutput.cpp \ $$ANGLE_DIR/src/compiler/depgraph/DependencyGraphTraverse.cpp \ $$ANGLE_DIR/src/compiler/timing/RestrictFragmentShaderTiming.cpp \ - $$ANGLE_DIR/src/compiler/timing/RestrictVertexShaderTiming.cpp + $$ANGLE_DIR/src/compiler/timing/RestrictVertexShaderTiming.cpp \ + $$ANGLE_DIR/src/third_party/compiler/ArrayBoundsClamper.cpp # NOTE: 'win_flex' and 'bison' can be found in qt5/gnuwin32/bin flex.commands = $$addGnuPath(win_flex) --noline --nounistd --outfile=${QMAKE_FILE_BASE}_lex.cpp ${QMAKE_FILE_NAME} diff --git a/src/angle/src/compiler/translator_hlsl.pro b/src/angle/src/compiler/translator_hlsl.pro index 048e2a48fd..6b17f14d2e 100644 --- a/src/angle/src/compiler/translator_hlsl.pro +++ b/src/angle/src/compiler/translator_hlsl.pro @@ -14,7 +14,8 @@ HEADERS += \ $$ANGLE_DIR/src/compiler/OutputHLSL.h \ $$ANGLE_DIR/src/compiler/SearchSymbol.h \ $$ANGLE_DIR/src/compiler/TranslatorHLSL.h \ - $$ANGLE_DIR/src/compiler/UnfoldShortCircuit.h + $$ANGLE_DIR/src/compiler/UnfoldShortCircuit.h \ + $$ANGLE_DIR/src/compiler/Uniform.h SOURCES += \ $$ANGLE_DIR/src/compiler/CodeGenHLSL.cpp \ @@ -22,4 +23,5 @@ SOURCES += \ $$ANGLE_DIR/src/compiler/OutputHLSL.cpp \ $$ANGLE_DIR/src/compiler/SearchSymbol.cpp \ $$ANGLE_DIR/src/compiler/TranslatorHLSL.cpp \ - $$ANGLE_DIR/src/compiler/UnfoldShortCircuit.cpp + $$ANGLE_DIR/src/compiler/UnfoldShortCircuit.cpp \ + $$ANGLE_DIR/src/compiler/Uniform.cpp diff --git a/src/angle/src/config.pri b/src/angle/src/config.pri index 73fbc2e13b..923a40597e 100644 --- a/src/angle/src/config.pri +++ b/src/angle/src/config.pri @@ -46,6 +46,11 @@ DEFINES += ANGLE_DISABLE_TRACE \ ANGLE_COMPILE_OPTIMIZATION_LEVEL=D3DCOMPILE_OPTIMIZATION_LEVEL0 \ ANGLE_USE_NEW_PREPROCESSOR=1 +angle_d3d11 { + DEFINES += ANGLE_ENABLE_D3D11 + !build_pass: message("Enabling D3D11 mode for ANGLE") +} + CONFIG(debug, debug|release) { DEFINES += _DEBUG } else { diff --git a/src/angle/src/libEGL/libEGL.pro b/src/angle/src/libEGL/libEGL.pro index 6f3bc25cfb..c0d021ccab 100644 --- a/src/angle/src/libEGL/libEGL.pro +++ b/src/angle/src/libEGL/libEGL.pro @@ -6,8 +6,13 @@ include(../common/common.pri) # Note: ANGLE is patched to dynamically resolve DwmIsCompositionEnabled DwmSetPresentParameters # in Surface.cpp, which would otherwise require -ldwmapi, which does not exist on Windows XP # (QTBUG-27741). -LIBS += -ld3d9 -ldxguid \ - -L$$QT_BUILD_TREE/lib -l$$qtLibraryTarget(libGLESv2) + +angle_d3d11 { + LIBS += -ld3d11 +} else { + LIBS += -ld3d9 +} +LIBS += -ldxguid -L$$QT_BUILD_TREE/lib -l$$qtLibraryTarget(libGLESv2) HEADERS += \ $$ANGLE_DIR/src/libEGL/Config.h \ diff --git a/src/angle/src/libGLESv2/libGLESv2.pro b/src/angle/src/libGLESv2/libGLESv2.pro index 2412a01b82..681cd1be19 100644 --- a/src/angle/src/libGLESv2/libGLESv2.pro +++ b/src/angle/src/libGLESv2/libGLESv2.pro @@ -4,10 +4,15 @@ CONFIG += simd include(../common/common.pri) -INCLUDEPATH += $$OUT_PWD/.. +INCLUDEPATH += $$OUT_PWD/.. $$ANGLE_DIR/src/libGLESv2 # Remember to adapt tools/configure/configureapp.cpp if the Direct X version changes. -LIBS += -ld3d9 -ld3dcompiler +angle_d3d11 { + LIBS += -ldxgi -ld3d11 +} else { + LIBS += -ld3d9 +} +LIBS += -ldxguid -ld3dcompiler STATICLIBS = translator_common translator_hlsl preprocessor for(libname, STATICLIBS) { @@ -19,15 +24,13 @@ for(libname, STATICLIBS) { } HEADERS += \ + $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.h \ $$ANGLE_DIR/src/libGLESv2/BinaryStream.h \ - $$ANGLE_DIR/src/libGLESv2/Blit.h \ $$ANGLE_DIR/src/libGLESv2/Buffer.h \ $$ANGLE_DIR/src/libGLESv2/Context.h \ - $$ANGLE_DIR/src/libGLESv2/D3DConstantTable.h \ $$ANGLE_DIR/src/libGLESv2/Fence.h \ $$ANGLE_DIR/src/libGLESv2/Framebuffer.h \ $$ANGLE_DIR/src/libGLESv2/HandleAllocator.h \ - $$ANGLE_DIR/src/libGLESv2/IndexDataManager.h \ $$ANGLE_DIR/src/libGLESv2/main.h \ $$ANGLE_DIR/src/libGLESv2/mathutil.h \ $$ANGLE_DIR/src/libGLESv2/Program.h \ @@ -38,20 +41,31 @@ HEADERS += \ $$ANGLE_DIR/src/libGLESv2/ResourceManager.h \ $$ANGLE_DIR/src/libGLESv2/Shader.h \ $$ANGLE_DIR/src/libGLESv2/Texture.h \ + $$ANGLE_DIR/src/libGLESv2/Uniform.h \ $$ANGLE_DIR/src/libGLESv2/utilities.h \ $$ANGLE_DIR/src/libGLESv2/vertexconversion.h \ - $$ANGLE_DIR/src/libGLESv2/VertexDataManager.h + $$ANGLE_DIR/src/libGLESv2/precompiled.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Image.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexDataManager.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Renderer.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexDataManager.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexDeclarationCache.h SOURCES += \ - $$ANGLE_DIR/src/libGLESv2/Blit.cpp \ + $$ANGLE_DIR/src/third_party/murmurhash/MurmurHash3.cpp \ $$ANGLE_DIR/src/libGLESv2/Buffer.cpp \ $$ANGLE_DIR/src/libGLESv2/Context.cpp \ - $$ANGLE_DIR/src/libGLESv2/D3DConstantTable.cpp \ $$ANGLE_DIR/src/libGLESv2/Fence.cpp \ - $$ANGLE_DIR/src/libGLESv2/Framebuffer.cpp \ $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.cpp \ + $$ANGLE_DIR/src/libGLESv2/Framebuffer.cpp \ $$ANGLE_DIR/src/libGLESv2/HandleAllocator.cpp \ - $$ANGLE_DIR/src/libGLESv2/IndexDataManager.cpp \ $$ANGLE_DIR/src/libGLESv2/libGLESv2.cpp \ $$ANGLE_DIR/src/libGLESv2/main.cpp \ $$ANGLE_DIR/src/libGLESv2/Program.cpp \ @@ -61,10 +75,84 @@ SOURCES += \ $$ANGLE_DIR/src/libGLESv2/ResourceManager.cpp \ $$ANGLE_DIR/src/libGLESv2/Shader.cpp \ $$ANGLE_DIR/src/libGLESv2/Texture.cpp \ + $$ANGLE_DIR/src/libGLESv2/Uniform.cpp \ $$ANGLE_DIR/src/libGLESv2/utilities.cpp \ - $$ANGLE_DIR/src/libGLESv2/VertexDataManager.cpp + $$ANGLE_DIR/src/libGLESv2/precompiled.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Image.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexDataManager.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Renderer.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexDataManager.cpp -SSE2_SOURCES += $$ANGLE_DIR/src/libGLESv2/TextureSSE2.cpp +sse2:SOURCES += $$ANGLE_DIR/src/libGLESv2/renderer/ImageSSE2.cpp + +angle_d3d11 { + HEADERS += \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Fence11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Image11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/InputLayoutCache.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Query11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Renderer11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/renderer11_utils.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderStateCache.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage11.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer11.h + + SOURCES += \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Fence11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Image11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/InputLayoutCache.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Query11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Renderer11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/renderer11_utils.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderStateCache.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage11.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer11.cpp +} else { + HEADERS += \ + $$ANGLE_DIR/src/libGLESv2/renderer/Blit.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Fence9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Image9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Query9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/Renderer9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/renderer9_utils.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage9.h \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer9.h + + SOURCES += \ + $$ANGLE_DIR/src/libGLESv2/renderer/Blit.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/BufferStorage9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Fence9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Image9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/IndexBuffer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Query9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/Renderer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/renderer9_utils.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/RenderTarget9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/ShaderExecutable9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/SwapChain9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/TextureStorage9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexBuffer9.cpp \ + $$ANGLE_DIR/src/libGLESv2/renderer/VertexDeclarationCache.cpp +} !static { DEF_FILE = $$ANGLE_DIR/src/libGLESv2/$${TARGET}.def @@ -77,27 +165,71 @@ float_converter.commands = python $$ANGLE_DIR/src/libGLESv2/Float16ToFloat32.py QMAKE_EXTRA_TARGETS += float_converter # Generate the shader header files. -PS_INPUT = $$ANGLE_DIR/src/libGLESv2/shaders/Blit.ps -VS_INPUT = $$ANGLE_DIR/src/libGLESv2/shaders/Blit.vs +PS_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/shaders/Blit.ps +VS_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/shaders/Blit.vs +PASSTHROUGH_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/shaders/Passthrough11.hlsl +CLEAR_INPUT = $$ANGLE_DIR/src/libGLESv2/renderer/shaders/Clear11.hlsl PIXEL_SHADERS = passthroughps luminanceps componentmaskps +PIXEL_SHADERS_PASSTHROUGH = PassthroughRGBA PassthroughRGB \ + PassthroughLum PassthroughLumAlpha VERTEX_SHADERS = standardvs flipyvs -SHADER_DIR = $$OUT_PWD/shaders +VERTEX_SHADERS_PASSTHROUGH = Passthrough +CLEAR_SHADERS = Clear +SHADER_DIR = $$OUT_PWD/renderer/shaders/compiled for (ps, PIXEL_SHADERS) { - fxc_$${ps}.commands = $$FXC /nologo /E $$ps /T ps_2_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_$${ps}.output = $$SHADER_DIR/$${ps}.h - fxc_$${ps}.input = PS_INPUT - fxc_$${ps}.dependency_type = TYPE_C - fxc_$${ps}.variable_out = HEADERS - QMAKE_EXTRA_COMPILERS += fxc_$${ps} + fxc_ps_$${ps}.commands = $$FXC /nologo /E $$ps /T ps_2_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_ps_$${ps}.output = $$SHADER_DIR/$${ps}.h + fxc_ps_$${ps}.input = PS_INPUT + fxc_ps_$${ps}.dependency_type = TYPE_C + fxc_ps_$${ps}.variable_out = HEADERS + fxc_ps_$${ps}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_ps_$${ps} +} +for (ps, PIXEL_SHADERS_PASSTHROUGH) { + fxc_ps_$${ps}.commands = $$FXC /nologo /E PS_$$ps /T ps_4_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_ps_$${ps}.output = $$SHADER_DIR/$${ps}11ps.h + fxc_ps_$${ps}.input = PASSTHROUGH_INPUT + fxc_ps_$${ps}.dependency_type = TYPE_C + fxc_ps_$${ps}.variable_out = HEADERS + fxc_ps_$${ps}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_ps_$${ps} +} +for (ps, CLEAR_SHADERS) { + fxc_ps_$${ps}.commands = $$FXC /nologo /E PS_$$ps /T ps_4_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_ps_$${ps}.output = $$SHADER_DIR/$${ps}11ps.h + fxc_ps_$${ps}.input = CLEAR_INPUT + fxc_ps_$${ps}.dependency_type = TYPE_C + fxc_ps_$${ps}.variable_out = HEADERS + fxc_ps_$${ps}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_ps_$${ps} } for (vs, VERTEX_SHADERS) { - fxc_$${vs}.commands = $$FXC /nologo /E $$vs /T vs_2_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} - fxc_$${vs}.output = $$SHADER_DIR/$${vs}.h - fxc_$${vs}.input = VS_INPUT - fxc_$${vs}.dependency_type = TYPE_C - fxc_$${vs}.variable_out = HEADERS - QMAKE_EXTRA_COMPILERS += fxc_$${vs} + fxc_vs_$${vs}.commands = $$FXC /nologo /E $$vs /T vs_2_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_vs_$${vs}.output = $$SHADER_DIR/$${vs}.h + fxc_vs_$${vs}.input = VS_INPUT + fxc_vs_$${vs}.dependency_type = TYPE_C + fxc_vs_$${vs}.variable_out = HEADERS + fxc_vs_$${vs}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_vs_$${vs} +} +for (vs, VERTEX_SHADERS_PASSTHROUGH) { + fxc_vs_$${vs}.commands = $$FXC /nologo /E VS_$$vs /T vs_4_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_vs_$${vs}.output = $$SHADER_DIR/$${vs}11vs.h + fxc_vs_$${vs}.input = PASSTHROUGH_INPUT + fxc_vs_$${vs}.dependency_type = TYPE_C + fxc_vs_$${vs}.variable_out = HEADERS + fxc_vs_$${vs}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_vs_$${vs} +} +for (vs, CLEAR_SHADERS) { + fxc_vs_$${vs}.commands = $$FXC /nologo /E VS_$$vs /T vs_4_0 /Fh ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME} + fxc_vs_$${vs}.output = $$SHADER_DIR/$${vs}11vs.h + fxc_vs_$${vs}.input = CLEAR_INPUT + fxc_vs_$${vs}.dependency_type = TYPE_C + fxc_vs_$${vs}.variable_out = HEADERS + fxc_vs_$${vs}.CONFIG += target_predeps + QMAKE_EXTRA_COMPILERS += fxc_vs_$${vs} } load(qt_installs) -- cgit v1.2.3