OpenGL 4.5 - Headertranslation
Version 4.5
- Date : 2014/08/23
Supported environments and targets :
- (Win32) Delphi 4 and up
p_cl_context = ^_cl_context;
p_cl_event = ^_cl_event;
+ // GL_ARB_compute_variable_group_size
+ TglDispatchComputeGroupSizeARB = procedure (num_groups_x : GLuint; num_groups_y : GLuint; num_groups_z : GLuint; group_size_x : GLuint; group_size_y : GLuint; group_size_z : GLuint); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
+
// GL_ARB_debug_output
TglDebugProcARB = procedure (source: GLenum; type_: GLenum; id: GLuint; severity: GLenum; length: GLsizei; const message_: PGLchar; userParam: PGLvoid); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
// GL_AMD_debug_output
TglDebugProcAMD = procedure (id: GLuint; category: GLenum; severity: GLenum; length: GLsizei; const message_: PGLchar; userParam: PGLvoid); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
- // (4.3) GL_KHR_debug
+ // GL_KHR_debug (4.3)
TglDebugProc = procedure(source : GLEnum; type_ : GLEnum; id : GLUInt; severity : GLUInt; length : GLsizei; const message_ : PGLCHar; userParam : PGLvoid); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
// GL_NV_vdpau_interop
GL_ARB_texture_barrier,
GL_ARB_cl_event,
+ GL_ARB_compute_variable_group_size,
GL_ARB_debug_output,
GL_ARB_robustness,
GL_ARB_shader_stencil_export,
// GL_ARB_imaging
GL_CONSTANT_COLOR_ARB = $8001;
+ GL_CONSTANT_COLOR = $8001;
GL_ONE_MINUS_CONSTANT_COLOR = $8002;
GL_CONSTANT_ALPHA = $8003;
GL_ONE_MINUS_CONSTANT_ALPHA = $8004;
GLX_RGBA_FLOAT_TYPE = $20B9;
GLX_RGBA_FLOAT_BIT = $00000004;
+ // GL_ARB_compute_variable_group_size
+ GL_MAX_COMPUTE_VARIABLE_GROUP_INVOCATIONS_ARB = $9344;
+ GL_MAX_COMPUTE_FIXED_GROUP_INVOCATIONS_ARB = $90EB;
+ GL_MAX_COMPUTE_VARIABLE_GROUP_SIZE_ARB = $9345;
+ GL_MAX_COMPUTE_FIXED_GROUP_SIZE_ARB = $91BF;
+
// GL_ARB_half_float_pixel
GL_HALF_FLOAT_ARB = $140B;
WGL_AUX8_ARB = $208F;
WGL_AUX9_ARB = $2090;
+ // WGL_ARB_robustness_application_isolation
+ WGL_CONTEXT_RESET_ISOLATION_BIT_ARB = $00000008;
+
// WGL_ARB_create_context
WGL_CONTEXT_DEBUG_BIT_ARB = $00000001;
WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = $00000002;
GLX_SAMPLE_BUFFERS_ARB = 100000;
GLX_SAMPLES_ARB = 100001;
+ // GLX_ARB_robustness_application_isolation
+ GLX_CONTEXT_RESET_ISOLATION_BIT_ARB = $00000008;
+
// GLX_ARB_fbconfig_float
GLX_RGBA_FLOAT_TYPE_ARB = $20B9;
GLX_RGBA_FLOAT_BIT_ARB = $00000004;
TglGetAttachedShaders = procedure(programObj: GLhandle; MaxCount: GLsizei; var Count: GLint; shaders: PGLuint); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglGetAttribLocation = function(programObj: GLhandle; char: PGLChar): glint; {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglGetProgramiv = procedure(programObj: GLhandle; pname: GLenum; params: PGLInt); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
- TglGetProgramInfoLog = procedure(programObj: GLHandle; maxLength: glsizei; var length: GLint; infoLog: PGLChar); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
+ TglGetProgramInfoLog = procedure(programObj: GLHandle; maxLength: glsizei; length: PGLSizei; infoLog: PGLChar); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglGetShaderiv = procedure(shaderObj: GLhandle; pname: GLenum; params: PGLInt); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
- TglGetShaderInfoLog = procedure(shaderObj: GLHandle; maxLength: glsizei; var length: glsizei; infoLog: PGLChar); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
+ TglGetShaderInfoLog = procedure(shaderObj: GLHandle; maxLength: glsizei; length: PGLSizei; infoLog: PGLChar); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglGetShaderSource = procedure(shaderObj: GLhandle; maxlength: GLsizei; var length: GLsizei; source: PGLChar); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglGetUniformLocation = function(programObj: GLhandle; const char: PGLChar): glint; {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglGetUniformfv = procedure(programObj: GLhandle; location: GLint; params: PGLfloat); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglClearNamedBufferDataEXT = procedure(buffer : GLuint; internalformat : GLenum; format : GLEnum; type_ : GLEnum; const data : Pointer); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglClearNamedBufferSubDataEXT = procedure(buffer : GLuint; internalformat : GLenum; format : GLenum; type_ : GLenum; offset : GLsizeiptr; size : GLsizeiptr; const data : Pointer); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
- // GL_ARB_compute_shader 1
+ // GL_ARB_compute_shader
TglDispatchCompute = procedure(num_groups_x : GLuint; num_groups_y : GLuint; num_groups_z : GLuint); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
TglDispatchComputeIndirect = procedure(indirect : GLintptr); {$IFDEF DGL_WIN}stdcall; {$ELSE}cdecl; {$ENDIF}
// GLX_EXT_texture_from_pixmap
TglXBindTexImageEXT = procedure(dpy: PDisplay; drawable: GLXDrawable; buffer: GLint; const attrib_list: PGLint); cdecl;
TglXReleaseTexImageEXT = procedure(dpy: PDisplay; drawable: GLXDrawable; buffer: GLint); cdecl;
+
+ TglXSwapIntervalEXT = procedure (dpy : PDisplay; drawable : GLXDrawable; interval : GLint); cdecl;
{$ENDIF}
// GL utility functions and procedures
glDebugMessageCallbackARB: TglDebugMessageCallbackARB;
glGetDebugMessageLogARB: TglGetDebugMessageLogARB;
+ // GL_ARB_compute_variable_group_size
+ glDispatchComputeGroupSizeARB : TglDispatchComputeGroupSizeARB;
+
// GL_ARB_robustness
glGetGraphicsResetStatusARB: TglGetGraphicsResetStatusARB;
glGetnMapdvARB: TglGetnMapdvARB;
// GLX_EXT_texture_from_pixmap
glXBindTexImageEXT: TglXBindTexImageEXT;
glXReleaseTexImageEXT: TglXReleaseTexImageEXT;
+
+ glXSwapIntervalEXT : TglXSwapIntervalEXT;
{$ENDIF}
// GL utility functions and procedures
//
procedure Read_GL_ARB_cl_event;
+procedure Read_GL_ARB_compute_variable_group_size;
procedure Read_GL_ARB_debug_output;
procedure Read_GL_ARB_robustness;
procedure Read_GL_ATI_draw_buffers;
function dglLoadLibrary(Name: PChar): Pointer;
begin
{$IFDEF DGL_WIN}
- Result := Pointer(LoadLibrary(Name));
+ Result := {%H-}Pointer(LoadLibrary(Name));
{$ENDIF}
{$IFDEF DGL_LINUX}
Result := False
else
{$IFDEF DGL_WIN}
- Result := FreeLibrary(HMODULE(LibHandle));
+ Result := FreeLibrary({%H-}HMODULE(LibHandle));
{$ENDIF}
{$IFDEF DGL_LINUX}
{$IFDEF DGL_WIN}
- Result := GetProcAddress(HMODULE(LibHandle), ProcName);
+ Result := GetProcAddress({%H-}HMODULE(LibHandle), ProcName);
if result <> nil then
exit;
function Int_GetExtensionString: AnsiString;
var
- ExtensionCount : GLuint;
+ ExtensionCount : GLint;
i : Integer;
begin
if GL_VERSION_3_0
// GLX_EXT_texture_from_pixmap
glXBindTexImageEXT := dglGetProcAddress('glXBindTexImageEXT');
glXReleaseTexImageEXT := dglGetProcAddress('glXReleaseTexImageEXT');
+
+ glXSwapIntervalEXT := dglGetProcAddress('glXSwapIntervalEXT');
{$ENDIF}
Result := True;
glCreateSyncFromCLeventARB := dglGetProcAddress('glCreateSyncFromCLeventARB');
end;
+procedure Read_GL_ARB_compute_variable_group_size;
+begin
+ glDispatchComputeGroupSizeARB := dglGetProcAddress('glDispatchComputeGroupSizeARB');
+end;
+
procedure Read_GL_ARB_debug_output;
begin
glDebugMessageControlARB := dglGetProcAddress('glDebugMessageControlARB');
Read_GL_ARB_vertex_attrib_64bit;
Read_GL_ARB_viewport_array;
Read_GL_ARB_cl_event;
+ Read_GL_ARB_compute_variable_group_size;
Read_GL_ARB_debug_output;
Read_GL_ARB_robustness;
//
Buffer: String;
MajorVersion, MinorVersion: Integer;
- procedure TrimAndSplitVersionString(Buffer: String; var Max, Min: Integer);
+ procedure TrimAndSplitVersionString(Buffer: String; out Max, Min: Integer);
// Peels out the X.Y form from the given Buffer which must contain a version string like "text Minor.Major.Build text"
// at least however "Major.Minor".
var
GL_ARB_shader_precision := Int_CheckExtension(Buffer, 'GL_ARB_shader_precision');
GL_ARB_vertex_attrib_64bit := Int_CheckExtension(Buffer, 'GL_ARB_vertex_attrib_64bit');
GL_ARB_viewport_array := Int_CheckExtension(Buffer, 'GL_ARB_viewport_array');
+ GL_ARB_compute_variable_group_size := Int_CheckExtension(Buffer, 'GL_ARB_compute_variable_group_size');
// GL 4.2
GL_ARB_base_instance := Int_CheckExtension(Buffer, 'GL_ARB_base_instance');
if GL_LibHandle = nil then
InitOpenGL;
- FillChar(PFDescriptor, SizeOf(PFDescriptor), 0);
+ FillChar(PFDescriptor{%H-}, SizeOf(PFDescriptor), 0);
with PFDescriptor do
begin
if not Assigned(GL_LibHandle) then
raise Exception.Create('GL_LibHandle is NIL. Could not load OpenGL library!');
- FillChar(PFDescriptor, SizeOf(PFDescriptor), 0);
+ FillChar(PFDescriptor{%H-}, SizeOf(PFDescriptor), 0);
with PFDescriptor do
begin