1// Copyright 2016 The SwiftShader Authors. All Rights Reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15#ifndef egl_Context_hpp
16#define egl_Context_hpp
17
18#include "common/Object.hpp"
19#include "Renderer/Surface.hpp"
20
21#include <EGL/egl.h>
22#include <GLES/gl.h>
23
24namespace gl { class Surface; }
25
26namespace egl
27{
28class Display;
29class Image;
30
31class [[clang::lto_visibility_public]] Context : public gl::Object
32{
33public:
34 virtual void makeCurrent(gl::Surface *surface) = 0;
35 virtual void bindTexImage(gl::Surface *surface) = 0;
36 virtual EGLenum validateSharedImage(EGLenum target, GLuint name, GLuint textureLevel) = 0;
37 virtual Image *createSharedImage(EGLenum target, GLuint name, GLuint textureLevel) = 0;
38 virtual EGLint getClientVersion() const = 0;
39 virtual EGLint getConfigID() const = 0;
40 virtual void finish() = 0;
41 virtual void blit(sw::Surface *source, const sw::SliceRect &sRect, sw::Surface *dest, const sw::SliceRect &dRect) = 0;
42
43 Display *getDisplay() const { return display; }
44
45protected:
46 Context(egl::Display *display) : display(display) {}
47 virtual ~Context() {}
48
49 egl::Display *const display;
50};
51}
52
53#endif // egl_Context_hpp
54