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()
EGLint maxSwapInterval = mRenderer->getMaxSwapInterval();
EGLint maxTextureSize = mRenderer->getRendererCaps().max2DTextureSize;
rx::ConfigDesc *descList;
int numConfigs = mRenderer->generateConfigs(&descList);
ConfigSet configSet;
std::vector<rx::ConfigDesc> descList = mImplementation->generateConfigs();
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);
}
......@@ -224,9 +223,6 @@ Error Display::initialize()
mConfigSet.mSet.insert(configuration);
}
mRenderer->deleteConfigs(descList);
descList = NULL;
if (!isInitialized())
{
terminate();
......
......@@ -14,6 +14,7 @@
#include "libANGLE/Error.h"
#include <set>
#include <vector>
namespace egl
{
......@@ -25,6 +26,7 @@ class Surface;
namespace rx
{
class SurfaceImpl;
struct ConfigDesc;
class DisplayImpl
{
......@@ -38,6 +40,9 @@ class DisplayImpl
virtual SurfaceImpl *createOffscreenSurface(egl::Display *display, const egl::Config *config,
EGLClientBuffer shareHandle, EGLint width, EGLint height,
EGLenum textureFormat, EGLenum textureTarget) = 0;
virtual std::vector<ConfigDesc> generateConfigs() const = 0;
virtual egl::Error restoreLostDevice() = 0;
virtual bool isValidNativeWindow(EGLNativeWindowType window) const = 0;
......
......@@ -72,9 +72,6 @@ class Renderer
virtual EGLint initialize() = 0;
virtual int generateConfigs(ConfigDesc **configDescList) = 0;
virtual void deleteConfigs(ConfigDesc *configDescList) = 0;
virtual gl::Error flush() = 0;
virtual gl::Error finish() = 0;
......
......@@ -37,6 +37,11 @@ DisplayD3D::DisplayD3D(rx::RendererD3D *renderer)
{
}
std::vector<ConfigDesc> DisplayD3D::generateConfigs() const
{
return mRenderer->generateConfigs();
}
egl::Error DisplayD3D::restoreLostDevice()
{
// Release surface resources to make the Reset() succeed
......
......@@ -25,6 +25,9 @@ class DisplayD3D : public DisplayImpl
SurfaceImpl *createOffscreenSurface(egl::Display *display, const egl::Config *config,
EGLClientBuffer shareHandle, EGLint width, EGLint height,
EGLenum textureFormat, EGLenum textureTarget) override;
std::vector<ConfigDesc> generateConfigs() const override;
egl::Error restoreLostDevice() override;
bool isValidNativeWindow(EGLNativeWindowType window) const override;
......
......@@ -51,6 +51,8 @@ class RendererD3D : public Renderer
static RendererD3D *makeRendererD3D(Renderer *renderer);
virtual std::vector<ConfigDesc> generateConfigs() const = 0;
gl::Error drawArrays(const gl::Data &data,
GLenum mode, GLint first,
GLsizei count, GLsizei instances) override;
......
......@@ -462,12 +462,12 @@ void Renderer11::initializeDevice()
markAllStateDirty();
}
int Renderer11::generateConfigs(ConfigDesc **configDescList)
std::vector<ConfigDesc> Renderer11::generateConfigs() const
{
std::vector<ConfigDesc> configs;
unsigned int numRenderFormats = ArraySize(RenderTargetFormats);
unsigned int numDepthFormats = ArraySize(DepthStencilFormats);
(*configDescList) = new ConfigDesc[numRenderFormats * numDepthFormats];
int numConfigs = 0;
for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++)
{
......@@ -492,18 +492,13 @@ int Renderer11::generateConfigs(ConfigDesc **configDescList)
newConfig.es2Conformant = (mFeatureLevel >= D3D_FEATURE_LEVEL_10_0);
newConfig.es3Capable = isES3Capable();
(*configDescList)[numConfigs++] = newConfig;
configs.push_back(newConfig);
}
}
}
}
return numConfigs;
}
void Renderer11::deleteConfigs(ConfigDesc *configDescList)
{
delete [] (configDescList);
return configs;
}
gl::Error Renderer11::flush()
......
......@@ -57,8 +57,7 @@ class Renderer11 : public RendererD3D
virtual EGLint initialize();
virtual bool resetDevice();
virtual int generateConfigs(ConfigDesc **configDescList);
virtual void deleteConfigs(ConfigDesc *configDescList);
std::vector<ConfigDesc> generateConfigs() const override;
gl::Error flush() override;
gl::Error finish() override;
......
......@@ -432,15 +432,15 @@ D3DPRESENT_PARAMETERS Renderer9::getDefaultPresentParameters()
return presentParameters;
}
int Renderer9::generateConfigs(ConfigDesc **configDescList)
std::vector<ConfigDesc> Renderer9::generateConfigs() const
{
std::vector<ConfigDesc> configs;
D3DDISPLAYMODE currentDisplayMode;
mD3d9->GetAdapterDisplayMode(mAdapter, &currentDisplayMode);
unsigned int numRenderFormats = ArraySize(RenderTargetFormats);
unsigned int numDepthFormats = ArraySize(DepthStencilFormats);
(*configDescList) = new ConfigDesc[numRenderFormats * numDepthFormats];
int numConfigs = 0;
for (unsigned int formatIndex = 0; formatIndex < numRenderFormats; formatIndex++)
{
......@@ -462,18 +462,13 @@ int Renderer9::generateConfigs(ConfigDesc **configDescList)
newConfig.es2Conformant = true;
newConfig.es3Capable = false;
(*configDescList)[numConfigs++] = newConfig;
configs.push_back(newConfig);
}
}
}
}
return numConfigs;
}
void Renderer9::deleteConfigs(ConfigDesc *configDescList)
{
delete [] (configDescList);
return configs;
}
void Renderer9::startScene()
......
......@@ -47,8 +47,7 @@ class Renderer9 : public RendererD3D
virtual EGLint initialize();
virtual bool resetDevice();
virtual int generateConfigs(ConfigDesc **configDescList);
virtual void deleteConfigs(ConfigDesc *configDescList);
std::vector<ConfigDesc> generateConfigs() const override;
void startScene();
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