blob: ab209055dafb3d9d888a0b4241a13db7483ac978 [file] [log] [blame]
/*
* Copyright 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef MAC_NATIVE_H
#define MAC_NATIVE_H
#include <OpenGL/gl.h>
typedef enum { // Mac equivalence
MAC_HAS_DOUBLE_BUFFER = 5, // NSOpenGLPFADoubleBuffer
MAC_DRAW_TO_WINDOW = 80, // NSOpenGLPFAWindow
MAC_DRAW_TO_PBUFFER = 90, // NSOpenGLPFAPixelBuffer
MAC_SAMPLES_PER_PIXEL = 56, // NSOpenGLPFASamples
MAC_OPENGL_PROFILE = 99, // NSOpenGLPFAOpenGLProfile
MAC_COLOR_SIZE = 8, // NSOpenGLPFAColorSize
MAC_ALPHA_SIZE = 11, // NSOpenGLPFAAlphaSize
MAC_DEPTH_SIZE = 12, // NSOpenGLPFADepthSize
MAC_STENCIL_SIZE = 13 // NSOpenGLPFAStencilSize
} MacPixelFormatAttribs;
typedef enum {
MAC_OPENGL_PROFILE_LEGACY = 0x1000, // NSOpenGLProfileVersionLegacy
MAC_OPENGL_PROFILE_3_2 = 0x3200, // NSOpenGLProfileVersion3_2Core
MAC_OPENGL_PROFILE_4_1 = 0x4100, // NSOpenGLProfileVersion4_1Core
} MacOpenGLProfileVersions;
extern "C"{
int setupCoreProfileNativeFormats();
int getNumPixelFormats();
void* finalizePixelFormat(
bool coreProfile, int pixelFormatIndex);
int getPixelFormatAttrib(int i, int attrib);
void* nsCreateContext(void* finalizedPixelFormat,void* share);
void* nsGetLowLevelContext(void* context);
// convert to NV12 textures from decoded output iosurface
void nsConvertVideoFrameToNV12Textures(void* context,
void* iosurface,
int Ytex,
int UVtex);
// copy texture "from" to "to"
// from: GL_TEXTURE_RECTANGLE
// to: GL_TEXTURE_2D
void nsCopyTexture(void* context, int from, int to, int w, int h);
void nsWindowMakeCurrent(void* context,void* nativeWin);
void nsPBufferMakeCurrent(void* context,void* nativePBuffer,int level);
void nsSwapBuffers();
void nsSwapInterval(int *interval);
void nsDestroyContext(void* context);
void* nsCreatePBuffer(GLenum target,GLenum format,int maxMip,int width,int height);
void nsDestroyPBuffer(void* pbuffer);
bool nsGetWinDims(void* win,unsigned int* width,unsigned int* height);
bool nsCheckColor(void* win,int colorSize);
void* nsGetLayer(void* nativeWin);
}
#endif