Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(942)

Side by Side Diff: experimental/fiddle/fiddle_main.cpp

Issue 1849753003: Fiddle: update to new const GrGLAssembleInterface API (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2015 Google Inc. 2 * Copyright 2015 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include <stdio.h> 8 #include <stdio.h>
9 9
10 #include <GL/osmesa.h> 10 #include <GL/osmesa.h>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 static OSMesaContext create_osmesa_context() { 65 static OSMesaContext create_osmesa_context() {
66 OSMesaContext osMesaContext = 66 OSMesaContext osMesaContext =
67 OSMesaCreateContextExt(OSMESA_BGRA, 0, 0, 0, nullptr); 67 OSMesaCreateContextExt(OSMESA_BGRA, 0, 0, 0, nullptr);
68 if (osMesaContext != nullptr) { 68 if (osMesaContext != nullptr) {
69 static uint32_t buffer[16 * 16]; 69 static uint32_t buffer[16 * 16];
70 OSMesaMakeCurrent(osMesaContext, &buffer, GL_UNSIGNED_BYTE, 16, 16); 70 OSMesaMakeCurrent(osMesaContext, &buffer, GL_UNSIGNED_BYTE, 16, 16);
71 } 71 }
72 return osMesaContext; 72 return osMesaContext;
73 } 73 }
74 74
75 static GrContext* create_mesa_grcontext() { 75 static sk_sp<GrContext> create_mesa_grcontext() {
76 sk_sp<const GrGLInterface> mesa(GrGLCreateMesaInterface()); 76 if (nullptr == OSMesaGetCurrentContext()) {
77 intptr_t backend = reinterpret_cast<intptr_t>(mesa.get()); 77 return nullptr;
78 return backend ? GrContext::Create(kOpenGL_GrBackend, backend) : nullptr; 78 }
79 auto osmesa_get = [](void* ctx, const char name[]) {
80 SkASSERT(nullptr == ctx);
81 SkASSERT(OSMesaGetCurrentContext());
82 return OSMesaGetProcAddress(name);
83 };
84 sk_sp<const GrGLInterface> mesa(GrGLAssembleInterface(nullptr, osmesa_get));
85 if (!mesa) {
86 return nullptr;
87 }
88 return sk_sp<GrContext>(GrContext::Create(
89 kOpenGL_GrBackend,
90 reinterpret_cast<intptr_t>(mesa.get())));
79 } 91 }
80 92
81
82 int main() { 93 int main() {
83 const DrawOptions options = GetDrawOptions(); 94 const DrawOptions options = GetDrawOptions();
84 if (options.source) { 95 if (options.source) {
85 sk_sp<SkData> data(SkData::NewFromFileName(options.source)); 96 sk_sp<SkData> data(SkData::NewFromFileName(options.source));
86 if (!data) { 97 if (!data) {
87 perror(options.source); 98 perror(options.source);
88 return 1; 99 return 1;
89 } else { 100 } else {
90 image = SkImage::NewFromEncoded(data.get()); 101 image = SkImage::NewFromEncoded(data.get());
91 if (!image) { 102 if (!image) {
92 perror("Unable to decode the source image."); 103 perror("Unable to decode the source image.");
93 return 1; 104 return 1;
94 } 105 }
95 SkAssertResult(image->asLegacyBitmap( 106 SkAssertResult(image->asLegacyBitmap(
96 &source, SkImage::kRO_LegacyBitmapMode)); 107 &source, SkImage::kRO_LegacyBitmapMode));
97 } 108 }
98 } 109 }
99 sk_sp<SkData> rasterData, gpuData, pdfData, skpData; 110 sk_sp<SkData> rasterData, gpuData, pdfData, skpData;
100 if (options.raster) { 111 if (options.raster) {
101 auto rasterSurface = 112 auto rasterSurface =
102 SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(options.size)); 113 SkSurface::MakeRaster(SkImageInfo::MakeN32Premul(options.size));
103 draw(rasterSurface->getCanvas()); 114 draw(rasterSurface->getCanvas());
104 rasterData.reset(encode_snapshot(rasterSurface)); 115 rasterData.reset(encode_snapshot(rasterSurface));
105 } 116 }
106 if (options.gpu) { 117 if (options.gpu) {
107 OSMesaContext osMesaContext = create_osmesa_context(); 118 OSMesaContext osMesaContext = create_osmesa_context();
108 sk_sp<GrContext> grContext(create_mesa_grcontext()); 119 auto grContext = create_mesa_grcontext();
109 if (!grContext) { 120 if (!grContext) {
110 fputs("Unable to get Mesa GrContext.\n", stderr); 121 fputs("Unable to get Mesa GrContext.\n", stderr);
111 } else { 122 } else {
112 auto surface = SkSurface::MakeRenderTarget( 123 auto surface = SkSurface::MakeRenderTarget(
113 grContext.get(), 124 grContext.get(),
114 SkBudgeted::kNo, 125 SkBudgeted::kNo,
115 SkImageInfo::MakeN32Premul(options.size)); 126 SkImageInfo::MakeN32Premul(options.size));
116 if (!surface) { 127 if (!surface) {
117 fputs("Unable to get render surface.\n", stderr); 128 fputs("Unable to get render surface.\n", stderr);
118 exit(1); 129 exit(1);
(...skipping 26 matching lines...) Expand all
145 printf("{\n"); 156 printf("{\n");
146 dump_output(rasterData, "Raster", !gpuData && !pdfData && !skpData); 157 dump_output(rasterData, "Raster", !gpuData && !pdfData && !skpData);
147 dump_output(gpuData, "Gpu", !pdfData && !skpData); 158 dump_output(gpuData, "Gpu", !pdfData && !skpData);
148 dump_output(pdfData, "Pdf", !skpData); 159 dump_output(pdfData, "Pdf", !skpData);
149 dump_output(skpData, "Skp"); 160 dump_output(skpData, "Skp");
150 printf("}\n"); 161 printf("}\n");
151 162
152 SkSafeSetNull(image); 163 SkSafeSetNull(image);
153 return 0; 164 return 0;
154 } 165 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698