Fix samples' arguments to SampleApplication

Two new parameters were added in
https://chromium-review.googlesource.com/c/angle/angle/+/3664916 with
default values, but not all samples were updated to accomodate them.  As
a result, many samples passed in the major version for client type and
thus couldn't run.

This change introduces an enum class for the client type + version to
make sure such a mistake is impossible.

Bug: angleproject:7360
Change-Id: I450edee612d08a7b67530b61615f63268fefb200
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/3748413
Auto-Submit: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Lingfeng Yang <lfy@google.com>
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
This commit is contained in:
Shahbaz Youssefi
2022-07-06 11:46:17 -04:00
committed by Angle LUCI CQ
parent 007a4f061d
commit 5a65a2b1c6
17 changed files with 71 additions and 29 deletions

View File

@@ -18,8 +18,7 @@ class CaptureReplaySample : public SampleApplication
: SampleApplication("CaptureReplaySample",
argc,
argv,
3,
0,
ClientType::ES3_0,
traceInfo.drawSurfaceWidth,
traceInfo.drawSurfaceHeight),
mTraceInfo(traceInfo)

View File

@@ -25,7 +25,7 @@ class GLES1DrawTextureSample : public SampleApplication
{
public:
GLES1DrawTextureSample(int argc, char **argv)
: SampleApplication("GLES1DrawTexture", argc, argv, 1, 0, 1280, 800)
: SampleApplication("GLES1DrawTexture", argc, argv, ClientType::ES1, 1280, 800)
{}
bool initialize() override

View File

@@ -23,7 +23,7 @@ class FlatShadingSample : public SampleApplication
{
public:
FlatShadingSample(int argc, char **argv)
: SampleApplication("FlatShadingSample", argc, argv, 1, 0)
: SampleApplication("FlatShadingSample", argc, argv, ClientType::ES1)
{}
bool initialize() override

View File

@@ -20,7 +20,7 @@ class GLES1HelloTriangleSample : public SampleApplication
{
public:
GLES1HelloTriangleSample(int argc, char **argv)
: SampleApplication("GLES1HelloTriangle", argc, argv, 1, 0)
: SampleApplication("GLES1HelloTriangle", argc, argv, ClientType::ES1)
{}
bool initialize() override

View File

@@ -23,7 +23,7 @@ class SimpleLightingSample : public SampleApplication
{
public:
SimpleLightingSample(int argc, char **argv)
: SampleApplication("SimpleLightingSample", argc, argv, 1, 0)
: SampleApplication("SimpleLightingSample", argc, argv, ClientType::ES1)
{}
bool initialize() override

View File

@@ -23,7 +23,7 @@ class GLES1SimpleTexture2DSample : public SampleApplication
{
public:
GLES1SimpleTexture2DSample(int argc, char **argv)
: SampleApplication("GLES1SimpleTexture2D", argc, argv, 1, 0)
: SampleApplication("GLES1SimpleTexture2D", argc, argv, ClientType::ES1)
{}
bool initialize() override

View File

@@ -20,9 +20,7 @@
class HelloTriangleSample : public SampleApplication
{
public:
HelloTriangleSample(int argc, char **argv)
: SampleApplication("HelloTriangle", argc, argv, 2, 0)
{}
HelloTriangleSample(int argc, char **argv) : SampleApplication("HelloTriangle", argc, argv) {}
bool initialize() override
{

View File

@@ -20,7 +20,7 @@ class MultiWindowSample : public SampleApplication
{
public:
MultiWindowSample(int argc, char **argv)
: SampleApplication("MultiWindow", argc, argv, 2, 0, 256, 256)
: SampleApplication("MultiWindow", argc, argv, ClientType::ES2, 256, 256)
{}
bool initialize() override

View File

@@ -107,7 +107,12 @@ class MultipleContextsSample : public SampleApplication
{
public:
MultipleContextsSample(int argc, char **argv)
: SampleApplication("MultipleContexts", argc, argv, 3, 0, kWindowWidth, kWindowHeight)
: SampleApplication("MultipleContexts",
argc,
argv,
ClientType::ES3_0,
kWindowWidth,
kWindowHeight)
{}
bool initialize() override

View File

@@ -44,7 +44,7 @@ class MultiviewSample : public SampleApplication
{
public:
MultiviewSample(int argc, char **argv)
: SampleApplication("Multiview", argc, argv, 3, 0),
: SampleApplication("Multiview", argc, argv, ClientType::ES3_0),
mMultiviewProgram(0),
mMultiviewPersperiveUniformLoc(-1),
mMultiviewLeftEyeCameraUniformLoc(-1),

View File

@@ -77,10 +77,7 @@ bool IsGLExtensionEnabled(const std::string &extName)
SampleApplication::SampleApplication(std::string name,
int argc,
char **argv,
EGLenum clientType,
EGLint glMajorVersion,
EGLint glMinorVersion,
EGLint profileMask,
ClientType clientType,
uint32_t width,
uint32_t height)
: mName(std::move(name)),
@@ -111,17 +108,52 @@ SampleApplication::SampleApplication(std::string name,
}
}
EGLenum eglClientType = EGL_OPENGL_ES_API;
EGLint glMajorVersion = 2;
EGLint glMinorVersion = 0;
EGLint profileMask = 0;
switch (clientType)
{
case ClientType::ES1:
glMajorVersion = 1;
break;
case ClientType::ES2:
break;
case ClientType::ES3_0:
glMajorVersion = 3;
break;
case ClientType::ES3_1:
glMajorVersion = 3;
glMinorVersion = 1;
break;
case ClientType::GL3_3_CORE:
eglClientType = EGL_OPENGL_API;
glMajorVersion = 3;
glMinorVersion = 3;
profileMask = EGL_CONTEXT_OPENGL_CORE_PROFILE_BIT;
break;
case ClientType::GL3_3_COMPATIBILITY:
eglClientType = EGL_OPENGL_API;
glMajorVersion = 3;
glMinorVersion = 3;
profileMask = EGL_CONTEXT_OPENGL_COMPATIBILITY_PROFILE_BIT;
break;
default:
UNREACHABLE();
}
mOSWindow = OSWindow::New();
// Load EGL library so we can initialize the display.
if (useNativeGL)
{
#if defined(ANGLE_PLATFORM_WINDOWS)
mGLWindow = WGLWindow::New(clientType, glMajorVersion, glMinorVersion, profileMask);
mGLWindow = WGLWindow::New(eglClientType, glMajorVersion, glMinorVersion, profileMask);
mEntryPointsLib.reset(angle::OpenSharedLibrary("opengl32", angle::SearchType::SystemDir));
mDriverType = angle::GLESDriverType::SystemWGL;
#else
mGLWindow = EGLWindow::New(clientType, glMajorVersion, glMinorVersion, profileMask);
mGLWindow = EGLWindow::New(eglClientType, glMajorVersion, glMinorVersion, profileMask);
mEntryPointsLib.reset(angle::OpenSharedLibraryWithExtension(
angle::GetNativeEGLLibraryNameWithExtension(), angle::SearchType::SystemDir));
mDriverType = angle::GLESDriverType::SystemEGL;
@@ -130,7 +162,7 @@ SampleApplication::SampleApplication(std::string name,
else
{
mGLWindow = mEGLWindow =
EGLWindow::New(clientType, glMajorVersion, glMinorVersion, profileMask);
EGLWindow::New(eglClientType, glMajorVersion, glMinorVersion, profileMask);
mEntryPointsLib.reset(
angle::OpenSharedLibrary(ANGLE_EGL_LIBRARY_NAME, angle::SearchType::ModuleDir));
}

View File

@@ -28,16 +28,24 @@ class Library;
bool IsGLExtensionEnabled(const std::string &extName);
enum class ClientType
{
// Client types used by the samples. Add as needed.
ES1,
ES2,
ES3_0,
ES3_1,
GL3_3_CORE,
GL3_3_COMPATIBILITY,
};
class SampleApplication
{
public:
SampleApplication(std::string name,
int argc,
char **argv,
EGLenum clientType = EGL_OPENGL_ES_API,
EGLint glMajorVersion = 2,
EGLint glMinorVersion = 0,
EGLint profileMask = 0,
ClientType clientType = ClientType::ES2,
uint32_t width = 1280,
uint32_t height = 720);
virtual ~SampleApplication();

View File

@@ -48,7 +48,7 @@ class TexRedefBenchSample : public SampleApplication
{
public:
TexRedefBenchSample(int argc, char **argv)
: SampleApplication("Microbench", argc, argv, 2, 0, 1280, 1280),
: SampleApplication("Microbench", argc, argv, ClientType::ES2, 1280, 1280),
mPixelsResize(nullptr),
mPixelsNewTex(nullptr),
mTimeFrame(false),

View File

@@ -26,7 +26,7 @@ class BufferStorageSample : public SampleApplication
{
public:
BufferStorageSample(int argc, char **argv)
: SampleApplication("GLES3.1 Buffer Storage", argc, argv, 3, 1)
: SampleApplication("GLES3.1 Buffer Storage", argc, argv, ClientType::ES3_1)
{}
bool initialize() override

View File

@@ -16,7 +16,7 @@ class GLES1TorusLightingSample : public SampleApplication
{
public:
GLES1TorusLightingSample(int argc, char **argv)
: SampleApplication("GLES1 Torus Lighting", argc, argv, 1, 0)
: SampleApplication("GLES1 Torus Lighting", argc, argv, ClientType::ES1)
{}
bool initialize() override

View File

@@ -19,7 +19,7 @@ class GLES2TorusLightingSample : public SampleApplication
{
public:
GLES2TorusLightingSample(int argc, char **argv)
: SampleApplication("GLES2 Torus Lighting", argc, argv, 2, 0)
: SampleApplication("GLES2 Torus Lighting", argc, argv)
{}
bool initialize() override

View File

@@ -29,7 +29,7 @@ class TriangleFanBenchSample : public SampleApplication
{
public:
TriangleFanBenchSample(int argc, char **argv)
: SampleApplication("Microbench", argc, argv, 2, 0, 1280, 1280), mFrameCount(0)
: SampleApplication("Microbench", argc, argv, ClientType::ES2, 1280, 1280), mFrameCount(0)
{}
void createVertexBuffers()