123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- /*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef GrGLExtensions_DEFINED
- #define GrGLExtensions_DEFINED
- #include "../../private/SkTArray.h"
- #include "GrGLFunctions.h"
- #include "SkString.h"
- #include <utility>
- struct GrGLInterface;
- class SkJSONWriter;
- /**
- * This helper queries the current GL context for its extensions, remembers them, and can be
- * queried. It supports both glGetString- and glGetStringi-style extension string APIs and will
- * use the latter if it is available. It also will query for EGL extensions if a eglQueryString
- * implementation is provided.
- */
- class SK_API GrGLExtensions {
- public:
- GrGLExtensions() {}
- GrGLExtensions(const GrGLExtensions&);
- GrGLExtensions& operator=(const GrGLExtensions&);
- void swap(GrGLExtensions* that) {
- using std::swap;
- swap(fStrings, that->fStrings);
- swap(fInitialized, that->fInitialized);
- }
- /**
- * We sometimes need to use this class without having yet created a GrGLInterface. This version
- * of init expects that getString is always non-NULL while getIntegerv and getStringi are non-
- * NULL if on desktop GL with version 3.0 or higher. Otherwise it will fail.
- */
- bool init(GrGLStandard standard,
- GrGLFunction<GrGLGetStringFn> getString,
- GrGLFunction<GrGLGetStringiFn> getStringi,
- GrGLFunction<GrGLGetIntegervFn> getIntegerv,
- GrGLFunction<GrEGLQueryStringFn> queryString = nullptr,
- GrEGLDisplay eglDisplay = nullptr);
- bool isInitialized() const { return fInitialized; }
- /**
- * Queries whether an extension is present. This will fail if init() has not been called.
- */
- bool has(const char[]) const;
- /**
- * Removes an extension if present. Returns true if the extension was present before the call.
- */
- bool remove(const char[]);
- /**
- * Adds an extension to list
- */
- void add(const char[]);
- void reset() { fStrings.reset(); }
- void dumpJSON(SkJSONWriter*) const;
- private:
- bool fInitialized = false;
- SkTArray<SkString> fStrings;
- };
- #endif
|