| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Using egl_native from gles2_conform_support |
| // TODO: We may want to phase out the old gles2_conform support in preference |
| // of this implementation. So eventually we'll need to move the egl_native |
| // stuff here or to a shareable location/path. |
| #include "gpu/gles2_conform_support/egl/display.h" |
| |
| #include "third_party/khronos_glcts/framework/egl/tcuEglPlatform.hpp" |
| |
| namespace egl { |
| namespace native { |
| namespace windowless { |
| |
| class Surface : public tcu::egl::WindowSurface { |
| public: |
| Surface(tcu::egl::Display& display, |
| EGLConfig config, |
| const EGLint* attribList, |
| int width, |
| int height) |
| : tcu::egl::WindowSurface(display, |
| config, |
| (EGLNativeWindowType)NULL, |
| attribList), |
| width_(width), |
| height_(height) {} |
| |
| int getWidth() const { return width_; } |
| |
| int getHeight() const { return height_; } |
| |
| private: |
| const int width_; |
| const int height_; |
| }; |
| |
| class Window : public tcu::NativeWindow { |
| public: |
| Window(tcu::egl::Display& display, |
| EGLConfig config, |
| const EGLint* attribList, |
| int width, |
| int height) |
| : tcu::NativeWindow::NativeWindow(), |
| eglDisplay_(display), |
| surface_(display, config, attribList, width, height) {} |
| |
| virtual ~Window() {} |
| |
| tcu::egl::Display& getEglDisplay() { return eglDisplay_; } |
| |
| tcu::egl::WindowSurface& getEglSurface() { return surface_; } |
| |
| void processEvents() { return; } |
| |
| private: |
| tcu::egl::Display& eglDisplay_; |
| Surface surface_; |
| }; |
| |
| class Platform : public tcu::EglPlatform { |
| public: |
| Platform() : tcu::EglPlatform::EglPlatform() {} |
| |
| virtual ~Platform() {} |
| |
| tcu::NativeWindow* createWindow(tcu::NativeDisplay& dpy, |
| EGLConfig config, |
| const EGLint* attribList, |
| int width, |
| int height, |
| qpVisibility visibility) { |
| tcu::egl::Display& eglDisplay = dpy.getEglDisplay(); |
| egl::Display* display = |
| static_cast<egl::Display*>(eglDisplay.getEGLDisplay()); |
| display->SetCreateOffscreen(width, height); |
| return new Window(eglDisplay, config, attribList, width, height); |
| } |
| }; |
| |
| } // namespace windowless |
| } // namespace native |
| } // namespace egl |
| |
| tcu::Platform* createPlatform(void) { |
| return new egl::native::windowless::Platform(); |
| } |