~eliasnaur/gio

1a84517b12ba0faec346d933c278f56c2844deb4 — Elias Naur 4 months ago 827e20d
gpu/internal/opengl: avoid UNPACK_ROW_LENGTH/PACK_ROW_LENGTH on GLES2

Similarly to WebGL1, they're not supported in OpenGL ES 2.0.

References: https://todo.sr.ht/~eliasnaur/gio/469
Signed-off-by: Elias Naur <mail@eliasnaur.com>
1 files changed, 10 insertions(+), 8 deletions(-)

M gpu/internal/opengl/opengl.go
M gpu/internal/opengl/opengl.go => gpu/internal/opengl/opengl.go +10 -8
@@ 303,14 303,16 @@ func (b *Backend) EndFrame() {

func (b *Backend) queryState() glState {
	s := glState{
		prog:              gl.Program(b.funcs.GetBinding(gl.CURRENT_PROGRAM)),
		arrayBuf:          gl.Buffer(b.funcs.GetBinding(gl.ARRAY_BUFFER_BINDING)),
		elemBuf:           gl.Buffer(b.funcs.GetBinding(gl.ELEMENT_ARRAY_BUFFER_BINDING)),
		drawFBO:           gl.Framebuffer(b.funcs.GetBinding(gl.FRAMEBUFFER_BINDING)),
		clearColor:        b.funcs.GetFloat4(gl.COLOR_CLEAR_VALUE),
		viewport:          b.funcs.GetInteger4(gl.VIEWPORT),
		unpack_row_length: b.funcs.GetInteger(gl.UNPACK_ROW_LENGTH),
		pack_row_length:   b.funcs.GetInteger(gl.PACK_ROW_LENGTH),
		prog:       gl.Program(b.funcs.GetBinding(gl.CURRENT_PROGRAM)),
		arrayBuf:   gl.Buffer(b.funcs.GetBinding(gl.ARRAY_BUFFER_BINDING)),
		elemBuf:    gl.Buffer(b.funcs.GetBinding(gl.ELEMENT_ARRAY_BUFFER_BINDING)),
		drawFBO:    gl.Framebuffer(b.funcs.GetBinding(gl.FRAMEBUFFER_BINDING)),
		clearColor: b.funcs.GetFloat4(gl.COLOR_CLEAR_VALUE),
		viewport:   b.funcs.GetInteger4(gl.VIEWPORT),
	}
	if !b.gles || b.glver[0] > 2 {
		s.unpack_row_length = b.funcs.GetInteger(gl.UNPACK_ROW_LENGTH)
		s.pack_row_length = b.funcs.GetInteger(gl.PACK_ROW_LENGTH)
	}
	s.blend.enable = b.funcs.IsEnabled(gl.BLEND)
	s.blend.srcRGB = gl.Enum(b.funcs.GetInteger(gl.BLEND_SRC_RGB))