gl: a few more ES 3.0 functions
Nothing exciting, just exercising the layout of the functions. Change-Id: I460fdc1c9596968bbdfdafe7d068ea393e0029ed Reviewed-on: https://go-review.googlesource.com/24051 Reviewed-by: Nigel Tao <nigeltao@golang.org>
This commit is contained in:
parent
4409fe621c
commit
3919ffce20
18
gl/fn.go
18
gl/fn.go
@ -43,7 +43,6 @@ const (
|
||||
glfnBlendEquationSeparate
|
||||
glfnBlendFunc
|
||||
glfnBlendFuncSeparate
|
||||
glfnBlitFramebuffer
|
||||
glfnBufferData
|
||||
glfnBufferSubData
|
||||
glfnCheckFramebufferStatus
|
||||
@ -172,6 +171,23 @@ const (
|
||||
glfnVertexAttrib4fv
|
||||
glfnVertexAttribPointer
|
||||
glfnViewport
|
||||
|
||||
// ES 3.0 functions
|
||||
glfnUniformMatrix2x3fv
|
||||
glfnUniformMatrix3x2fv
|
||||
glfnUniformMatrix2x4fv
|
||||
glfnUniformMatrix4x2fv
|
||||
glfnUniformMatrix3x4fv
|
||||
glfnUniformMatrix4x3fv
|
||||
glfnBlitFramebuffer
|
||||
glfnUniform1ui
|
||||
glfnUniform2ui
|
||||
glfnUniform3ui
|
||||
glfnUniform4ui
|
||||
glfnUniform1uiv
|
||||
glfnUniform2uiv
|
||||
glfnUniform3uiv
|
||||
glfnUniform4uiv
|
||||
)
|
||||
|
||||
func goString(buf []byte) string {
|
||||
|
118
gl/gl.go
118
gl/gl.go
@ -1680,6 +1680,78 @@ func (ctx *context) Viewport(x, y, width, height int) {
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix2x3fv(dst Uniform, src []float32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix2x3fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 6),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix3x2fv(dst Uniform, src []float32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix3x2fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 6),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix2x4fv(dst Uniform, src []float32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix2x4fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 8),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix4x2fv(dst Uniform, src []float32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix4x2fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 8),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix3x4fv(dst Uniform, src []float32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix3x4fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 12),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix4x3fv(dst Uniform, src []float32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix4x3fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 12),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1 int, mask uint, filter Enum) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
@ -1697,3 +1769,49 @@ func (ctx context3) BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, ds
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform1ui(dst Uniform, v uint32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform1ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform2ui(dst Uniform, v0, v1 uint32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform2ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v0),
|
||||
a2: uintptr(v1),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform3ui(dst Uniform, v0, v1, v2 uint) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform3ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v0),
|
||||
a2: uintptr(v1),
|
||||
a3: uintptr(v2),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform4ui(dst Uniform, v0, v1, v2, v3 uint32) {
|
||||
ctx.enqueue(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform4ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v0),
|
||||
a2: uintptr(v1),
|
||||
a3: uintptr(v2),
|
||||
a4: uintptr(v3),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
158
gl/gldebug.go
158
gl/gldebug.go
@ -3455,6 +3455,102 @@ func (ctx *context) Viewport(x, y, width, height int) {
|
||||
blocking: true})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix2x3fv(dst Uniform, src []float32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.UniformMatrix2x3fv(%v, len(%d)) %v", dst, len(src), errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix2x3fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 6),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix3x2fv(dst Uniform, src []float32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.UniformMatrix3x2fv(%v, len(%d)) %v", dst, len(src), errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix3x2fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 6),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix2x4fv(dst Uniform, src []float32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.UniformMatrix2x4fv(%v, len(%d)) %v", dst, len(src), errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix2x4fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 8),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix4x2fv(dst Uniform, src []float32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.UniformMatrix4x2fv(%v, len(%d)) %v", dst, len(src), errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix4x2fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 8),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix3x4fv(dst Uniform, src []float32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.UniformMatrix3x4fv(%v, len(%d)) %v", dst, len(src), errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix3x4fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 12),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) UniformMatrix4x3fv(dst Uniform, src []float32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.UniformMatrix4x3fv(%v, len(%d)) %v", dst, len(src), errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniformMatrix4x3fv,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(len(src) / 12),
|
||||
},
|
||||
parg: unsafe.Pointer(&src[0]),
|
||||
blocking: true,
|
||||
})
|
||||
}
|
||||
|
||||
func (ctx context3) BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1 int, mask uint, filter Enum) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
@ -3476,3 +3572,65 @@ func (ctx context3) BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, ds
|
||||
},
|
||||
blocking: true})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform1ui(dst Uniform, v uint32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.Uniform1ui(%v, %v) %v", dst, v, errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform1ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v),
|
||||
},
|
||||
blocking: true})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform2ui(dst Uniform, v0, v1 uint32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.Uniform2ui(%v, %v, %v) %v", dst, v0, v1, errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform2ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v0),
|
||||
a2: uintptr(v1),
|
||||
},
|
||||
blocking: true})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform3ui(dst Uniform, v0, v1, v2 uint) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.Uniform3ui(%v, %v, %v, %v) %v", dst, v0, v1, v2, errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform3ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v0),
|
||||
a2: uintptr(v1),
|
||||
a3: uintptr(v2),
|
||||
},
|
||||
blocking: true})
|
||||
}
|
||||
|
||||
func (ctx context3) Uniform4ui(dst Uniform, v0, v1, v2, v3 uint32) {
|
||||
defer func() {
|
||||
errstr := ctx.errDrain()
|
||||
log.Printf("gl.Uniform4ui(%v, %v, %v, %v, %v) %v", dst, v0, v1, v2, v3, errstr)
|
||||
}()
|
||||
ctx.enqueueDebug(call{
|
||||
args: fnargs{
|
||||
fn: glfnUniform4ui,
|
||||
a0: dst.c(),
|
||||
a1: uintptr(v0),
|
||||
a2: uintptr(v1),
|
||||
a3: uintptr(v2),
|
||||
a4: uintptr(v3),
|
||||
},
|
||||
blocking: true})
|
||||
}
|
||||
|
47
gl/work.c
47
gl/work.c
@ -11,10 +11,25 @@
|
||||
#if defined(GL_ES_VERSION_3_0) && GL_ES_VERSION_3_0
|
||||
#else
|
||||
#include <stdio.h>
|
||||
void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) {
|
||||
static void gles3missing() {
|
||||
printf("GLES3 function is missing\n");
|
||||
exit(2);
|
||||
}
|
||||
static void glUniformMatrix2x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { gles3missing(); }
|
||||
static void glUniformMatrix3x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { gles3missing(); }
|
||||
static void glUniformMatrix2x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { gles3missing(); }
|
||||
static void glUniformMatrix4x2fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { gles3missing(); }
|
||||
static void glUniformMatrix3x4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { gles3missing(); }
|
||||
static void glUniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value) { gles3missing(); }
|
||||
static void glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) { gles3missing(); }
|
||||
static void glUniform1ui(GLint location, GLuint v0) { gles3missing(); }
|
||||
static void glUniform2ui(GLint location, GLuint v0, GLuint v1) { gles3missing(); }
|
||||
static void glUniform3ui(GLint location, GLuint v0, GLuint v1, GLuint v2) { gles3missing(); }
|
||||
static void glUniform4ui(GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3) { gles3missing(); }
|
||||
static void glUniform1uiv(GLint location, GLsizei count, const GLuint *value) { gles3missing(); }
|
||||
static void glUniform2uiv(GLint location, GLsizei count, const GLuint *value) { gles3missing(); }
|
||||
static void glUniform3uiv(GLint location, GLsizei count, const GLuint *value) { gles3missing(); }
|
||||
static void glUniform4uiv(GLint location, GLsizei count, const GLuint *value) { gles3missing(); }
|
||||
#endif
|
||||
|
||||
uintptr_t processFn(struct fnargs* args, char* parg) {
|
||||
@ -398,6 +413,9 @@ uintptr_t processFn(struct fnargs* args, char* parg) {
|
||||
case glfnUniform1i:
|
||||
glUniform1i((GLint)args->a0, (GLint)args->a1);
|
||||
break;
|
||||
case glfnUniform1ui:
|
||||
glUniform1ui((GLint)args->a0, (GLuint)args->a1);
|
||||
break;
|
||||
case glfnUniform1iv:
|
||||
glUniform1iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg);
|
||||
break;
|
||||
@ -410,6 +428,9 @@ uintptr_t processFn(struct fnargs* args, char* parg) {
|
||||
case glfnUniform2i:
|
||||
glUniform2i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2);
|
||||
break;
|
||||
case glfnUniform2ui:
|
||||
glUniform2ui((GLint)args->a0, (GLuint)args->a1, (GLuint)args->a2);
|
||||
break;
|
||||
case glfnUniform2iv:
|
||||
glUniform2iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg);
|
||||
break;
|
||||
@ -422,6 +443,9 @@ uintptr_t processFn(struct fnargs* args, char* parg) {
|
||||
case glfnUniform3i:
|
||||
glUniform3i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3);
|
||||
break;
|
||||
case glfnUniform3ui:
|
||||
glUniform3ui((GLint)args->a0, (GLuint)args->a1, (GLuint)args->a2, (GLuint)args->a3);
|
||||
break;
|
||||
case glfnUniform3iv:
|
||||
glUniform3iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg);
|
||||
break;
|
||||
@ -434,6 +458,9 @@ uintptr_t processFn(struct fnargs* args, char* parg) {
|
||||
case glfnUniform4i:
|
||||
glUniform4i((GLint)args->a0, (GLint)args->a1, (GLint)args->a2, (GLint)args->a3, (GLint)args->a4);
|
||||
break;
|
||||
case glfnUniform4ui:
|
||||
glUniform4ui((GLint)args->a0, (GLuint)args->a1, (GLuint)args->a2, (GLuint)args->a3, (GLuint)args->a4);
|
||||
break;
|
||||
case glfnUniform4iv:
|
||||
glUniform4iv((GLint)args->a0, (GLsizeiptr)args->a1, (GLvoid*)parg);
|
||||
break;
|
||||
@ -446,6 +473,24 @@ uintptr_t processFn(struct fnargs* args, char* parg) {
|
||||
case glfnUniformMatrix4fv:
|
||||
glUniformMatrix4fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUniformMatrix2x3fv:
|
||||
glUniformMatrix2x3fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUniformMatrix3x2fv:
|
||||
glUniformMatrix3x2fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUniformMatrix2x4fv:
|
||||
glUniformMatrix2x4fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUniformMatrix4x2fv:
|
||||
glUniformMatrix4x2fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUniformMatrix3x4fv:
|
||||
glUniformMatrix3x4fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUniformMatrix4x3fv:
|
||||
glUniformMatrix4x3fv((GLint)args->a0, (GLsizeiptr)args->a1, 0, (GLvoid*)parg);
|
||||
break;
|
||||
case glfnUseProgram:
|
||||
glUseProgram((GLint)args->a0);
|
||||
break;
|
||||
|
18
gl/work.h
18
gl/work.h
@ -45,7 +45,6 @@ typedef enum {
|
||||
glfnBlendEquationSeparate,
|
||||
glfnBlendFunc,
|
||||
glfnBlendFuncSeparate,
|
||||
glfnBlitFramebuffer,
|
||||
glfnBufferData,
|
||||
glfnBufferSubData,
|
||||
glfnCheckFramebufferStatus,
|
||||
@ -174,6 +173,23 @@ typedef enum {
|
||||
glfnVertexAttrib4fv,
|
||||
glfnVertexAttribPointer,
|
||||
glfnViewport,
|
||||
|
||||
// ES 3.0 functions
|
||||
glfnUniformMatrix2x3fv,
|
||||
glfnUniformMatrix3x2fv,
|
||||
glfnUniformMatrix2x4fv,
|
||||
glfnUniformMatrix4x2fv,
|
||||
glfnUniformMatrix3x4fv,
|
||||
glfnUniformMatrix4x3fv,
|
||||
glfnBlitFramebuffer,
|
||||
glfnUniform1ui,
|
||||
glfnUniform2ui,
|
||||
glfnUniform3ui,
|
||||
glfnUniform4ui,
|
||||
glfnUniform1uiv,
|
||||
glfnUniform2uiv,
|
||||
glfnUniform3uiv,
|
||||
glfnUniform4uiv,
|
||||
} glfn;
|
||||
|
||||
// TODO: generate this type from fn.go.
|
||||
|
Loading…
x
Reference in New Issue
Block a user