13c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#ifndef _EGLUUNIQUE_HPP 23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#define _EGLUUNIQUE_HPP 33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry/*------------------------------------------------------------------------- 43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * drawElements Quality Program Tester Core 53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * ---------------------------------------- 63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Copyright 2014 The Android Open Source Project 83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Licensed under the Apache License, Version 2.0 (the "License"); 103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * you may not use this file except in compliance with the License. 113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * You may obtain a copy of the License at 123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * http://www.apache.org/licenses/LICENSE-2.0 143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * Unless required by applicable law or agreed to in writing, software 163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * distributed under the License is distributed on an "AS IS" BASIS, 173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * See the License for the specific language governing permissions and 193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * limitations under the License. 203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * 213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*! 223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \file 233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry * \brief EGL unique resources 243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry *//*--------------------------------------------------------------------*/ 253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#include "egluDefs.hpp" 273c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos#include "eglwDefs.hpp" 283c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 293c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosnamespace eglw 303c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos{ 313c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosclass Library; 323c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos} 333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 343c827367444ee418f129b2c238299f49d3264554Jarkko Poyrynamespace eglu 353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 373c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosclass UniqueDisplay 383c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos{ 393c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulospublic: 403c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueDisplay (const eglw::Library& egl, eglw::EGLDisplay display); 413c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos ~UniqueDisplay (void); 423c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 433c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLDisplay operator* (void) const { return m_display; } 447bd8f7c0f982a10c6e7127ce2497ee7e208ea90ePyry Haulos operator bool (void) const; 453c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 463c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulosprivate: 473c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const eglw::Library& m_egl; 483c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLDisplay m_display; 493c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 503c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos // Disabled 513c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueDisplay& operator= (const UniqueDisplay&); 523c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueDisplay (const UniqueDisplay&); 533c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos}; 543c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos 553c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass UniqueSurface 563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 573c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 583c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueSurface (const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLSurface surface); 593c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos ~UniqueSurface (void); 603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 613c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLSurface operator* (void) const { return m_surface; } 627bd8f7c0f982a10c6e7127ce2497ee7e208ea90ePyry Haulos operator bool (void) const; 633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 643c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 653c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const eglw::Library& m_egl; 663c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLDisplay m_display; 673c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLSurface m_surface; 683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Disabled 703c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueSurface& operator= (const UniqueSurface&); 713c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueSurface (const UniqueSurface&); 723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 743c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass UniqueContext 753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 763c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 773c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueContext (const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLContext context); 783c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos ~UniqueContext (void); 793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 803c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLContext operator* (void) const { return m_context; } 817bd8f7c0f982a10c6e7127ce2497ee7e208ea90ePyry Haulos operator bool (void) const; 823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 833c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 843c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const eglw::Library& m_egl; 853c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLDisplay m_display; 863c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLContext m_context; 873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry // Disabled 893c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueContext operator= (const UniqueContext&); 903c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueContext (const UniqueContext&); 913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 933c827367444ee418f129b2c238299f49d3264554Jarkko Poyryclass ScopedCurrentContext 943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry{ 953c827367444ee418f129b2c238299f49d3264554Jarkko Poyrypublic: 963c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos ScopedCurrentContext (const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLSurface draw, eglw::EGLSurface read, eglw::EGLContext context); 973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry ~ScopedCurrentContext (void); 983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 993c827367444ee418f129b2c238299f49d3264554Jarkko Poyryprivate: 1003c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const eglw::Library& m_egl; 1013c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLDisplay m_display; 1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry}; 1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 10453365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärviclass UniqueImage 10553365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi{ 10653365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvipublic: 1073c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueImage (const eglw::Library& egl, eglw::EGLDisplay display, eglw::EGLImage image); 10853365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi ~UniqueImage (void); 10953365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi 1103c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLImage operator* (void) const { return m_image; } 1117bd8f7c0f982a10c6e7127ce2497ee7e208ea90ePyry Haulos operator bool (void) const; 11253365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi 11353365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärviprivate: 1143c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos const eglw::Library& m_egl; 1153c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLDisplay m_display; 1163c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos eglw::EGLImage m_image; 11753365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi 11853365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi // Disabled 1193c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueImage operator= (const UniqueImage&); 1203c67e4f0ec73f9c30c6b2ed2adfbfe7faaf576a4Pyry Haulos UniqueImage (const UniqueImage&); 12153365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi}; 12253365959f2740e7b9ed59c51adbb73372f908a09Mika Isojärvi 1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry} // eglu 1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry 1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry#endif // _EGLUUNIQUE_HPP 126