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/3rdparty/angle/src/libEGL/Config.cpp | 117 ++++++++----------------------- 1 file changed, 29 insertions(+), 88 deletions(-) (limited to 'src/3rdparty/angle/src/libEGL/Config.cpp') diff --git a/src/3rdparty/angle/src/libEGL/Config.cpp b/src/3rdparty/angle/src/libEGL/Config.cpp index 89bc8d89f4..5488cb6f4f 100644 --- a/src/3rdparty/angle/src/libEGL/Config.cpp +++ b/src/3rdparty/angle/src/libEGL/Config.cpp @@ -13,76 +13,30 @@ #include #include +#include +#include + #include "common/debug.h" using namespace std; namespace egl { -Config::Config(D3DDISPLAYMODE displayMode, EGLint minInterval, EGLint maxInterval, D3DFORMAT renderTargetFormat, D3DFORMAT depthStencilFormat, EGLint multiSample, EGLint texWidth, EGLint texHeight) - : mDisplayMode(displayMode), mRenderTargetFormat(renderTargetFormat), mDepthStencilFormat(depthStencilFormat), mMultiSample(multiSample) -{ - set(displayMode, minInterval, maxInterval, renderTargetFormat, depthStencilFormat, multiSample, texWidth, texHeight); -} - -void Config::setDefaults() -{ - mBufferSize = 0; - mRedSize = 0; - mGreenSize = 0; - mBlueSize = 0; - mLuminanceSize = 0; - mAlphaSize = 0; - mAlphaMaskSize = 0; - mBindToTextureRGB = EGL_DONT_CARE; - mBindToTextureRGBA = EGL_DONT_CARE; - mColorBufferType = EGL_RGB_BUFFER; - mConfigCaveat = EGL_DONT_CARE; - mConfigID = EGL_DONT_CARE; - mConformant = 0; - mDepthSize = 0; - mLevel = 0; - mMatchNativePixmap = EGL_NONE; - mMaxPBufferWidth = 0; - mMaxPBufferHeight = 0; - mMaxPBufferPixels = 0; - mMaxSwapInterval = EGL_DONT_CARE; - mMinSwapInterval = EGL_DONT_CARE; - mNativeRenderable = EGL_DONT_CARE; - mNativeVisualID = 0; - mNativeVisualType = EGL_DONT_CARE; - mRenderableType = EGL_OPENGL_ES_BIT; - mSampleBuffers = 0; - mSamples = 0; - mStencilSize = 0; - mSurfaceType = EGL_WINDOW_BIT; - mTransparentType = EGL_NONE; - mTransparentRedValue = EGL_DONT_CARE; - mTransparentGreenValue = EGL_DONT_CARE; - mTransparentBlueValue = EGL_DONT_CARE; -} - -void Config::set(D3DDISPLAYMODE displayMode, EGLint minInterval, EGLint maxInterval, D3DFORMAT renderTargetFormat, D3DFORMAT depthStencilFormat, EGLint multiSample, EGLint texWidth, EGLint texHeight) +Config::Config(rx::ConfigDesc desc, EGLint minInterval, EGLint maxInterval, EGLint texWidth, EGLint texHeight) + : mRenderTargetFormat(desc.renderTargetFormat), mDepthStencilFormat(desc.depthStencilFormat), mMultiSample(desc.multiSample) { mBindToTextureRGB = EGL_FALSE; mBindToTextureRGBA = EGL_FALSE; - switch (renderTargetFormat) + switch (desc.renderTargetFormat) { - case D3DFMT_A1R5G5B5: + case GL_RGB5_A1: mBufferSize = 16; mRedSize = 5; mGreenSize = 5; mBlueSize = 5; mAlphaSize = 1; break; - case D3DFMT_A2R10G10B10: - mBufferSize = 32; - mRedSize = 10; - mGreenSize = 10; - mBlueSize = 10; - mAlphaSize = 2; - break; - case D3DFMT_A8R8G8B8: + case GL_RGBA8_OES: mBufferSize = 32; mRedSize = 8; mGreenSize = 8; @@ -90,14 +44,14 @@ void Config::set(D3DDISPLAYMODE displayMode, EGLint minInterval, EGLint maxInter mAlphaSize = 8; mBindToTextureRGBA = true; break; - case D3DFMT_R5G6B5: + case GL_RGB565: mBufferSize = 16; mRedSize = 5; mGreenSize = 6; mBlueSize = 5; mAlphaSize = 0; break; - case D3DFMT_X8R8G8B8: + case GL_RGB8_OES: mBufferSize = 32; mRedSize = 8; mGreenSize = 8; @@ -105,6 +59,14 @@ void Config::set(D3DDISPLAYMODE displayMode, EGLint minInterval, EGLint maxInter mAlphaSize = 0; mBindToTextureRGB = true; break; + case GL_BGRA8_EXT: + mBufferSize = 32; + mRedSize = 8; + mGreenSize = 8; + mBlueSize = 8; + mAlphaSize = 8; + mBindToTextureRGBA = true; + break; default: UNREACHABLE(); // Other formats should not be valid } @@ -112,52 +74,32 @@ void Config::set(D3DDISPLAYMODE displayMode, EGLint minInterval, EGLint maxInter mLuminanceSize = 0; mAlphaMaskSize = 0; mColorBufferType = EGL_RGB_BUFFER; - mConfigCaveat = (displayMode.Format == renderTargetFormat) ? EGL_NONE : EGL_SLOW_CONFIG; + mConfigCaveat = (desc.fastConfig) ? EGL_NONE : EGL_SLOW_CONFIG; mConfigID = 0; mConformant = EGL_OPENGL_ES2_BIT; - switch (depthStencilFormat) + switch (desc.depthStencilFormat) { - case D3DFMT_UNKNOWN: + case GL_NONE: mDepthSize = 0; mStencilSize = 0; break; -// case D3DFMT_D16_LOCKABLE: -// mDepthSize = 16; -// mStencilSize = 0; -// break; - case D3DFMT_D32: + case GL_DEPTH_COMPONENT32_OES: mDepthSize = 32; mStencilSize = 0; break; - case D3DFMT_D15S1: - mDepthSize = 15; - mStencilSize = 1; - break; - case D3DFMT_D24S8: + case GL_DEPTH24_STENCIL8_OES: mDepthSize = 24; mStencilSize = 8; break; - case D3DFMT_D24X8: + case GL_DEPTH_COMPONENT24_OES: mDepthSize = 24; mStencilSize = 0; break; - case D3DFMT_D24X4S4: - mDepthSize = 24; - mStencilSize = 4; - break; - case D3DFMT_D16: + case GL_DEPTH_COMPONENT16: mDepthSize = 16; mStencilSize = 0; break; -// case D3DFMT_D32F_LOCKABLE: -// mDepthSize = 32; -// mStencilSize = 0; -// break; -// case D3DFMT_D24FS8: -// mDepthSize = 24; -// mStencilSize = 8; -// break; default: UNREACHABLE(); } @@ -173,8 +115,8 @@ void Config::set(D3DDISPLAYMODE displayMode, EGLint minInterval, EGLint maxInter mNativeVisualID = 0; mNativeVisualType = 0; mRenderableType = EGL_OPENGL_ES2_BIT; - mSampleBuffers = multiSample ? 1 : 0; - mSamples = multiSample; + mSampleBuffers = desc.multiSample ? 1 : 0; + mSamples = desc.multiSample; mSurfaceType = EGL_PBUFFER_BIT | EGL_WINDOW_BIT | EGL_SWAP_BEHAVIOR_PRESERVED_BIT; mTransparentType = EGL_NONE; mTransparentRedValue = 0; @@ -288,10 +230,9 @@ ConfigSet::ConfigSet() { } -void ConfigSet::add(D3DDISPLAYMODE displayMode, EGLint minSwapInterval, EGLint maxSwapInterval, D3DFORMAT renderTargetFormat, D3DFORMAT depthStencilFormat, EGLint multiSample, EGLint texWidth, EGLint texHeight) +void ConfigSet::add(rx::ConfigDesc desc, EGLint minSwapInterval, EGLint maxSwapInterval, EGLint texWidth, EGLint texHeight) { - Config config(displayMode, minSwapInterval, maxSwapInterval, renderTargetFormat, depthStencilFormat, multiSample, texWidth, texHeight); - + Config config(desc, minSwapInterval, maxSwapInterval, texWidth, texHeight); mSet.insert(config); } -- cgit v1.2.3