Browse Source

added new definitions for GL SSBOs

Nicolas Cannasse 1 year ago
parent
commit
0ec37e6c14
3 changed files with 28 additions and 0 deletions
  1. 2 0
      libs/sdl/GLImports.h
  2. 13 0
      libs/sdl/gl.c
  3. 13 0
      libs/sdl/sdl/GL.hx

+ 2 - 0
libs/sdl/GLImports.h

@@ -67,6 +67,8 @@ GL_IMPORT(glGetQueryObjectiv, GETQUERYOBJECTIV);
 
 GL_IMPORT(glGetUniformBlockIndex, GETUNIFORMBLOCKINDEX);
 GL_IMPORT(glUniformBlockBinding, UNIFORMBLOCKBINDING);
+GL_IMPORT(glGetProgramResourceIndex, GETPROGRAMRESOURCEINDEX);
+GL_IMPORT(glShaderStorageBlockBinding, SHADERSTORAGEBLOCKBINDING);
 
 GL_IMPORT(glMultiDrawElementsIndirect, MULTIDRAWELEMENTSINDIRECT);
 GL_IMPORT(glColorMaski, COLORMASKI);

+ 13 - 0
libs/sdl/gl.c

@@ -644,6 +644,17 @@ HL_PRIM void HL_NAME(gl_uniform_block_binding)( vdynamic *p, int index, int bind
 	glUniformBlockBinding(p->v.i, index, binding);
 }
 
+// SSBOs
+
+HL_PRIM int HL_NAME(gl_get_program_resource_index)( vdynamic *p, int type, vstring *name ) {
+	char *cname = hl_to_utf8(name->bytes);
+	return (int)glGetProgramResourceIndex(p->v.i, type, cname);
+}
+
+HL_PRIM void HL_NAME(gl_shader_storage_block_binding)( vdynamic *p, int index, int binding ) {
+	glShaderStorageBlockBinding(p->v.i, index, binding);
+}
+
 DEFINE_PRIM(_BOOL,gl_init,_NO_ARG);
 DEFINE_PRIM(_BOOL,gl_is_context_lost,_NO_ARG);
 DEFINE_PRIM(_VOID,gl_clear,_I32);
@@ -757,5 +768,7 @@ DEFINE_PRIM(_F64, gl_query_result, _NULL(_I32));
 
 DEFINE_PRIM(_I32, gl_get_uniform_block_index, _NULL(_I32) _STRING);
 DEFINE_PRIM(_VOID, gl_uniform_block_binding, _NULL(_I32) _I32 _I32);
+DEFINE_PRIM(_I32, gl_get_program_resource_index, _NULL(_I32) _I32 _STRING);
+DEFINE_PRIM(_VOID, gl_shader_storage_block_binding, _NULL(_I32) _I32 _I32);
 
 DEFINE_PRIM(_I32, gl_get_config_parameter, _I32);

+ 13 - 0
libs/sdl/sdl/GL.hx

@@ -434,6 +434,17 @@ class GL {
 	public static function uniformBlockBinding( p : Program, blockIndex : Int, blockBinding : Int ) : Void {
 	}
 
+	// ssbos
+
+	@:hlNative("?sdl","gl_get_program_resource_index")
+	public static function getProgramResourceIndex( p : Program, type : Int, name : String ) : Int {
+		return 0;
+	}
+
+	@:hlNative("?sdl","gl_shader_storage_block_binding")
+	public static function shaderStorageBlockBinding( p : Program, blockIndex : Int, blockBinding : Int ) : Void {
+	}
+
 	// ----- CONSTANTS -----
 
 	/* ClearBufferMask */
@@ -511,6 +522,8 @@ class GL {
 	public static inline var UNIFORM_BUFFER                 = 0x8A11;
 	public static inline var QUERY_BUFFER                   = 0x9192;
 
+	public static inline var SHADER_STORAGE_BLOCK			= 0x92E6;
+
 	public static inline var STREAM_DRAW                    = 0x88E0;
 	public static inline var STATIC_DRAW                    = 0x88E4;
 	public static inline var DYNAMIC_DRAW                   = 0x88E8;