Chromium Code Reviews| Index: tools/gpu/gl/GLTestContext.h |
| diff --git a/tools/gpu/gl/GLTestContext.h b/tools/gpu/gl/GLTestContext.h |
| index efe9d8f100f7f36f9792ad26f1a83fd9fece5763..0d52e8d16d8e14f29161bfd6bf50b7efbe9a3d2e 100644 |
| --- a/tools/gpu/gl/GLTestContext.h |
| +++ b/tools/gpu/gl/GLTestContext.h |
| @@ -8,8 +8,10 @@ |
| #ifndef GLTestContext_DEFINED |
| #define GLTestContext_DEFINED |
| +#include "SkTypes.h" |
| #include "TestContext.h" |
| #include "gl/GrGLInterface.h" |
| +#include <string> |
| namespace sk_gpu_test { |
| /** |
| @@ -59,27 +61,36 @@ public: |
| */ |
| virtual GLTestContext *createNew() const { return nullptr; } |
| + template<typename Ret, typename... Args> |
| + void getGLProcAddress(Ret(**out)(Args...), |
| + const std::string& procname, |
| + const std::string& ext = "") const { |
|
csmartdalton
2016/10/03 22:13:35
Should we still be using SkString in internal tool
bsalomon
2016/10/04 13:40:45
I think so. Not that SkString is necessarily any b
csmartdalton
2016/10/04 15:51:00
Done.
|
| + using Proc = Ret(*)(Args...); |
| + if (procname[0] != 'g' || procname[1] != 'l') { |
| + SkFAIL("getGLProcAddress: proc name must have 'gl' prefix"); |
| + *out = nullptr; |
| + return; |
| + } |
| + *out = reinterpret_cast<Proc>(this->onPlatformGetProcAddress((procname + ext).c_str())); |
| + } |
| + |
| protected: |
| GLTestContext(); |
| /* |
| * Methods that sublcasses must call from their constructors and destructors. |
| */ |
| - void init(const GrGLInterface *, SkGpuFenceSync * = NULL); |
| + void init(const GrGLInterface *, FenceSync* = nullptr); |
| void teardown() override; |
| virtual GrGLFuncPtr onPlatformGetProcAddress(const char *) const = 0; |
| private: |
| - class GLFenceSync; // SkGpuFenceSync implementation that uses the OpenGL functionality. |
| - |
| /** Subclass provides the gl interface object if construction was |
| * successful. */ |
| SkAutoTUnref<const GrGLInterface> fGL; |
| - friend class GLFenceSync; // For onPlatformGetProcAddress. |
| - |
| typedef TestContext INHERITED; |
| }; |