1e5c31af7Sopenharmony_ci/*------------------------------------------------------------------------- 2e5c31af7Sopenharmony_ci * OpenGL Conformance Test Suite 3e5c31af7Sopenharmony_ci * ----------------------------- 4e5c31af7Sopenharmony_ci * 5e5c31af7Sopenharmony_ci * Copyright (c) 2016 Google Inc. 6e5c31af7Sopenharmony_ci * Copyright (c) 2016 The Khronos Group Inc. 7e5c31af7Sopenharmony_ci * 8e5c31af7Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 9e5c31af7Sopenharmony_ci * you may not use this file except in compliance with the License. 10e5c31af7Sopenharmony_ci * You may obtain a copy of the License at 11e5c31af7Sopenharmony_ci * 12e5c31af7Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 13e5c31af7Sopenharmony_ci * 14e5c31af7Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 15e5c31af7Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 16e5c31af7Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17e5c31af7Sopenharmony_ci * See the License for the specific language governing permissions and 18e5c31af7Sopenharmony_ci * limitations under the License. 19e5c31af7Sopenharmony_ci * 20e5c31af7Sopenharmony_ci *//*! 21e5c31af7Sopenharmony_ci * \file 22e5c31af7Sopenharmony_ci * \brief 23e5c31af7Sopenharmony_ci *//*--------------------------------------------------------------------*/ 24e5c31af7Sopenharmony_ci 25e5c31af7Sopenharmony_ci#include "tcuNullWSPlatform.hpp" 26e5c31af7Sopenharmony_ci#include "eglwEnums.hpp" 27e5c31af7Sopenharmony_ci#include "eglwLibrary.hpp" 28e5c31af7Sopenharmony_ci#include "egluGLContextFactory.hpp" 29e5c31af7Sopenharmony_ci 30e5c31af7Sopenharmony_cinamespace tcu 31e5c31af7Sopenharmony_ci{ 32e5c31af7Sopenharmony_cinamespace nullws 33e5c31af7Sopenharmony_ci{ 34e5c31af7Sopenharmony_ci 35e5c31af7Sopenharmony_ciclass Window: public eglu::NativeWindow 36e5c31af7Sopenharmony_ci{ 37e5c31af7Sopenharmony_cipublic: 38e5c31af7Sopenharmony_ci static const Capability CAPABILITIES = CAPABILITY_CREATE_SURFACE_LEGACY; 39e5c31af7Sopenharmony_ci 40e5c31af7Sopenharmony_ci Window(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) 41e5c31af7Sopenharmony_ci : NativeWindow(CAPABILITIES) 42e5c31af7Sopenharmony_ci { 43e5c31af7Sopenharmony_ci } 44e5c31af7Sopenharmony_ci 45e5c31af7Sopenharmony_ci eglw::EGLNativeWindowType getLegacyNative () 46e5c31af7Sopenharmony_ci { 47e5c31af7Sopenharmony_ci return DE_NULL; 48e5c31af7Sopenharmony_ci } 49e5c31af7Sopenharmony_ci}; 50e5c31af7Sopenharmony_ci 51e5c31af7Sopenharmony_ciclass WindowFactory: public eglu::NativeWindowFactory 52e5c31af7Sopenharmony_ci{ 53e5c31af7Sopenharmony_cipublic: 54e5c31af7Sopenharmony_ci WindowFactory() 55e5c31af7Sopenharmony_ci : NativeWindowFactory("nullws", "NullWS Window", Window::CAPABILITIES) 56e5c31af7Sopenharmony_ci { 57e5c31af7Sopenharmony_ci } 58e5c31af7Sopenharmony_ci 59e5c31af7Sopenharmony_ci eglu::NativeWindow* createWindow(eglu::NativeDisplay* nativeDisplay, const eglu::WindowParams& params) const 60e5c31af7Sopenharmony_ci { 61e5c31af7Sopenharmony_ci return new Window(nativeDisplay, params); 62e5c31af7Sopenharmony_ci } 63e5c31af7Sopenharmony_ci}; 64e5c31af7Sopenharmony_ci 65e5c31af7Sopenharmony_ciclass Pixmap: public eglu::NativePixmap 66e5c31af7Sopenharmony_ci{ 67e5c31af7Sopenharmony_cipublic: 68e5c31af7Sopenharmony_ci static const Capability CAPABILITIES = CAPABILITY_CREATE_SURFACE_LEGACY; 69e5c31af7Sopenharmony_ci 70e5c31af7Sopenharmony_ci Pixmap() 71e5c31af7Sopenharmony_ci : NativePixmap(CAPABILITIES) 72e5c31af7Sopenharmony_ci { 73e5c31af7Sopenharmony_ci } 74e5c31af7Sopenharmony_ci 75e5c31af7Sopenharmony_ci eglw::EGLNativePixmapType getLegacyNative () 76e5c31af7Sopenharmony_ci { 77e5c31af7Sopenharmony_ci return DE_NULL; 78e5c31af7Sopenharmony_ci } 79e5c31af7Sopenharmony_ci}; 80e5c31af7Sopenharmony_ci 81e5c31af7Sopenharmony_ciclass PixmapFactory: public eglu::NativePixmapFactory 82e5c31af7Sopenharmony_ci{ 83e5c31af7Sopenharmony_cipublic: 84e5c31af7Sopenharmony_ci PixmapFactory() 85e5c31af7Sopenharmony_ci : NativePixmapFactory("nullws", "NullWS Pixmap", Pixmap::CAPABILITIES) 86e5c31af7Sopenharmony_ci { 87e5c31af7Sopenharmony_ci } 88e5c31af7Sopenharmony_ci 89e5c31af7Sopenharmony_ci eglu::NativePixmap* createPixmap (eglu::NativeDisplay*, int, int) const 90e5c31af7Sopenharmony_ci { 91e5c31af7Sopenharmony_ci return new Pixmap(); 92e5c31af7Sopenharmony_ci } 93e5c31af7Sopenharmony_ci}; 94e5c31af7Sopenharmony_ci 95e5c31af7Sopenharmony_ciclass Display: public eglu::NativeDisplay 96e5c31af7Sopenharmony_ci{ 97e5c31af7Sopenharmony_cipublic: 98e5c31af7Sopenharmony_ci static const Capability CAPABILITIES = CAPABILITY_GET_DISPLAY_LEGACY; 99e5c31af7Sopenharmony_ci 100e5c31af7Sopenharmony_ci Display() 101e5c31af7Sopenharmony_ci : eglu::NativeDisplay(CAPABILITIES) 102e5c31af7Sopenharmony_ci { 103e5c31af7Sopenharmony_ci } 104e5c31af7Sopenharmony_ci 105e5c31af7Sopenharmony_ci eglw::EGLNativeDisplayType getLegacyNative() 106e5c31af7Sopenharmony_ci { 107e5c31af7Sopenharmony_ci return EGL_DEFAULT_DISPLAY; 108e5c31af7Sopenharmony_ci } 109e5c31af7Sopenharmony_ci 110e5c31af7Sopenharmony_ci const eglw::Library& getLibrary() const 111e5c31af7Sopenharmony_ci { 112e5c31af7Sopenharmony_ci return m_library; 113e5c31af7Sopenharmony_ci } 114e5c31af7Sopenharmony_ci 115e5c31af7Sopenharmony_ciprivate: 116e5c31af7Sopenharmony_ci eglw::DefaultLibrary m_library; 117e5c31af7Sopenharmony_ci}; 118e5c31af7Sopenharmony_ci 119e5c31af7Sopenharmony_ci 120e5c31af7Sopenharmony_ciclass DisplayFactory: public eglu::NativeDisplayFactory 121e5c31af7Sopenharmony_ci{ 122e5c31af7Sopenharmony_cipublic: 123e5c31af7Sopenharmony_ci DisplayFactory() 124e5c31af7Sopenharmony_ci : eglu::NativeDisplayFactory ("nullws", "NullWS Display", Display::CAPABILITIES) 125e5c31af7Sopenharmony_ci { 126e5c31af7Sopenharmony_ci m_nativeWindowRegistry.registerFactory(new WindowFactory()); 127e5c31af7Sopenharmony_ci m_nativePixmapRegistry.registerFactory(new PixmapFactory()); 128e5c31af7Sopenharmony_ci } 129e5c31af7Sopenharmony_ci 130e5c31af7Sopenharmony_ci eglu::NativeDisplay* createDisplay (const eglw::EGLAttrib* attribList = DE_NULL) const 131e5c31af7Sopenharmony_ci { 132e5c31af7Sopenharmony_ci return new Display(); 133e5c31af7Sopenharmony_ci } 134e5c31af7Sopenharmony_ci}; 135e5c31af7Sopenharmony_ci 136e5c31af7Sopenharmony_ciPlatform::Platform () 137e5c31af7Sopenharmony_ci{ 138e5c31af7Sopenharmony_ci m_nativeDisplayFactoryRegistry.registerFactory(new DisplayFactory()); 139e5c31af7Sopenharmony_ci m_contextFactoryRegistry.registerFactory(new eglu::GLContextFactory(m_nativeDisplayFactoryRegistry)); 140e5c31af7Sopenharmony_ci} 141e5c31af7Sopenharmony_ci 142e5c31af7Sopenharmony_ciPlatform::~Platform () 143e5c31af7Sopenharmony_ci{ 144e5c31af7Sopenharmony_ci} 145e5c31af7Sopenharmony_ci 146e5c31af7Sopenharmony_ci} // nullws 147e5c31af7Sopenharmony_ci} // tcu 148e5c31af7Sopenharmony_ci 149e5c31af7Sopenharmony_citcu::Platform* createPlatform () 150e5c31af7Sopenharmony_ci{ 151e5c31af7Sopenharmony_ci return new tcu::nullws::Platform(); 152e5c31af7Sopenharmony_ci} 153