Hash :
a6426d67
Author :
Date :
2016-06-03T00:18:38
Android GL backend and end2end tests Just the bare minimum implementation for end2end tests to run. BUG=angleproject:1362 TEST=angle_end2end_tests on Nexus 5X Change-Id: I92293e0f8bdc2ffaa5d4661927750d7cb3d931e6 Reviewed-on: https://chromium-review.googlesource.com/349353 Reviewed-by: Jamie Madill <jmadill@chromium.org> Commit-Queue: Yuly Novikov <ynovikov@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
//
// Copyright (c) 2016 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// FunctionsEGL.h: Defines the FunctionsEGL class to load functions and data from EGL
#ifndef LIBANGLE_RENDERER_GL_CROS_FUNCTIONSEGL_H_
#define LIBANGLE_RENDERER_GL_CROS_FUNCTIONSEGL_H_
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <string>
#include <vector>
#include "libANGLE/Error.h"
namespace rx
{
class FunctionsGL;
class FunctionsEGL
{
public:
FunctionsEGL();
virtual ~FunctionsEGL();
int majorVersion;
int minorVersion;
egl::Error initialize(EGLNativeDisplayType nativeDisplay);
egl::Error terminate();
virtual void *getProcAddress(const char *name) const = 0;
FunctionsGL *makeFunctionsGL() const;
bool hasExtension(const char *extension) const;
EGLDisplay getDisplay() const;
EGLint getError() const;
EGLBoolean chooseConfig(EGLint const *attrib_list,
EGLConfig *configs,
EGLint config_size,
EGLint *num_config) const;
EGLBoolean getConfigAttrib(EGLConfig config, EGLint attribute, EGLint *value) const;
EGLContext createContext(EGLConfig config,
EGLContext share_context,
EGLint const *attrib_list) const;
EGLSurface createPbufferSurface(EGLConfig config, const EGLint *attrib_list) const;
EGLSurface createWindowSurface(EGLConfig config,
EGLNativeWindowType win,
const EGLint *attrib_list) const;
EGLBoolean destroyContext(EGLContext context) const;
EGLBoolean destroySurface(EGLSurface surface) const;
EGLBoolean makeCurrent(EGLSurface surface, EGLContext context) const;
const char *queryString(EGLint name) const;
EGLBoolean querySurface(EGLSurface surface, EGLint attribute, EGLint *value) const;
EGLBoolean swapBuffers(EGLSurface surface) const;
EGLBoolean bindTexImage(EGLSurface surface, EGLint buffer) const;
EGLBoolean releaseTexImage(EGLSurface surface, EGLint buffer) const;
EGLBoolean swapInterval(EGLint interval) const;
EGLImageKHR createImageKHR(EGLContext context,
EGLenum target,
EGLClientBuffer buffer,
const EGLint *attrib_list) const;
EGLBoolean destroyImageKHR(EGLImageKHR image) const;
EGLSyncKHR createSyncKHR(EGLenum type, const EGLint *attrib_list);
EGLBoolean destroySyncKHR(EGLSyncKHR sync);
EGLint clientWaitSyncKHR(EGLSyncKHR sync, EGLint flags, EGLTimeKHR timeout);
EGLBoolean getSyncAttribKHR(EGLSyncKHR sync, EGLint attribute, EGLint *value);
private:
// So as to isolate from angle we do not include angleutils.h and cannot
// use angle::NonCopyable so we replicated it here instead.
FunctionsEGL(const FunctionsEGL &) = delete;
void operator=(const FunctionsEGL &) = delete;
struct EGLDispatchTable;
EGLDispatchTable *mFnPtrs;
EGLDisplay mEGLDisplay;
std::vector<std::string> mExtensions;
};
} // namespace rx
#endif // LIBANGLE_RENDERER_GL_CROS_FUNCTIONSEGL_H_