| Index: tools/fiddle/fiddle_main.cpp
|
| diff --git a/tools/fiddle/fiddle_main.cpp b/tools/fiddle/fiddle_main.cpp
|
| index f6270daaa59ae3935a4e095ed53742ff01a3d854..1c80c4416c64bd69d56e422173c83772724b76d2 100644
|
| --- a/tools/fiddle/fiddle_main.cpp
|
| +++ b/tools/fiddle/fiddle_main.cpp
|
| @@ -8,8 +8,6 @@
|
| #include <stdio.h>
|
| #include <stdlib.h>
|
|
|
| -#include <GL/osmesa.h>
|
| -
|
| #include "fiddle_main.h"
|
|
|
| // Globals externed in fiddle_main.h
|
| @@ -63,33 +61,31 @@ static SkData* encode_snapshot(const sk_sp<SkSurface>& surface) {
|
| return img ? img->encode() : nullptr;
|
| }
|
|
|
| -static OSMesaContext create_osmesa_context() {
|
| - OSMesaContext osMesaContext =
|
| - OSMesaCreateContextExt(OSMESA_BGRA, 0, 0, 0, nullptr);
|
| - if (osMesaContext != nullptr) {
|
| - static uint32_t buffer[16 * 16];
|
| - OSMesaMakeCurrent(osMesaContext, &buffer, GL_UNSIGNED_BYTE, 16, 16);
|
| - }
|
| - return osMesaContext;
|
| -}
|
| +#if defined(__linux)
|
| + #include <GL/osmesa.h>
|
| + static sk_sp<GrContext> create_grcontext() {
|
| + // We just leak the OSMesaContext... the process will die soon anyway.
|
| + if (OSMesaContext osMesaContext = OSMesaCreateContextExt(OSMESA_BGRA, 0, 0, 0, nullptr)) {
|
| + static uint32_t buffer[16 * 16];
|
| + OSMesaMakeCurrent(osMesaContext, &buffer, GL_UNSIGNED_BYTE, 16, 16);
|
| + }
|
|
|
| -static sk_sp<GrContext> create_mesa_grcontext() {
|
| - if (nullptr == OSMesaGetCurrentContext()) {
|
| - return nullptr;
|
| - }
|
| - auto osmesa_get = [](void* ctx, const char name[]) {
|
| - SkASSERT(nullptr == ctx);
|
| - SkASSERT(OSMesaGetCurrentContext());
|
| - return OSMesaGetProcAddress(name);
|
| - };
|
| - sk_sp<const GrGLInterface> mesa(GrGLAssembleInterface(nullptr, osmesa_get));
|
| - if (!mesa) {
|
| - return nullptr;
|
| + auto osmesa_get = [](void* ctx, const char name[]) {
|
| + SkASSERT(nullptr == ctx);
|
| + SkASSERT(OSMesaGetCurrentContext());
|
| + return OSMesaGetProcAddress(name);
|
| + };
|
| + sk_sp<const GrGLInterface> mesa(GrGLAssembleInterface(nullptr, osmesa_get));
|
| + if (!mesa) {
|
| + return nullptr;
|
| + }
|
| + return sk_sp<GrContext>(GrContext::Create(
|
| + kOpenGL_GrBackend,
|
| + reinterpret_cast<intptr_t>(mesa.get())));
|
| }
|
| - return sk_sp<GrContext>(GrContext::Create(
|
| - kOpenGL_GrBackend,
|
| - reinterpret_cast<intptr_t>(mesa.get())));
|
| -}
|
| +#else
|
| + static sk_sp<GrContext> create_grcontext() { return nullptr; }
|
| +#endif
|
|
|
| int main() {
|
| const DrawOptions options = GetDrawOptions();
|
| @@ -117,10 +113,9 @@ int main() {
|
| rasterData.reset(encode_snapshot(rasterSurface));
|
| }
|
| if (options.gpu) {
|
| - OSMesaContext osMesaContext = create_osmesa_context();
|
| - auto grContext = create_mesa_grcontext();
|
| + auto grContext = create_grcontext();
|
| if (!grContext) {
|
| - fputs("Unable to get Mesa GrContext.\n", stderr);
|
| + fputs("Unable to get GrContext.\n", stderr);
|
| } else {
|
| auto surface = SkSurface::MakeRenderTarget(
|
| grContext.get(),
|
| @@ -134,9 +129,6 @@ int main() {
|
| draw(surface->getCanvas());
|
| gpuData.reset(encode_snapshot(surface));
|
| }
|
| - if (osMesaContext) {
|
| - OSMesaDestroyContext(osMesaContext);
|
| - }
|
| }
|
| if (options.pdf) {
|
| SkDynamicMemoryWStream pdfStream;
|
|
|