diff options
author | Andrew Knight <andrew.knight@digia.com> | 2013-04-03 19:57:09 +0300 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-08 11:35:44 +0200 |
commit | 710ad8ce1bd5d01ce048851d210ac3831ca17dde (patch) | |
tree | bb3f645e57a7887341113275c9caa2583f7e2dfa /src/3rdparty/angle/src/libEGL/Config.cpp | |
parent | 8307ab784eb4d8d22441ee61f02cb381684ca3a2 (diff) |
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 <oswald.buddenhagen@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Axel Waggershauser <awagger@gmail.com>
Diffstat (limited to 'src/3rdparty/angle/src/libEGL/Config.cpp')
-rw-r--r-- | src/3rdparty/angle/src/libEGL/Config.cpp | 117 |
1 files changed, 29 insertions, 88 deletions
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 <algorithm> #include <vector> +#include <GLES2/gl2.h> +#include <GLES2/gl2ext.h> + #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); } |