148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos/*------------------------------------------------------------------------- 248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * OpenGL Conformance Test Suite 348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * ----------------------------- 448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * 548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * Copyright (c) 2016 Google Inc. 648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * Copyright (c) 2016 The Khronos Group Inc. 748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * 848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * Licensed under the Apache License, Version 2.0 (the "License"); 948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * you may not use this file except in compliance with the License. 1048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * You may obtain a copy of the License at 1148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * 1248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * http://www.apache.org/licenses/LICENSE-2.0 1348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * 1448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * Unless required by applicable law or agreed to in writing, software 1548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * distributed under the License is distributed on an "AS IS" BASIS, 1648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * See the License for the specific language governing permissions and 1848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * limitations under the License. 1948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * 2048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos *//*! 2148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * \file 2248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos * \brief 2348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos *//*--------------------------------------------------------------------*/ 2448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 2548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos#include "tcuNullWSPlatform.hpp" 2648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos#include "eglwEnums.hpp" 2748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos#include "eglwLibrary.hpp" 2848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos#include "egluGLContextFactory.hpp" 2948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 3048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosnamespace tcu 3148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 3248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosnamespace nullws 3348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 3448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 3548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosclass Window: public eglu::NativeWindow 3648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 3748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulospublic: 3848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos static const Capability CAPABILITIES = CAPABILITY_CREATE_SURFACE_LEGACY; 3948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 4048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos Window(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) 4148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos : NativeWindow(CAPABILITIES) 4248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 4348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 4448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 4548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglw::EGLNativeWindowType getLegacyNative () 4648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 4748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return DE_NULL; 4848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 4948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos}; 5048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 5148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosclass WindowFactory: public eglu::NativeWindowFactory 5248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 5348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulospublic: 5448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos WindowFactory() 5548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos : NativeWindowFactory("nullws", "NullWS Window", Window::CAPABILITIES) 5648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 5748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 5848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 5948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglu::NativeWindow* createWindow(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) const 6048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 6148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return new Window(nativeDisplay, params); 6248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 6348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos}; 6448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 6548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosclass Pixmap: public eglu::NativePixmap 6648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 6748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulospublic: 6848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos static const Capability CAPABILITIES = CAPABILITY_CREATE_SURFACE_LEGACY; 6948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 7048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos Pixmap() 7148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos : NativePixmap(CAPABILITIES) 7248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 7348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 7448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 7548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglw::EGLNativePixmapType getLegacyNative () 7648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 7748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return DE_NULL; 7848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 7948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos}; 8048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 8148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosclass PixmapFactory: public eglu::NativePixmapFactory 8248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 8348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulospublic: 8448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos PixmapFactory() 8548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos : NativePixmapFactory("nullws", "NullWS Pixmap", Pixmap::CAPABILITIES) 8648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 8748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 8848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 8948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglu::NativePixmap* createPixmap (eglu::NativeDisplay*, int, int) const 9048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 9148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return new Pixmap(); 9248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 9348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos}; 9448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 9548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosclass Display: public eglu::NativeDisplay 9648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 9748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulospublic: 9848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos static const Capability CAPABILITIES = CAPABILITY_GET_DISPLAY_LEGACY; 9948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 10048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos Display() 10148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos : eglu::NativeDisplay(CAPABILITIES) 10248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 10348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 10448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 10548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglw::EGLNativeDisplayType getLegacyNative() 10648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 10748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return EGL_DEFAULT_DISPLAY; 10848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 10948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 11048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos const eglw::Library& getLibrary() const 11148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 11248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return m_library; 11348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 11448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 11548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosprivate: 11648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglw::DefaultLibrary m_library; 11748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos}; 11848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 11948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 12048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulosclass DisplayFactory: public eglu::NativeDisplayFactory 12148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 12248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulospublic: 12348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos DisplayFactory() 12448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos : eglu::NativeDisplayFactory ("nullws", "NullWS Display", Display::CAPABILITIES) 12548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 12648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos m_nativeWindowRegistry.registerFactory(new WindowFactory()); 12748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos m_nativePixmapRegistry.registerFactory(new PixmapFactory()); 12848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 12948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 13048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos eglu::NativeDisplay* createDisplay (const eglw::EGLAttrib* attribList = DE_NULL) const 13148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos { 13248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return new Display(); 13348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos } 13448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos}; 13548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 13648087f5f0eb08759ee763f98daf3b34becb74559Pyry HaulosPlatform::Platform () 13748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 13848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos m_nativeDisplayFactoryRegistry.registerFactory(new DisplayFactory()); 13948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry)); 14048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos} 14148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 14248087f5f0eb08759ee763f98daf3b34becb74559Pyry HaulosPlatform::~Platform () 14348087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 14448087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos} 14548087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 14648087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos} // nullws 14748087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos} // tcu 14848087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos 14948087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulostcu::Platform* createPlatform () 15048087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos{ 15148087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos return new tcu::nullws::Platform(); 15248087f5f0eb08759ee763f98daf3b34becb74559Pyry Haulos} 153