GLES2SharingTest (EglTestContext& eglTestCtx, const char* name , const char* desc, const TestSpec& spec);
+ void init (void);
+
IterateResult iterate (void);
private:
, m_random (deStringHash(name))
, m_log (eglTestCtx.getTestContext().getLog())
{
+}
+
+void GLES2SharingTest::init (void)
+{
m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
}
, m_eglConfig (0)
, m_lastOperation (THREADOPERATIONID_NONE)
{
- m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
}
GLES2SharingRandomTest::~GLES2SharingRandomTest (void)
m_eglDisplay = eglu::getAndInitDisplay(m_eglTestCtx.getNativeDisplay());
m_eglConfig = eglu::chooseSingleConfig(egl, m_eglDisplay, attribList);
+ m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
+
// Check extensions
if (m_config.useFenceSync)
requireEGLExtension(egl, m_eglDisplay, "EGL_KHR_fence_sync");
m_threads.clear();
- m_eglTestCtx.getLibrary().terminate(m_eglDisplay);
+ if (m_eglDisplay != EGL_NO_DISPLAY)
+ {
+ m_eglTestCtx.getLibrary().terminate(m_eglDisplay);
+ m_eglDisplay = EGL_NO_DISPLAY;
+ }
TCU_CHECK(!m_requiresRestart);
}
, m_eglDisplay (EGL_NO_DISPLAY)
, m_eglConfig (0)
{
- m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
}
GLES2ThreadedSharingTest::~GLES2ThreadedSharingTest (void)
m_eglDisplay = eglu::getAndInitDisplay(m_eglTestCtx.getNativeDisplay());
m_eglConfig = eglu::chooseSingleConfig(egl, m_eglDisplay, attribList);
+ m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
+
// Check extensions
if (m_config.useFenceSync)
requireEGLExtension(egl, m_eglDisplay, "EGL_KHR_fence_sync");
delete m_threads[threadNdx];
m_threads.clear();
- m_eglTestCtx.getLibrary().terminate(m_eglDisplay);
+
+ if (m_eglDisplay != EGL_NO_DISPLAY)
+ {
+ m_eglTestCtx.getLibrary().terminate(m_eglDisplay);
+ m_eglDisplay = EGL_NO_DISPLAY;
+ }
TCU_CHECK(!m_requiresRestart);
}
destroyContexts();
destroySurfaces();
- m_eglTestCtx.getLibrary().terminate(m_display);
- m_display = EGL_NO_DISPLAY;
+ if (m_display != EGL_NO_DISPLAY)
+ {
+ m_eglTestCtx.getLibrary().terminate(m_display);
+ m_display = EGL_NO_DISPLAY;
+ }
}
void MakeCurrentPerfCase::chooseConfig (void)
void MultiThreadedTest::deinit (void)
{
- m_eglTestCtx.getLibrary().terminate(m_display);
- m_display = EGL_NO_DISPLAY;
+ if (m_display != EGL_NO_DISPLAY)
+ {
+ m_eglTestCtx.getLibrary().terminate(m_display);
+ m_display = EGL_NO_DISPLAY;
+ }
}
void MultiThreadedTest::barrier (TestThread& thread)
public:
SingleThreadRenderCase (EglTestContext& eglTestCtx, const char* name, const char* description, EGLint api, EGLint surfaceType, const eglu::FilterList& filters, int numContextsPerApi);
+ void init (void);
+
private:
virtual void executeForContexts (EGLDisplay display, EGLSurface surface, const Config& config, const std::vector<std::pair<EGLint, EGLContext> >& contexts);
SingleThreadRenderCase::SingleThreadRenderCase (EglTestContext& eglTestCtx, const char* name, const char* description, EGLint api, EGLint surfaceType, const eglu::FilterList& filters, int numContextsPerApi)
: MultiContextRenderCase(eglTestCtx, name, description, api, surfaceType, filters, numContextsPerApi)
{
+}
+
+void SingleThreadRenderCase::init (void)
+{
m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
}
public:
MultiThreadRenderCase (EglTestContext& eglTestCtx, const char* name, const char* description, EGLint api, EGLint surfaceType, const eglu::FilterList& filters, int numContextsPerApi);
+ void init (void);
+
private:
virtual void executeForContexts (EGLDisplay display, EGLSurface surface, const Config& config, const std::vector<std::pair<EGLint, EGLContext> >& contexts);
MultiThreadRenderCase::MultiThreadRenderCase (EglTestContext& eglTestCtx, const char* name, const char* description, EGLint api, EGLint surfaceType, const eglu::FilterList& filters, int numContextsPerApi)
: MultiContextRenderCase(eglTestCtx, name, description, api, surfaceType, filters, numContextsPerApi)
{
+}
+
+void MultiThreadRenderCase::init (void)
+{
m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
}
void SimpleConfigCase::deinit (void)
{
- m_eglTestCtx.getLibrary().terminate(m_display);
- m_display = EGL_NO_DISPLAY;
+ if (m_display != EGL_NO_DISPLAY)
+ {
+ m_eglTestCtx.getLibrary().terminate(m_display);
+ m_display = EGL_NO_DISPLAY;
+ }
m_configs.clear();
}
, m_eglContext (EGL_NO_CONTEXT)
, m_sync (EGL_NO_SYNC_KHR)
{
- m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
}
SyncTest::~SyncTest (void)
m_eglDisplay = eglu::getAndInitDisplay(m_eglTestCtx.getNativeDisplay());
m_eglConfig = eglu::chooseSingleConfig(egl, m_eglDisplay, displayAttribList);
+ m_eglTestCtx.initGLFunctions(&m_gl, glu::ApiType::es(2,0));
+
{
const Extension syncTypeExtension = getSyncTypeExtension(m_syncType);
requiredEGLExtensions(egl, m_eglDisplay, (Extension)(m_extensions | syncTypeExtension));