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

Side by Side Diff: src/views/mac/SkNSView.mm

Issue 12437010: Make SkOSWindow return the sample count and stencil bit count for its GL context. (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « src/views/mac/SkNSView.h ('k') | src/views/mac/SkOSWindow_Mac.mm » ('j') | 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 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 #import "SkNSView.h" 9 #import "SkNSView.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 msaaAttributes[kAttributeCount + 1] = kCGLPFAMultisample; 284 msaaAttributes[kAttributeCount + 1] = kCGLPFAMultisample;
285 msaaAttributes[kAttributeCount + 2] = kCGLPFASamples; 285 msaaAttributes[kAttributeCount + 2] = kCGLPFASamples;
286 msaaAttributes[kAttributeCount + 3] = 286 msaaAttributes[kAttributeCount + 3] =
287 (CGLPixelFormatAttribute)msaaSampleCount; 287 (CGLPixelFormatAttribute)msaaSampleCount;
288 msaaAttributes[kAttributeCount + 4] = (CGLPixelFormatAttribute)0; 288 msaaAttributes[kAttributeCount + 4] = (CGLPixelFormatAttribute)0;
289 CGLChoosePixelFormat(msaaAttributes, &format, &npix); 289 CGLChoosePixelFormat(msaaAttributes, &format, &npix);
290 } 290 }
291 if (!npix) { 291 if (!npix) {
292 CGLChoosePixelFormat(attributes, &format, &npix); 292 CGLChoosePixelFormat(attributes, &format, &npix);
293 } 293 }
294
295 CGLContextObj ctx; 294 CGLContextObj ctx;
296 CGLCreateContext(format, NULL, &ctx); 295 CGLCreateContext(format, NULL, &ctx);
297 CGLDestroyPixelFormat(format); 296 CGLDestroyPixelFormat(format);
298 297
299 static const GLint interval = 1; 298 static const GLint interval = 1;
300 CGLSetParameter(ctx, kCGLCPSwapInterval, &interval); 299 CGLSetParameter(ctx, kCGLCPSwapInterval, &interval);
301 CGLSetCurrentContext(ctx); 300 CGLSetCurrentContext(ctx);
302 return ctx; 301 return ctx;
303 } 302 }
304 } 303 }
305 304
306 - (void)viewDidMoveToWindow { 305 - (void)viewDidMoveToWindow {
307 [super viewDidMoveToWindow]; 306 [super viewDidMoveToWindow];
308 307
309 //Attaching view to fGLContext requires that the view to be part of a window , 308 //Attaching view to fGLContext requires that the view to be part of a window ,
310 //and that the NSWindow instance must have a CoreGraphics counterpart (or 309 //and that the NSWindow instance must have a CoreGraphics counterpart (or
311 //it must NOT be deferred or should have been on screen at least once) 310 //it must NOT be deferred or should have been on screen at least once)
312 if ([fGLContext view] != self && nil != self.window) { 311 if ([fGLContext view] != self && nil != self.window) {
313 [fGLContext setView:self]; 312 [fGLContext setView:self];
314 } 313 }
315 } 314 }
316 - (bool)attach:(SkOSWindow::SkBackEndTypes)attachType 315 - (bool)attach:(SkOSWindow::SkBackEndTypes)attachType
317 withMSAASampleCount:(int) sampleCount { 316 withMSAASampleCount:(int) sampleCount
317 andGetInfo:(SkOSWindow::AttachmentInfo*) info {
318 if (nil == fGLContext) { 318 if (nil == fGLContext) {
319 CGLContextObj ctx = createGLContext(sampleCount); 319 CGLContextObj ctx = createGLContext(sampleCount);
320 fGLContext = [[NSOpenGLContext alloc] initWithCGLContextObj:ctx]; 320 fGLContext = [[NSOpenGLContext alloc] initWithCGLContextObj:ctx];
321 CGLReleaseContext(ctx); 321 CGLReleaseContext(ctx);
322 if (NULL == fGLContext) { 322 if (NULL == fGLContext) {
323 return false; 323 return false;
324 } 324 }
325 [fGLContext setView:self]; 325 [fGLContext setView:self];
326 } 326 }
327 327
328 [fGLContext makeCurrentContext]; 328 [fGLContext makeCurrentContext];
329 329 CGLPixelFormatObj format = CGLGetPixelFormat((CGLContextObj)[fGLContext CGLC ontextObj]);
330 CGLDescribePixelFormat(format, 0, kCGLPFASamples, &info->fSampleCount);
331 CGLDescribePixelFormat(format, 0, kCGLPFAStencilSize, &info->fStencilBits);
330 glViewport(0, 0, (int) self.bounds.size.width, (int) self.bounds.size.width) ; 332 glViewport(0, 0, (int) self.bounds.size.width, (int) self.bounds.size.width) ;
331 glClearColor(0, 0, 0, 0); 333 glClearColor(0, 0, 0, 0);
332 glClearStencil(0); 334 glClearStencil(0);
333 glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); 335 glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
334 return true; 336 return true;
335 } 337 }
336 338
337 - (void)detach { 339 - (void)detach {
338 [fGLContext release]; 340 [fGLContext release];
339 fGLContext = nil; 341 fGLContext = nil;
340 } 342 }
341 343
342 - (void)present { 344 - (void)present {
343 if (nil != fGLContext) { 345 if (nil != fGLContext) {
344 [fGLContext flushBuffer]; 346 [fGLContext flushBuffer];
345 } 347 }
346 } 348 }
347 @end 349 @end
OLDNEW
« no previous file with comments | « src/views/mac/SkNSView.h ('k') | src/views/mac/SkOSWindow_Mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698