Commit 39fcf263 by Jamie Madill

Use both null and real renders for draw call perf.

Introduce a "null" GL renderer for this specific benchmark, which does not do any work on drawArrays and drawElements. We could use the same kind of trick for buffer and texture updates, if we need it. This gives us a good baseline for comparing GL and D3D perf. BUG=angleproject:1040 Change-Id: I4bf7c75df01932de45ddd0a4e42e8fc82f15e37e Reviewed-on: https://chromium-review.googlesource.com/276192Tested-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarKenneth Russell <kbr@chromium.org> Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
parent df785dfa
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
#include "libANGLE/AttributeMap.h" #include "libANGLE/AttributeMap.h"
#include "libANGLE/Context.h" #include "libANGLE/Context.h"
#include "libANGLE/Display.h"
#include "libANGLE/Surface.h" #include "libANGLE/Surface.h"
#include "libANGLE/renderer/gl/RendererGL.h" #include "libANGLE/renderer/gl/RendererGL.h"
#include "libANGLE/renderer/gl/SurfaceGL.h" #include "libANGLE/renderer/gl/SurfaceGL.h"
...@@ -30,7 +31,7 @@ DisplayGL::~DisplayGL() ...@@ -30,7 +31,7 @@ DisplayGL::~DisplayGL()
egl::Error DisplayGL::initialize(egl::Display *display) egl::Error DisplayGL::initialize(egl::Display *display)
{ {
mRenderer = new RendererGL(getFunctionsGL()); mRenderer = new RendererGL(getFunctionsGL(), display->getAttributeMap());
return egl::Error(EGL_SUCCESS); return egl::Error(EGL_SUCCESS);
} }
......
...@@ -8,7 +8,10 @@ ...@@ -8,7 +8,10 @@
#include "libANGLE/renderer/gl/RendererGL.h" #include "libANGLE/renderer/gl/RendererGL.h"
#include <EGL/eglext.h>
#include "common/debug.h" #include "common/debug.h"
#include "libANGLE/AttributeMap.h"
#include "libANGLE/Data.h" #include "libANGLE/Data.h"
#include "libANGLE/Surface.h" #include "libANGLE/Surface.h"
#include "libANGLE/renderer/gl/BufferGL.h" #include "libANGLE/renderer/gl/BufferGL.h"
...@@ -75,10 +78,11 @@ static void INTERNAL_GL_APIENTRY LogGLDebugMessage(GLenum source, GLenum type, G ...@@ -75,10 +78,11 @@ static void INTERNAL_GL_APIENTRY LogGLDebugMessage(GLenum source, GLenum type, G
namespace rx namespace rx
{ {
RendererGL::RendererGL(const FunctionsGL *functions) RendererGL::RendererGL(const FunctionsGL *functions, const egl::AttributeMap &attribMap)
: Renderer(), : Renderer(),
mFunctions(functions), mFunctions(functions),
mStateManager(nullptr) mStateManager(nullptr),
mSkipDrawCalls(false)
{ {
ASSERT(mFunctions); ASSERT(mFunctions);
mStateManager = new StateManagerGL(mFunctions, getRendererCaps()); mStateManager = new StateManagerGL(mFunctions, getRendererCaps());
...@@ -94,6 +98,12 @@ RendererGL::RendererGL(const FunctionsGL *functions) ...@@ -94,6 +98,12 @@ RendererGL::RendererGL(const FunctionsGL *functions)
mFunctions->debugMessageCallback(&LogGLDebugMessage, nullptr); mFunctions->debugMessageCallback(&LogGLDebugMessage, nullptr);
} }
#endif #endif
EGLint deviceType = attribMap.get(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE, EGL_NONE);
if (deviceType == EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE)
{
mSkipDrawCalls = true;
}
} }
RendererGL::~RendererGL() RendererGL::~RendererGL()
...@@ -122,7 +132,10 @@ gl::Error RendererGL::drawArrays(const gl::Data &data, GLenum mode, ...@@ -122,7 +132,10 @@ gl::Error RendererGL::drawArrays(const gl::Data &data, GLenum mode,
return error; return error;
} }
mFunctions->drawArrays(mode, first, count); if (!mSkipDrawCalls)
{
mFunctions->drawArrays(mode, first, count);
}
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
...@@ -143,7 +156,10 @@ gl::Error RendererGL::drawElements(const gl::Data &data, GLenum mode, GLsizei co ...@@ -143,7 +156,10 @@ gl::Error RendererGL::drawElements(const gl::Data &data, GLenum mode, GLsizei co
return error; return error;
} }
mFunctions->drawElements(mode, count, type, drawIndexPointer); if (!mSkipDrawCalls)
{
mFunctions->drawElements(mode, count, type, drawIndexPointer);
}
return gl::Error(GL_NO_ERROR); return gl::Error(GL_NO_ERROR);
} }
......
...@@ -19,7 +19,7 @@ class StateManagerGL; ...@@ -19,7 +19,7 @@ class StateManagerGL;
class RendererGL : public Renderer class RendererGL : public Renderer
{ {
public: public:
RendererGL(const FunctionsGL *functions); RendererGL(const FunctionsGL *functions, const egl::AttributeMap &attribMap);
~RendererGL() override; ~RendererGL() override;
gl::Error flush() override; gl::Error flush() override;
...@@ -76,6 +76,9 @@ class RendererGL : public Renderer ...@@ -76,6 +76,9 @@ class RendererGL : public Renderer
const FunctionsGL *mFunctions; const FunctionsGL *mFunctions;
StateManagerGL *mStateManager; StateManagerGL *mStateManager;
// For performance debugging
bool mSkipDrawCalls;
}; };
} }
......
...@@ -220,7 +220,11 @@ EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_disp ...@@ -220,7 +220,11 @@ EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_disp
case EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE: case EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE:
case EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE: case EGL_PLATFORM_ANGLE_DEVICE_TYPE_WARP_ANGLE:
case EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE: case EGL_PLATFORM_ANGLE_DEVICE_TYPE_REFERENCE_ANGLE:
deviceTypeSpecified = true;
break;
case EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE: case EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE:
// This is a hidden option, accepted by the OpenGL back-end.
break; break;
default: default:
...@@ -228,7 +232,6 @@ EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_disp ...@@ -228,7 +232,6 @@ EGLDisplay EGLAPIENTRY GetPlatformDisplayEXT(EGLenum platform, void *native_disp
return EGL_NO_DISPLAY; return EGL_NO_DISPLAY;
} }
deviceType = curAttrib[1]; deviceType = curAttrib[1];
deviceTypeSpecified = true;
break; break;
default: default:
......
...@@ -17,6 +17,18 @@ namespace ...@@ -17,6 +17,18 @@ namespace
struct BufferSubDataParams final : public RenderTestParams struct BufferSubDataParams final : public RenderTestParams
{ {
BufferSubDataParams()
{
// Common default values
glesMajorVersion = 2;
widowWidth = 512;
windowHeight = 512;
updateSize = 3000;
bufferSize = 40000000;
iterations = 2;
updateRate = 1;
}
std::string suffix() const override; std::string suffix() const override;
GLboolean vertexNormalized; GLboolean vertexNormalized;
...@@ -30,6 +42,12 @@ struct BufferSubDataParams final : public RenderTestParams ...@@ -30,6 +42,12 @@ struct BufferSubDataParams final : public RenderTestParams
unsigned int iterations; unsigned int iterations;
}; };
inline std::ostream &operator<<(std::ostream &os, const BufferSubDataParams &params)
{
os << params.suffix().substr(1);
return os;
}
class BufferSubDataBenchmark : public ANGLERenderTest, class BufferSubDataBenchmark : public ANGLERenderTest,
public ::testing::WithParamInterface<BufferSubDataParams> public ::testing::WithParamInterface<BufferSubDataParams>
{ {
...@@ -318,54 +336,33 @@ void BufferSubDataBenchmark::drawBenchmark() ...@@ -318,54 +336,33 @@ void BufferSubDataBenchmark::drawBenchmark()
BufferSubDataParams BufferUpdateD3D11Params() BufferSubDataParams BufferUpdateD3D11Params()
{ {
BufferSubDataParams params; BufferSubDataParams params;
params.glesMajorVersion = 2;
params.widowWidth = 512;
params.windowHeight = 512;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
params.vertexType = GL_FLOAT; params.vertexType = GL_FLOAT;
params.vertexComponentCount = 4; params.vertexComponentCount = 4;
params.vertexNormalized = GL_FALSE; params.vertexNormalized = GL_FALSE;
params.updateSize = 3000;
params.bufferSize = 40000000;
params.iterations = 2;
params.updateRate = 1;
return params; return params;
} }
BufferSubDataParams BufferUpdateD3D9Params() BufferSubDataParams BufferUpdateD3D9Params()
{ {
BufferSubDataParams params; BufferSubDataParams params;
params.glesMajorVersion = 2;
params.widowWidth = 512;
params.windowHeight = 512;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
params.vertexType = GL_FLOAT; params.vertexType = GL_FLOAT;
params.vertexComponentCount = 4; params.vertexComponentCount = 4;
params.vertexNormalized = GL_FALSE; params.vertexNormalized = GL_FALSE;
params.updateSize = 3000;
params.bufferSize = 40000000;
params.iterations = 2;
params.updateRate = 1;
return params; return params;
} }
BufferSubDataParams BufferUpdateOpenGLParams() BufferSubDataParams BufferUpdateOpenGLParams()
{ {
BufferSubDataParams params; BufferSubDataParams params;
params.glesMajorVersion = 2;
params.widowWidth = 512;
params.windowHeight = 512;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_DONT_CARE;
params.vertexType = GL_FLOAT; params.vertexType = GL_FLOAT;
params.vertexComponentCount = 4; params.vertexComponentCount = 4;
params.vertexNormalized = GL_FALSE; params.vertexNormalized = GL_FALSE;
params.updateSize = 3000;
params.bufferSize = 40000000;
params.iterations = 2;
params.updateRate = 1;
return params; return params;
} }
......
...@@ -15,8 +15,24 @@ ...@@ -15,8 +15,24 @@
namespace namespace
{ {
EGLint NullDeviceType(bool useNullDevice)
{
return useNullDevice ? EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE : EGL_DONT_CARE;
}
struct DrawCallPerfParams final : public RenderTestParams struct DrawCallPerfParams final : public RenderTestParams
{ {
// Common default options
DrawCallPerfParams()
{
glesMajorVersion = 2;
widowWidth = 256;
windowHeight = 256;
iterations = 50;
numTris = 1;
runTimeSeconds = 10.0;
}
std::string suffix() const override std::string suffix() const override
{ {
std::stringstream strstr; std::stringstream strstr;
...@@ -28,6 +44,11 @@ struct DrawCallPerfParams final : public RenderTestParams ...@@ -28,6 +44,11 @@ struct DrawCallPerfParams final : public RenderTestParams
strstr << "_validation_only"; strstr << "_validation_only";
} }
if (deviceType == EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE)
{
strstr << "_null";
}
return strstr.str(); return strstr.str();
} }
...@@ -36,6 +57,12 @@ struct DrawCallPerfParams final : public RenderTestParams ...@@ -36,6 +57,12 @@ struct DrawCallPerfParams final : public RenderTestParams
int numTris; int numTris;
}; };
inline std::ostream &operator<<(std::ostream &os, const DrawCallPerfParams &params)
{
os << params.suffix().substr(1);
return os;
}
class DrawCallPerfBenchmark : public ANGLERenderTest, class DrawCallPerfBenchmark : public ANGLERenderTest,
public ::testing::WithParamInterface<DrawCallPerfParams> public ::testing::WithParamInterface<DrawCallPerfParams>
{ {
...@@ -159,61 +186,38 @@ void DrawCallPerfBenchmark::drawBenchmark() ...@@ -159,61 +186,38 @@ void DrawCallPerfBenchmark::drawBenchmark()
ASSERT_GL_NO_ERROR(); ASSERT_GL_NO_ERROR();
} }
DrawCallPerfParams DrawCallPerfD3D11Params() DrawCallPerfParams DrawCallPerfD3D11Params(bool useNullDevice)
{ {
DrawCallPerfParams params; DrawCallPerfParams params;
params.glesMajorVersion = 2;
params.widowWidth = 256;
params.windowHeight = 256;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE; params.deviceType = NullDeviceType(useNullDevice);
params.iterations = 50;
params.numTris = 1;
params.runTimeSeconds = 10.0;
return params; return params;
} }
DrawCallPerfParams DrawCallPerfValidationOnly() DrawCallPerfParams DrawCallPerfD3D9Params(bool useNullDevice)
{ {
DrawCallPerfParams params; DrawCallPerfParams params;
params.glesMajorVersion = 2; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE;
params.widowWidth = 256; params.deviceType = NullDeviceType(useNullDevice);
params.windowHeight = 256;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.iterations = 100;
params.numTris = 0;
params.runTimeSeconds = 5.0;
return params; return params;
} }
DrawCallPerfParams DrawCallPerfD3D9Params() DrawCallPerfParams DrawCallPerfOpenGLParams(bool useNullDevice)
{ {
DrawCallPerfParams params; DrawCallPerfParams params;
params.glesMajorVersion = 2; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE;
params.widowWidth = 256; params.deviceType = NullDeviceType(useNullDevice);
params.windowHeight = 256;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.iterations = 50;
params.numTris = 1;
params.runTimeSeconds = 10.0;
return params; return params;
} }
DrawCallPerfParams DrawCallPerfOpenGLParams() DrawCallPerfParams DrawCallPerfValidationOnly()
{ {
DrawCallPerfParams params; DrawCallPerfParams params;
params.glesMajorVersion = 2; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE;
params.widowWidth = 256; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.windowHeight = 256; params.iterations = 100;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; params.numTris = 0;
// TODO(cwallez) we can't require a null device with OpenGL so params.runTimeSeconds = 5.0;
// the benchmark is unfair for OpenGL.
// params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_NULL_ANGLE;
params.iterations = 50;
params.numTris = 1;
params.runTimeSeconds = 10.0;
return params; return params;
} }
...@@ -223,7 +227,12 @@ TEST_P(DrawCallPerfBenchmark, Run) ...@@ -223,7 +227,12 @@ TEST_P(DrawCallPerfBenchmark, Run)
} }
ANGLE_INSTANTIATE_TEST(DrawCallPerfBenchmark, ANGLE_INSTANTIATE_TEST(DrawCallPerfBenchmark,
DrawCallPerfD3D11Params(), DrawCallPerfD3D9Params(), DrawCallPerfD3D11Params(false),
DrawCallPerfOpenGLParams(), DrawCallPerfValidationOnly()); DrawCallPerfD3D9Params(false),
DrawCallPerfOpenGLParams(false),
DrawCallPerfD3D11Params(true),
DrawCallPerfD3D9Params(true),
DrawCallPerfOpenGLParams(true),
DrawCallPerfValidationOnly());
} // namespace } // namespace
...@@ -19,6 +19,18 @@ namespace ...@@ -19,6 +19,18 @@ namespace
struct PointSpritesParams final : public RenderTestParams struct PointSpritesParams final : public RenderTestParams
{ {
PointSpritesParams()
{
// Common default params
glesMajorVersion = 2;
widowWidth = 1280;
windowHeight = 720;
iterations = 10;
count = 10;
size = 3.0f;
numVaryings = 3;
}
std::string suffix() const override; std::string suffix() const override;
unsigned int count; unsigned int count;
...@@ -29,6 +41,12 @@ struct PointSpritesParams final : public RenderTestParams ...@@ -29,6 +41,12 @@ struct PointSpritesParams final : public RenderTestParams
unsigned int iterations; unsigned int iterations;
}; };
inline std::ostream &operator<<(std::ostream &os, const PointSpritesParams &params)
{
os << params.suffix().substr(1);
return os;
}
class PointSpritesBenchmark : public ANGLERenderTest, class PointSpritesBenchmark : public ANGLERenderTest,
public ::testing::WithParamInterface<PointSpritesParams> public ::testing::WithParamInterface<PointSpritesParams>
{ {
...@@ -184,54 +202,24 @@ void PointSpritesBenchmark::drawBenchmark() ...@@ -184,54 +202,24 @@ void PointSpritesBenchmark::drawBenchmark()
PointSpritesParams D3D11Params() PointSpritesParams D3D11Params()
{ {
PointSpritesParams params; PointSpritesParams params;
params.glesMajorVersion = 2;
params.widowWidth = 1280;
params.windowHeight = 720;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
params.iterations = 10;
params.count = 10;
params.size = 3.0f;
params.numVaryings = 3;
return params; return params;
} }
PointSpritesParams D3D9Params() PointSpritesParams D3D9Params()
{ {
PointSpritesParams params; PointSpritesParams params;
params.glesMajorVersion = 2;
params.widowWidth = 1280;
params.windowHeight = 720;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
params.iterations = 10;
params.count = 10;
params.size = 3.0f;
params.numVaryings = 3;
return params; return params;
} }
PointSpritesParams OpenGLParams() PointSpritesParams OpenGLParams()
{ {
PointSpritesParams params; PointSpritesParams params;
params.glesMajorVersion = 2;
params.widowWidth = 1280;
params.windowHeight = 720;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_DONT_CARE;
params.iterations = 10;
params.count = 10;
params.size = 3.0f;
params.numVaryings = 3;
return params; return params;
} }
......
...@@ -17,6 +17,20 @@ namespace ...@@ -17,6 +17,20 @@ namespace
struct TexSubImageParams final : public RenderTestParams struct TexSubImageParams final : public RenderTestParams
{ {
TexSubImageParams()
{
// Common default parameters
glesMajorVersion = 2;
widowWidth = 512;
windowHeight = 512;
imageWidth = 1024;
imageHeight = 1024;
subImageWidth = 64;
subImageHeight = 64;
iterations = 3;
}
std::string suffix() const override; std::string suffix() const override;
// Static parameters // Static parameters
...@@ -27,6 +41,12 @@ struct TexSubImageParams final : public RenderTestParams ...@@ -27,6 +41,12 @@ struct TexSubImageParams final : public RenderTestParams
unsigned int iterations; unsigned int iterations;
}; };
inline std::ostream &operator<<(std::ostream &os, const TexSubImageParams &params)
{
os << params.suffix().substr(1);
return os;
}
class TexSubImageBenchmark : public ANGLERenderTest, class TexSubImageBenchmark : public ANGLERenderTest,
public ::testing::WithParamInterface<TexSubImageParams> public ::testing::WithParamInterface<TexSubImageParams>
{ {
...@@ -251,57 +271,24 @@ void TexSubImageBenchmark::drawBenchmark() ...@@ -251,57 +271,24 @@ void TexSubImageBenchmark::drawBenchmark()
TexSubImageParams D3D11Params() TexSubImageParams D3D11Params()
{ {
TexSubImageParams params; TexSubImageParams params;
params.glesMajorVersion = 2;
params.widowWidth = 512;
params.windowHeight = 512;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
params.imageWidth = 1024;
params.imageHeight = 1024;
params.subImageWidth = 64;
params.subImageHeight = 64;
params.iterations = 3;
return params; return params;
} }
TexSubImageParams D3D9Params() TexSubImageParams D3D9Params()
{ {
TexSubImageParams params; TexSubImageParams params;
params.glesMajorVersion = 2;
params.widowWidth = 512;
params.windowHeight = 512;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
params.imageWidth = 1024;
params.imageHeight = 1024;
params.subImageWidth = 64;
params.subImageHeight = 64;
params.iterations = 3;
return params; return params;
} }
TexSubImageParams OpenGLParams() TexSubImageParams OpenGLParams()
{ {
TexSubImageParams params; TexSubImageParams params;
params.glesMajorVersion = 2;
params.widowWidth = 512;
params.windowHeight = 512;
params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE; params.requestedRenderer = EGL_PLATFORM_ANGLE_TYPE_OPENGL_ANGLE;
params.deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE; params.deviceType = EGL_DONT_CARE;
params.imageWidth = 1024;
params.imageHeight = 1024;
params.subImageWidth = 64;
params.subImageHeight = 64;
params.iterations = 3;
return params; return params;
} }
......
...@@ -22,7 +22,7 @@ EGLPlatformParameters::EGLPlatformParameters() ...@@ -22,7 +22,7 @@ EGLPlatformParameters::EGLPlatformParameters()
: renderer(EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE), : renderer(EGL_PLATFORM_ANGLE_TYPE_DEFAULT_ANGLE),
majorVersion(EGL_DONT_CARE), majorVersion(EGL_DONT_CARE),
minorVersion(EGL_DONT_CARE), minorVersion(EGL_DONT_CARE),
deviceType(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE) deviceType(EGL_DONT_CARE)
{ {
} }
...@@ -30,8 +30,13 @@ EGLPlatformParameters::EGLPlatformParameters(EGLint renderer) ...@@ -30,8 +30,13 @@ EGLPlatformParameters::EGLPlatformParameters(EGLint renderer)
: renderer(renderer), : renderer(renderer),
majorVersion(EGL_DONT_CARE), majorVersion(EGL_DONT_CARE),
minorVersion(EGL_DONT_CARE), minorVersion(EGL_DONT_CARE),
deviceType(EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE) deviceType(EGL_DONT_CARE)
{ {
if (renderer == EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE ||
renderer == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE)
{
deviceType = EGL_PLATFORM_ANGLE_DEVICE_TYPE_HARDWARE_ANGLE;
}
} }
EGLPlatformParameters::EGLPlatformParameters(EGLint renderer, EGLint majorVersion, EGLint minorVersion, EGLint useWarp) EGLPlatformParameters::EGLPlatformParameters(EGLint renderer, EGLint majorVersion, EGLint minorVersion, EGLint useWarp)
...@@ -108,7 +113,7 @@ bool EGLWindow::initializeGL(OSWindow *osWindow) ...@@ -108,7 +113,7 @@ bool EGLWindow::initializeGL(OSWindow *osWindow)
displayAttributes.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE); displayAttributes.push_back(EGL_PLATFORM_ANGLE_MAX_VERSION_MINOR_ANGLE);
displayAttributes.push_back(mPlatform.minorVersion); displayAttributes.push_back(mPlatform.minorVersion);
if (mPlatform.renderer == EGL_PLATFORM_ANGLE_TYPE_D3D9_ANGLE || mPlatform.renderer == EGL_PLATFORM_ANGLE_TYPE_D3D11_ANGLE) if (mPlatform.deviceType != EGL_DONT_CARE)
{ {
displayAttributes.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE); displayAttributes.push_back(EGL_PLATFORM_ANGLE_DEVICE_TYPE_ANGLE);
displayAttributes.push_back(mPlatform.deviceType); displayAttributes.push_back(mPlatform.deviceType);
......
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