Commit c51113d0 by Geoff Lang

Generate egl configs from the DisplayImpl.

Still do the actual generation in the Renderer9/11 for now but route it through the DisplayImpl. BUG=angle:658 Change-Id: Ib976fbd1b9e349146dc068bbdd4e6a3d2a5ddc69 Reviewed-on: https://chromium-review.googlesource.com/238860Reviewed-by: 's avatarBrandon Jones <bajones@chromium.org> Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Tested-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent b931e721
...@@ -204,11 +204,10 @@ Error Display::initialize() ...@@ -204,11 +204,10 @@ Error Display::initialize()
EGLint maxSwapInterval = mRenderer->getMaxSwapInterval(); EGLint maxSwapInterval = mRenderer->getMaxSwapInterval();
EGLint maxTextureSize = mRenderer->getRendererCaps().max2DTextureSize; EGLint maxTextureSize = mRenderer->getRendererCaps().max2DTextureSize;
rx::ConfigDesc *descList; std::vector<rx::ConfigDesc> descList = mImplementation->generateConfigs();
int numConfigs = mRenderer->generateConfigs(&descList);
ConfigSet configSet;
for (int i = 0; i < numConfigs; ++i) ConfigSet configSet;
for (size_t i = 0; i < descList.size(); ++i)
{ {
configSet.add(descList[i], minSwapInterval, maxSwapInterval, maxTextureSize, maxTextureSize); configSet.add(descList[i], minSwapInterval, maxSwapInterval, maxTextureSize, maxTextureSize);
} }
...@@ -224,9 +223,6 @@ Error Display::initialize() ...@@ -224,9 +223,6 @@ Error Display::initialize()
mConfigSet.mSet.insert(configuration); mConfigSet.mSet.insert(configuration);
} }
mRenderer->deleteConfigs(descList);
descList = NULL;
if (!isInitialized()) if (!isInitialized())
{ {
terminate(); terminate();
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "libANGLE/Error.h" #include "libANGLE/Error.h"
#include <set> #include <set>
#include <vector>
namespace egl namespace egl
{ {
...@@ -25,6 +26,7 @@ class Surface; ...@@ -25,6 +26,7 @@ class Surface;
namespace rx namespace rx
{ {
class SurfaceImpl; class SurfaceImpl;
struct ConfigDesc;
class DisplayImpl class DisplayImpl
{ {
...@@ -38,6 +40,9 @@ class DisplayImpl ...@@ -38,6 +40,9 @@ class DisplayImpl
virtual SurfaceImpl *createOffscreenSurface(egl::Display *display, const egl::Config *config, virtual SurfaceImpl *createOffscreenSurface(egl::Display *display, const egl::Config *config,
EGLClientBuffer shareHandle, EGLint width, EGLint height, EGLClientBuffer shareHandle, EGLint width, EGLint height,
EGLenum textureFormat, EGLenum textureTarget) = 0; EGLenum textureFormat, EGLenum textureTarget) = 0;
virtual std::vector<ConfigDesc> generateConfigs() const = 0;
virtual egl::Error restoreLostDevice() = 0; virtual egl::Error restoreLostDevice() = 0;
virtual bool isValidNativeWindow(EGLNativeWindowType window) const = 0; virtual bool isValidNativeWindow(EGLNativeWindowType window) const = 0;
......
...@@ -72,9 +72,6 @@ class Renderer ...@@ -72,9 +72,6 @@ class Renderer
virtual EGLint initialize() = 0; virtual EGLint initialize() = 0;
virtual int generateConfigs(ConfigDesc **configDescList) = 0;
virtual void deleteConfigs(ConfigDesc *configDescList) = 0;
virtual gl::Error flush() = 0; virtual gl::Error flush() = 0;
virtual gl::Error finish() = 0; virtual gl::Error finish() = 0;
......
...@@ -37,6 +37,11 @@ DisplayD3D::DisplayD3D(rx::RendererD3D *renderer) ...@@ -37,6 +37,11 @@ DisplayD3D::DisplayD3D(rx::RendererD3D *renderer)
{ {
} }
std::vector<ConfigDesc> DisplayD3D::generateConfigs() const
{
return mRenderer->generateConfigs();
}
egl::Error DisplayD3D::restoreLostDevice() egl::Error DisplayD3D::restoreLostDevice()
{ {
// Release surface resources to make the Reset() succeed // Release surface resources to make the Reset() succeed
......
...@@ -25,6 +25,9 @@ class DisplayD3D : public DisplayImpl ...@@ -25,6 +25,9 @@ class DisplayD3D : public DisplayImpl
SurfaceImpl *createOffscreenSurface(egl::Display *display, const egl::Config *config, SurfaceImpl *createOffscreenSurface(egl::Display *display, const egl::Config *config,
EGLClientBuffer shareHandle, EGLint width, EGLint height, EGLClientBuffer shareHandle, EGLint width, EGLint height,
EGLenum textureFormat, EGLenum textureTarget) override; EGLenum textureFormat, EGLenum textureTarget) override;
std::vector<ConfigDesc> generateConfigs() const override;
egl::Error restoreLostDevice() override; egl::Error restoreLostDevice() override;
bool isValidNativeWindow(EGLNativeWindowType window) const override; bool isValidNativeWindow(EGLNativeWindowType window) const override;
......
...@@ -51,6 +51,8 @@ class RendererD3D : public Renderer ...@@ -51,6 +51,8 @@ class RendererD3D : public Renderer
static RendererD3D *makeRendererD3D(Renderer *renderer); static RendererD3D *makeRendererD3D(Renderer *renderer);
virtual std::vector<ConfigDesc> generateConfigs() const = 0;
gl::Error drawArrays(const gl::Data &data, gl::Error drawArrays(const gl::Data &data,
GLenum mode, GLint first, GLenum mode, GLint first,
GLsizei count, GLsizei instances) override; GLsizei count, GLsizei instances) override;
......
...@@ -462,12 +462,12 @@ void Renderer11::initializeDevice() ...@@ -462,12 +462,12 @@ void Renderer11::initializeDevice()
markAllStateDirty(); markAllStateDirty();
} }
int Renderer11::generateConfigs(ConfigDesc **configDescList) std::vector<ConfigDesc> Renderer11::generateConfigs() const
{ {
std::vector<ConfigDesc> configs;
unsigned int numRenderFormats = ArraySize(RenderTargetFormats); unsigned int numRenderFormats = ArraySize(RenderTargetFormats);
unsigned int numDepthFormats = ArraySize(DepthStencilFormats); unsigned int numDepthFormats = ArraySize(DepthStencilFormats);
(*configDescList) = new ConfigDesc[numRenderFormats * numDepthFormats];
int numConfigs = 0;
for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++) for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++)
{ {
...@@ -492,18 +492,13 @@ int Renderer11::generateConfigs(ConfigDesc **configDescList) ...@@ -492,18 +492,13 @@ int Renderer11::generateConfigs(ConfigDesc **configDescList)
newConfig.es2Conformant = (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0); newConfig.es2Conformant = (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0);
newConfig.es3Capable = isES3Capable(); newConfig.es3Capable = isES3Capable();
(*configDescList)[numConfigs++] = newConfig; configs.push_back(newConfig);
} }
} }
} }
} }
return numConfigs; return configs;
}
void Renderer11::deleteConfigs(ConfigDesc *configDescList)
{
delete [] (configDescList);
} }
gl::Error Renderer11::flush() gl::Error Renderer11::flush()
......
...@@ -57,8 +57,7 @@ class Renderer11 : public RendererD3D ...@@ -57,8 +57,7 @@ class Renderer11 : public RendererD3D
virtual EGLint initialize(); virtual EGLint initialize();
virtual bool resetDevice(); virtual bool resetDevice();
virtual int generateConfigs(ConfigDesc **configDescList); std::vector<ConfigDesc> generateConfigs() const override;
virtual void deleteConfigs(ConfigDesc *configDescList);
gl::Error flush() override; gl::Error flush() override;
gl::Error finish() override; gl::Error finish() override;
......
...@@ -432,15 +432,15 @@ D3DPRESENT_PARAMETERS Renderer9::getDefaultPresentParameters() ...@@ -432,15 +432,15 @@ D3DPRESENT_PARAMETERS Renderer9::getDefaultPresentParameters()
return presentParameters; return presentParameters;
} }
int Renderer9::generateConfigs(ConfigDesc **configDescList) std::vector<ConfigDesc> Renderer9::generateConfigs() const
{ {
std::vector<ConfigDesc> configs;
D3DDISPLAYMODE currentDisplayMode; D3DDISPLAYMODE currentDisplayMode;
mD3d9->GetAdapterDisplayMode(mAdapter, &currentDisplayMode); mD3d9->GetAdapterDisplayMode(mAdapter, &currentDisplayMode);
unsigned int numRenderFormats = ArraySize(RenderTargetFormats); unsigned int numRenderFormats = ArraySize(RenderTargetFormats);
unsigned int numDepthFormats = ArraySize(DepthStencilFormats); unsigned int numDepthFormats = ArraySize(DepthStencilFormats);
(*configDescList) = new ConfigDesc[numRenderFormats * numDepthFormats];
int numConfigs = 0;
for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++) for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++)
{ {
...@@ -462,18 +462,13 @@ int Renderer9::generateConfigs(ConfigDesc **configDescList) ...@@ -462,18 +462,13 @@ int Renderer9::generateConfigs(ConfigDesc **configDescList)
newConfig.es2Conformant = true; newConfig.es2Conformant = true;
newConfig.es3Capable = false; newConfig.es3Capable = false;
(*configDescList)[numConfigs++] = newConfig; configs.push_back(newConfig);
} }
} }
} }
} }
return numConfigs; return configs;
}
void Renderer9::deleteConfigs(ConfigDesc *configDescList)
{
delete [] (configDescList);
} }
void Renderer9::startScene() void Renderer9::startScene()
......
...@@ -47,8 +47,7 @@ class Renderer9 : public RendererD3D ...@@ -47,8 +47,7 @@ class Renderer9 : public RendererD3D
virtual EGLint initialize(); virtual EGLint initialize();
virtual bool resetDevice(); virtual bool resetDevice();
virtual int generateConfigs(ConfigDesc **configDescList); std::vector<ConfigDesc> generateConfigs() const override;
virtual void deleteConfigs(ConfigDesc *configDescList);
void startScene(); void startScene();
void endScene(); void endScene();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment