From 49fbdd6188be2c417f0464939667063611ac2de7 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Mon, 23 Aug 2021 23:45:00 +0100 Subject: [PATCH] Add more indirect command structs to the procedure calls --- vendor/OpenGL/impl.odin | 38 +++++++++++++++++++++---------------- vendor/OpenGL/wrappers.odin | 12 ++++++------ 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/vendor/OpenGL/impl.odin b/vendor/OpenGL/impl.odin index c285ec0da..fd85ea764 100644 --- a/vendor/OpenGL/impl.odin +++ b/vendor/OpenGL/impl.odin @@ -886,13 +886,28 @@ load_3_3 :: proc(set_proc_address: Set_Proc_Address_Type) { // VERSION_4_0 +DrawArraysIndirectCommand :: struct { + count: u32, + instanceCount: u32, + first: u32, + baseInstance: u32, +} + +DrawElementsIndirectCommand :: struct { + count: u32, + instanceCount: u32, + firstIndex: u32, + baseVertex: u32, + baseInstance: u32, +} + impl_MinSampleShading: proc "c" (value: f32); impl_BlendEquationi: proc "c" (buf: u32, mode: u32); impl_BlendEquationSeparatei: proc "c" (buf: u32, modeRGB: u32, modeAlpha: u32); impl_BlendFunci: proc "c" (buf: u32, src: u32, dst: u32); impl_BlendFuncSeparatei: proc "c" (buf: u32, srcRGB: u32, dstRGB: u32, srcAlpha: u32, dstAlpha: u32); -impl_DrawArraysIndirect: proc "c" (mode: u32, indirect: rawptr); -impl_DrawElementsIndirect: proc "c" (mode: u32, type: u32, indirect: rawptr); +impl_DrawArraysIndirect: proc "c" (mode: u32, indirect: ^DrawArraysIndirectCommand); +impl_DrawElementsIndirect: proc "c" (mode: u32, type: u32, indirect: ^DrawElementsIndirectCommand); impl_Uniform1d: proc "c" (location: i32, x: f64); impl_Uniform2d: proc "c" (location: i32, x: f64, y: f64); impl_Uniform3d: proc "c" (location: i32, x: f64, y: f64, z: f64); @@ -1195,25 +1210,16 @@ load_4_2 :: proc(set_proc_address: Set_Proc_Address_Type) { } // VERSION_4_3 -DrawArraysIndirectCommand :: struct { - count: u32, - instanceCount: u32, - first: u32, - baseInstance: u32, -} - -DrawElementsIndirectCommand :: struct { - count: u32, - instanceCount: u32, - firstIndex: u32, - baseVertex: u32, - baseInstance: u32, +DispatchIndirectCommand :: struct { + num_groups_x: u32, + num_groups_y: u32, + num_groups_z: u32, } impl_ClearBufferData: proc "c" (target: u32, internalformat: u32, format: u32, type: u32, data: rawptr); impl_ClearBufferSubData: proc "c" (target: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: rawptr); impl_DispatchCompute: proc "c" (num_groups_x: u32, num_groups_y: u32, num_groups_z: u32); -impl_DispatchComputeIndirect: proc "c" (indirect: int); +impl_DispatchComputeIndirect: proc "c" (indirect: ^DispatchIndirectCommand); impl_CopyImageSubData: proc "c" (srcName: u32, srcTarget: u32, srcLevel: i32, srcX: i32, srcY: i32, srcZ: i32, dstName: u32, dstTarget: u32, dstLevel: i32, dstX: i32, dstY: i32, dstZ: i32, srcWidth: i32, srcHeight: i32, srcDepth: i32); impl_FramebufferParameteri: proc "c" (target: u32, pname: u32, param: i32); impl_GetFramebufferParameteriv: proc "c" (target: u32, pname: u32, params: [^]i32); diff --git a/vendor/OpenGL/wrappers.odin b/vendor/OpenGL/wrappers.odin index 02bf8a929..35f6685ee 100644 --- a/vendor/OpenGL/wrappers.odin +++ b/vendor/OpenGL/wrappers.odin @@ -406,8 +406,8 @@ when !ODIN_DEBUG { BlendEquationSeparatei :: #force_inline proc "c" (buf: u32, modeRGB: u32, modeAlpha: u32) { impl_BlendEquationSeparatei(buf, modeRGB, modeAlpha); } BlendFunci :: #force_inline proc "c" (buf: u32, src: u32, dst: u32) { impl_BlendFunci(buf, src, dst); } BlendFuncSeparatei :: #force_inline proc "c" (buf: u32, srcRGB: u32, dstRGB: u32, srcAlpha: u32, dstAlpha: u32) { impl_BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); } - DrawArraysIndirect :: #force_inline proc "c" (mode: u32, indirect: rawptr) { impl_DrawArraysIndirect(mode, indirect); } - DrawElementsIndirect :: #force_inline proc "c" (mode: u32, type: u32, indirect: rawptr) { impl_DrawElementsIndirect(mode, type, indirect); } + DrawArraysIndirect :: #force_inline proc "c" (mode: u32, indirect: ^DrawArraysIndirectCommand) { impl_DrawArraysIndirect(mode, indirect); } + DrawElementsIndirect :: #force_inline proc "c" (mode: u32, type: u32, indirect: ^DrawElementsIndirectCommand) { impl_DrawElementsIndirect(mode, type, indirect); } Uniform1d :: #force_inline proc "c" (location: i32, x: f64) { impl_Uniform1d(location, x); } Uniform2d :: #force_inline proc "c" (location: i32, x: f64, y: f64) { impl_Uniform2d(location, x, y); } Uniform3d :: #force_inline proc "c" (location: i32, x: f64, y: f64, z: f64) { impl_Uniform3d(location, x, y, z); } @@ -556,7 +556,7 @@ when !ODIN_DEBUG { ClearBufferData :: #force_inline proc "c" (target: u32, internalformat: u32, format: u32, type: u32, data: rawptr) { impl_ClearBufferData(target, internalformat, format, type, data); } ClearBufferSubData :: #force_inline proc "c" (target: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: rawptr) { impl_ClearBufferSubData(target, internalformat, offset, size, format, type, data); } DispatchCompute :: #force_inline proc "c" (num_groups_x: u32, num_groups_y: u32, num_groups_z: u32) { impl_DispatchCompute(num_groups_x, num_groups_y, num_groups_z); } - DispatchComputeIndirect :: #force_inline proc "c" (indirect: int) { impl_DispatchComputeIndirect(indirect); } + DispatchComputeIndirect :: #force_inline proc "c" (indirect: ^DispatchIndirectCommand) { impl_DispatchComputeIndirect(indirect); } CopyImageSubData :: #force_inline proc "c" (srcName: u32, srcTarget: u32, srcLevel: i32, srcX: i32, srcY: i32, srcZ: i32, dstName: u32, dstTarget: u32, dstLevel: i32, dstX: i32, dstY: i32, dstZ: i32, srcWidth: i32, srcHeight: i32, srcDepth: i32) { impl_CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); } FramebufferParameteri :: #force_inline proc "c" (target: u32, pname: u32, param: i32) { impl_FramebufferParameteri(target, pname, param); } GetFramebufferParameteriv :: #force_inline proc "c" (target: u32, pname: u32, params: [^]i32) { impl_GetFramebufferParameteriv(target, pname, params); } @@ -1206,8 +1206,8 @@ when !ODIN_DEBUG { BlendEquationSeparatei :: #force_inline proc "c" (buf: u32, modeRGB: u32, modeAlpha: u32, loc := #caller_location) { impl_BlendEquationSeparatei(buf, modeRGB, modeAlpha); debug_helper(loc, 0, buf, modeRGB, modeAlpha); } BlendFunci :: #force_inline proc "c" (buf: u32, src: u32, dst: u32, loc := #caller_location) { impl_BlendFunci(buf, src, dst); debug_helper(loc, 0, buf, src, dst); } BlendFuncSeparatei :: #force_inline proc "c" (buf: u32, srcRGB: u32, dstRGB: u32, srcAlpha: u32, dstAlpha: u32, loc := #caller_location) { impl_BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha); debug_helper(loc, 0, buf, srcRGB, dstRGB, srcAlpha, dstAlpha); } - DrawArraysIndirect :: #force_inline proc "c" (mode: u32, indirect: rawptr, loc := #caller_location) { impl_DrawArraysIndirect(mode, indirect); debug_helper(loc, 0, mode, indirect); } - DrawElementsIndirect :: #force_inline proc "c" (mode: u32, type: u32, indirect: rawptr, loc := #caller_location) { impl_DrawElementsIndirect(mode, type, indirect); debug_helper(loc, 0, mode, type, indirect); } + DrawArraysIndirect :: #force_inline proc "c" (mode: u32, indirect: ^DrawArraysIndirectCommand, loc := #caller_location) { impl_DrawArraysIndirect(mode, indirect); debug_helper(loc, 0, mode, indirect); } + DrawElementsIndirect :: #force_inline proc "c" (mode: u32, type: u32, indirect: ^DrawElementsIndirectCommand, loc := #caller_location) { impl_DrawElementsIndirect(mode, type, indirect); debug_helper(loc, 0, mode, type, indirect); } Uniform1d :: #force_inline proc "c" (location: i32, x: f64, loc := #caller_location) { impl_Uniform1d(location, x); debug_helper(loc, 0, location, x); } Uniform2d :: #force_inline proc "c" (location: i32, x: f64, y: f64, loc := #caller_location) { impl_Uniform2d(location, x, y); debug_helper(loc, 0, location, x, y); } Uniform3d :: #force_inline proc "c" (location: i32, x: f64, y: f64, z: f64, loc := #caller_location) { impl_Uniform3d(location, x, y, z); debug_helper(loc, 0, location, x, y, z); } @@ -1356,7 +1356,7 @@ when !ODIN_DEBUG { ClearBufferData :: #force_inline proc "c" (target: u32, internalformat: u32, format: u32, type: u32, data: rawptr, loc := #caller_location) { impl_ClearBufferData(target, internalformat, format, type, data); debug_helper(loc, 0, target, internalformat, format, type, data); } ClearBufferSubData :: #force_inline proc "c" (target: u32, internalformat: u32, offset: int, size: int, format: u32, type: u32, data: rawptr, loc := #caller_location) { impl_ClearBufferSubData(target, internalformat, offset, size, format, type, data); debug_helper(loc, 0, target, internalformat, offset, size, format, type, data); } DispatchCompute :: #force_inline proc "c" (num_groups_x: u32, num_groups_y: u32, num_groups_z: u32, loc := #caller_location) { impl_DispatchCompute(num_groups_x, num_groups_y, num_groups_z); debug_helper(loc, 0, num_groups_x, num_groups_y, num_groups_z); } - DispatchComputeIndirect :: #force_inline proc "c" (indirect: int, loc := #caller_location) { impl_DispatchComputeIndirect(indirect); debug_helper(loc, 0, indirect); } + DispatchComputeIndirect :: #force_inline proc "c" (indirect: ^DispatchIndirectCommand, loc := #caller_location) { impl_DispatchComputeIndirect(indirect); debug_helper(loc, 0, indirect); } CopyImageSubData :: #force_inline proc "c" (srcName: u32, srcTarget: u32, srcLevel: i32, srcX: i32, srcY: i32, srcZ: i32, dstName: u32, dstTarget: u32, dstLevel: i32, dstX: i32, dstY: i32, dstZ: i32, srcWidth: i32, srcHeight: i32, srcDepth: i32, loc := #caller_location) { impl_CopyImageSubData(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); debug_helper(loc, 0, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth); } FramebufferParameteri :: #force_inline proc "c" (target: u32, pname: u32, param: i32, loc := #caller_location) { impl_FramebufferParameteri(target, pname, param); debug_helper(loc, 0, target, pname, param); } GetFramebufferParameteriv :: #force_inline proc "c" (target: u32, pname: u32, params: [^]i32, loc := #caller_location) { impl_GetFramebufferParameteriv(target, pname, params); debug_helper(loc, 0, target, pname, params); }