1 /* 2 * Copyright 2024 Google LLC 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef MacWindowGLUtils_DEFINED 9 #define MacWindowGLUtils_DEFINED 10 11 #include "include/private/base/SkAssert.h" 12 13 #include <Cocoa/Cocoa.h> 14 15 namespace skwindow { 16 GetGLPixelFormat(int sampleCount)17static inline NSOpenGLPixelFormat* GetGLPixelFormat(int sampleCount) { 18 constexpr int kMaxAttributes = 19; 19 NSOpenGLPixelFormatAttribute attributes[kMaxAttributes]; 20 int numAttributes = 0; 21 attributes[numAttributes++] = NSOpenGLPFAAccelerated; 22 attributes[numAttributes++] = NSOpenGLPFAClosestPolicy; 23 attributes[numAttributes++] = NSOpenGLPFADoubleBuffer; 24 attributes[numAttributes++] = NSOpenGLPFAOpenGLProfile; 25 attributes[numAttributes++] = NSOpenGLProfileVersion3_2Core; 26 attributes[numAttributes++] = NSOpenGLPFAColorSize; 27 attributes[numAttributes++] = 24; 28 attributes[numAttributes++] = NSOpenGLPFAAlphaSize; 29 attributes[numAttributes++] = 8; 30 attributes[numAttributes++] = NSOpenGLPFADepthSize; 31 attributes[numAttributes++] = 0; 32 attributes[numAttributes++] = NSOpenGLPFAStencilSize; 33 attributes[numAttributes++] = 8; 34 if (sampleCount > 1) { 35 attributes[numAttributes++] = NSOpenGLPFAMultisample; 36 attributes[numAttributes++] = NSOpenGLPFASampleBuffers; 37 attributes[numAttributes++] = 1; 38 attributes[numAttributes++] = NSOpenGLPFASamples; 39 attributes[numAttributes++] = sampleCount; 40 } else { 41 attributes[numAttributes++] = NSOpenGLPFASampleBuffers; 42 attributes[numAttributes++] = 0; 43 } 44 attributes[numAttributes++] = 0; 45 SkASSERT(numAttributes <= kMaxAttributes); 46 return [[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]; 47 } 48 49 } // namespace skwindow 50 51 #endif 52