gpu/internal/opengl: remove "gpu" prefix from type names

Refactor only.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-08-10 16:03:20 +02:00
parent 0d1ee09a64
commit 8d8bc19c23
+68 -69
View File
@@ -80,8 +80,8 @@ type glState struct {
} }
type state struct { type state struct {
prog *gpuProgram prog *program
layout *gpuInputLayout layout *inputLayout
buffer bufferBinding buffer bufferBinding
} }
@@ -91,12 +91,12 @@ type bufferBinding struct {
stride int stride int
} }
type gpuTimer struct { type timer struct {
funcs *gl.Functions funcs *gl.Functions
obj gl.Query obj gl.Query
} }
type gpuTexture struct { type texture struct {
backend *Backend backend *Backend
obj gl.Texture obj gl.Texture
triple textureTriple triple textureTriple
@@ -104,13 +104,13 @@ type gpuTexture struct {
height int height int
} }
type gpuFramebuffer struct { type framebuffer struct {
backend *Backend backend *Backend
obj gl.Framebuffer obj gl.Framebuffer
foreign bool foreign bool
} }
type gpuBuffer struct { type buffer struct {
backend *Backend backend *Backend
hasBuffer bool hasBuffer bool
obj gl.Buffer obj gl.Buffer
@@ -122,18 +122,18 @@ type gpuBuffer struct {
data []byte data []byte
} }
type gpuProgram struct { type program struct {
backend *Backend backend *Backend
obj gl.Program obj gl.Program
vertUniforms uniformsTracker vertUniforms uniformsTracker
fragUniforms uniformsTracker fragUniforms uniformsTracker
storage [storageBindings]*gpuBuffer storage [storageBindings]*buffer
} }
type uniformsTracker struct { type uniformsTracker struct {
locs []uniformLocation locs []uniformLocation
size int size int
buf *gpuBuffer buf *buffer
version int version int
} }
@@ -144,7 +144,7 @@ type uniformLocation struct {
size int size int
} }
type gpuInputLayout struct { type inputLayout struct {
inputs []shader.InputLocation inputs []shader.InputLocation
layout []shader.InputDesc layout []shader.InputDesc
} }
@@ -217,7 +217,7 @@ func (b *Backend) BeginFrame(target driver.RenderTarget, clear bool, viewport im
switch t := target.(type) { switch t := target.(type) {
case driver.OpenGLRenderTarget: case driver.OpenGLRenderTarget:
renderFBO = gl.Framebuffer(t) renderFBO = gl.Framebuffer(t)
case *gpuFramebuffer: case *framebuffer:
renderFBO = t.obj renderFBO = t.obj
default: default:
panic(fmt.Errorf("opengl: invalid render target type: %T", target)) panic(fmt.Errorf("opengl: invalid render target type: %T", target))
@@ -256,7 +256,7 @@ func (b *Backend) BeginFrame(target driver.RenderTarget, clear bool, viewport im
if b.sRGBFBO != nil && !clear { if b.sRGBFBO != nil && !clear {
b.Clear(0, 0, 0, 0) b.Clear(0, 0, 0, 0)
} }
return &gpuFramebuffer{backend: b, obj: renderFBO, foreign: true} return &framebuffer{backend: b, obj: renderFBO, foreign: true}
} }
func (b *Backend) EndFrame() { func (b *Backend) EndFrame() {
@@ -623,7 +623,7 @@ func (b *Backend) Caps() driver.Caps {
} }
func (b *Backend) NewTimer() driver.Timer { func (b *Backend) NewTimer() driver.Timer {
return &gpuTimer{ return &timer{
funcs: b.funcs, funcs: b.funcs,
obj: b.funcs.CreateQuery(), obj: b.funcs.CreateQuery(),
} }
@@ -635,9 +635,9 @@ func (b *Backend) IsTimeContinuous() bool {
func (b *Backend) NewFramebuffer(tex driver.Texture) (driver.Framebuffer, error) { func (b *Backend) NewFramebuffer(tex driver.Texture) (driver.Framebuffer, error) {
glErr(b.funcs) glErr(b.funcs)
gltex := tex.(*gpuTexture) gltex := tex.(*texture)
fb := b.funcs.CreateFramebuffer() fb := b.funcs.CreateFramebuffer()
fbo := &gpuFramebuffer{backend: b, obj: fb} fbo := &framebuffer{backend: b, obj: fb}
b.BindFramebuffer(fbo) b.BindFramebuffer(fbo)
if err := glErr(b.funcs); err != nil { if err := glErr(b.funcs); err != nil {
fbo.Release() fbo.Release()
@@ -653,7 +653,7 @@ func (b *Backend) NewFramebuffer(tex driver.Texture) (driver.Framebuffer, error)
func (b *Backend) NewTexture(format driver.TextureFormat, width, height int, minFilter, magFilter driver.TextureFilter, binding driver.BufferBinding) (driver.Texture, error) { func (b *Backend) NewTexture(format driver.TextureFormat, width, height int, minFilter, magFilter driver.TextureFilter, binding driver.BufferBinding) (driver.Texture, error) {
glErr(b.funcs) glErr(b.funcs)
tex := &gpuTexture{backend: b, obj: b.funcs.CreateTexture(), width: width, height: height} tex := &texture{backend: b, obj: b.funcs.CreateTexture(), width: width, height: height}
switch format { switch format {
case driver.TextureFormatFloat: case driver.TextureFormatFloat:
tex.triple = b.floatTriple tex.triple = b.floatTriple
@@ -684,7 +684,7 @@ func (b *Backend) NewTexture(format driver.TextureFormat, width, height int, min
func (b *Backend) NewBuffer(typ driver.BufferBinding, size int) (driver.Buffer, error) { func (b *Backend) NewBuffer(typ driver.BufferBinding, size int) (driver.Buffer, error) {
glErr(b.funcs) glErr(b.funcs)
buf := &gpuBuffer{backend: b, typ: typ, size: size} buf := &buffer{backend: b, typ: typ, size: size}
if typ&driver.BufferBindingUniforms != 0 { if typ&driver.BufferBindingUniforms != 0 {
if typ != driver.BufferBindingUniforms { if typ != driver.BufferBindingUniforms {
return nil, errors.New("uniforms buffers cannot be bound as anything else") return nil, errors.New("uniforms buffers cannot be bound as anything else")
@@ -711,7 +711,7 @@ func (b *Backend) NewBuffer(typ driver.BufferBinding, size int) (driver.Buffer,
func (b *Backend) NewImmutableBuffer(typ driver.BufferBinding, data []byte) (driver.Buffer, error) { func (b *Backend) NewImmutableBuffer(typ driver.BufferBinding, data []byte) (driver.Buffer, error) {
glErr(b.funcs) glErr(b.funcs)
obj := b.funcs.CreateBuffer() obj := b.funcs.CreateBuffer()
buf := &gpuBuffer{backend: b, obj: obj, typ: typ, size: len(data), hasBuffer: true} buf := &buffer{backend: b, obj: obj, typ: typ, size: len(data), hasBuffer: true}
firstBinding := firstBufferType(typ) firstBinding := firstBufferType(typ)
b.glstate.bindBuffer(b.funcs, firstBinding, buf.obj) b.glstate.bindBuffer(b.funcs, firstBinding, buf.obj)
b.funcs.BufferData(firstBinding, len(data), gl.STATIC_DRAW) b.funcs.BufferData(firstBinding, len(data), gl.STATIC_DRAW)
@@ -757,7 +757,7 @@ func (b *Backend) DispatchCompute(x, y, z int) {
} }
func (b *Backend) BindImageTexture(unit int, tex driver.Texture, access driver.AccessBits, f driver.TextureFormat) { func (b *Backend) BindImageTexture(unit int, tex driver.Texture, access driver.AccessBits, f driver.TextureFormat) {
t := tex.(*gpuTexture) t := tex.(*texture)
var acc gl.Enum var acc gl.Enum
switch access { switch access {
case driver.AccessWrite: case driver.AccessWrite:
@@ -777,7 +777,7 @@ func (b *Backend) BindImageTexture(unit int, tex driver.Texture, access driver.A
b.funcs.BindImageTexture(unit, t.obj, 0, false, 0, acc, format) b.funcs.BindImageTexture(unit, t.obj, 0, false, 0, acc, format)
} }
func (b *Backend) useProgram(p *gpuProgram) { func (b *Backend) useProgram(p *program) {
b.glstate.useProgram(b.funcs, p.obj) b.glstate.useProgram(b.funcs, p.obj)
b.state.prog = p b.state.prog = p
} }
@@ -856,7 +856,7 @@ func (b *Backend) NewInputLayout(vs shader.Sources, layout []shader.InputDesc) (
return nil, fmt.Errorf("NewInputLayout: data size mismatch for %q: got %d expected %d", inp.Name, got, exp) return nil, fmt.Errorf("NewInputLayout: data size mismatch for %q: got %d expected %d", inp.Name, got, exp)
} }
} }
return &gpuInputLayout{ return &inputLayout{
inputs: vs.Inputs, inputs: vs.Inputs,
layout: layout, layout: layout,
}, nil }, nil
@@ -867,11 +867,10 @@ func (b *Backend) NewComputeProgram(src shader.Sources) (driver.Program, error)
if err != nil { if err != nil {
return nil, fmt.Errorf("%s: %v", src.Name, err) return nil, fmt.Errorf("%s: %v", src.Name, err)
} }
gpuProg := &gpuProgram{ return &program{
backend: b, backend: b,
obj: p, obj: p,
} }, nil
return gpuProg, nil
} }
func (b *Backend) NewProgram(vertShader, fragShader shader.Sources) (driver.Program, error) { func (b *Backend) NewProgram(vertShader, fragShader shader.Sources) (driver.Program, error) {
@@ -896,11 +895,11 @@ func (b *Backend) NewProgram(vertShader, fragShader shader.Sources) (driver.Prog
if err != nil { if err != nil {
return nil, err return nil, err
} }
gpuProg := &gpuProgram{ prog := &program{
backend: b, backend: b,
obj: p, obj: p,
} }
b.BindProgram(gpuProg) b.BindProgram(prog)
// Bind texture uniforms. // Bind texture uniforms.
for _, tex := range vertShader.Textures { for _, tex := range vertShader.Textures {
u := b.funcs.GetUniformLocation(p, tex.Name) u := b.funcs.GetUniformLocation(p, tex.Name)
@@ -932,10 +931,10 @@ func (b *Backend) NewProgram(vertShader, fragShader shader.Sources) (driver.Prog
} }
} }
} else { } else {
gpuProg.vertUniforms.setup(b.funcs, p, vertShader.Uniforms.Size, vertShader.Uniforms.Locations) prog.vertUniforms.setup(b.funcs, p, vertShader.Uniforms.Size, vertShader.Uniforms.Locations)
gpuProg.fragUniforms.setup(b.funcs, p, fragShader.Uniforms.Size, fragShader.Uniforms.Locations) prog.fragUniforms.setup(b.funcs, p, fragShader.Uniforms.Size, fragShader.Uniforms.Locations)
} }
return gpuProg, nil return prog, nil
} }
func lookupUniform(funcs *gl.Functions, p gl.Program, loc shader.UniformLocation) uniformLocation { func lookupUniform(funcs *gl.Functions, p gl.Program, loc shader.UniformLocation) uniformLocation {
@@ -946,23 +945,23 @@ func lookupUniform(funcs *gl.Functions, p gl.Program, loc shader.UniformLocation
return uniformLocation{uniform: u, offset: loc.Offset, typ: loc.Type, size: loc.Size} return uniformLocation{uniform: u, offset: loc.Offset, typ: loc.Type, size: loc.Size}
} }
func (p *gpuProgram) SetStorageBuffer(binding int, buffer driver.Buffer) { func (p *program) SetStorageBuffer(binding int, buf driver.Buffer) {
buf := buffer.(*gpuBuffer) b := buf.(*buffer)
if buf.typ&driver.BufferBindingShaderStorage == 0 { if b.typ&driver.BufferBindingShaderStorage == 0 {
panic("not a shader storage buffer") panic("not a shader storage buffer")
} }
p.storage[binding] = buf p.storage[binding] = b
} }
func (p *gpuProgram) SetVertexUniforms(buffer driver.Buffer) { func (p *program) SetVertexUniforms(buf driver.Buffer) {
p.vertUniforms.setBuffer(buffer) p.vertUniforms.setBuffer(buf)
} }
func (p *gpuProgram) SetFragmentUniforms(buffer driver.Buffer) { func (p *program) SetFragmentUniforms(buf driver.Buffer) {
p.fragUniforms.setBuffer(buffer) p.fragUniforms.setBuffer(buf)
} }
func (p *gpuProgram) updateUniforms() { func (p *program) updateUniforms() {
f := p.backend.funcs f := p.backend.funcs
if p.backend.ubo { if p.backend.ubo {
if b := p.vertUniforms.buf; b != nil { if b := p.vertUniforms.buf; b != nil {
@@ -978,11 +977,11 @@ func (p *gpuProgram) updateUniforms() {
} }
func (b *Backend) BindProgram(prog driver.Program) { func (b *Backend) BindProgram(prog driver.Program) {
p := prog.(*gpuProgram) p := prog.(*program)
b.useProgram(p) b.useProgram(p)
} }
func (p *gpuProgram) Release() { func (p *program) Release() {
p.backend.glstate.deleteProgram(p.backend.funcs, p.obj) p.backend.glstate.deleteProgram(p.backend.funcs, p.obj)
} }
@@ -994,17 +993,17 @@ func (u *uniformsTracker) setup(funcs *gl.Functions, p gl.Program, uniformSize i
u.size = uniformSize u.size = uniformSize
} }
func (u *uniformsTracker) setBuffer(buffer driver.Buffer) { func (u *uniformsTracker) setBuffer(buf driver.Buffer) {
buf := buffer.(*gpuBuffer) b := buf.(*buffer)
if buf.typ&driver.BufferBindingUniforms == 0 { if b.typ&driver.BufferBindingUniforms == 0 {
panic("not a uniform buffer") panic("not a uniform buffer")
} }
if buf.size < u.size { if b.size < u.size {
panic(fmt.Errorf("uniform buffer too small, got %d need %d", buf.size, u.size)) panic(fmt.Errorf("uniform buffer too small, got %d need %d", b.size, u.size))
} }
u.buf = buf u.buf = b
// Force update. // Force update.
u.version = buf.version - 1 u.version = b.version - 1
} }
func (p *uniformsTracker) update(funcs *gl.Functions) { func (p *uniformsTracker) update(funcs *gl.Functions) {
@@ -1039,7 +1038,7 @@ func (p *uniformsTracker) update(funcs *gl.Functions) {
} }
} }
func (b *gpuBuffer) Upload(data []byte) { func (b *buffer) Upload(data []byte) {
if b.immutable { if b.immutable {
panic("immutable buffer") panic("immutable buffer")
} }
@@ -1061,7 +1060,7 @@ func (b *gpuBuffer) Upload(data []byte) {
} }
} }
func (b *gpuBuffer) Download(data []byte) error { func (b *buffer) Download(data []byte) error {
if len(data) > b.size { if len(data) > b.size {
panic("buffer size overflow") panic("buffer size overflow")
} }
@@ -1082,7 +1081,7 @@ func (b *gpuBuffer) Download(data []byte) error {
return nil return nil
} }
func (b *gpuBuffer) Release() { func (b *buffer) Release() {
if b.hasBuffer { if b.hasBuffer {
b.backend.glstate.deleteBuffer(b.backend.funcs, b.obj) b.backend.glstate.deleteBuffer(b.backend.funcs, b.obj)
b.hasBuffer = false b.hasBuffer = false
@@ -1090,7 +1089,7 @@ func (b *gpuBuffer) Release() {
} }
func (b *Backend) BindVertexBuffer(buf driver.Buffer, stride, offset int) { func (b *Backend) BindVertexBuffer(buf driver.Buffer, stride, offset int) {
gbuf := buf.(*gpuBuffer) gbuf := buf.(*buffer)
if gbuf.typ&driver.BufferBindingVertices == 0 { if gbuf.typ&driver.BufferBindingVertices == 0 {
panic("not a vertex buffer") panic("not a vertex buffer")
} }
@@ -1125,7 +1124,7 @@ func (b *Backend) setupVertexArrays() {
} }
func (b *Backend) BindIndexBuffer(buf driver.Buffer) { func (b *Backend) BindIndexBuffer(buf driver.Buffer) {
gbuf := buf.(*gpuBuffer) gbuf := buf.(*buffer)
if gbuf.typ&driver.BufferBindingIndices == 0 { if gbuf.typ&driver.BufferBindingIndices == 0 {
panic("not an index buffer") panic("not an index buffer")
} }
@@ -1133,8 +1132,8 @@ func (b *Backend) BindIndexBuffer(buf driver.Buffer) {
} }
func (b *Backend) BlitFramebuffer(dst, src driver.Framebuffer, srect, drect image.Rectangle) { func (b *Backend) BlitFramebuffer(dst, src driver.Framebuffer, srect, drect image.Rectangle) {
b.glstate.bindFramebuffer(b.funcs, gl.DRAW_FRAMEBUFFER, dst.(*gpuFramebuffer).obj) b.glstate.bindFramebuffer(b.funcs, gl.DRAW_FRAMEBUFFER, dst.(*framebuffer).obj)
b.glstate.bindFramebuffer(b.funcs, gl.READ_FRAMEBUFFER, src.(*gpuFramebuffer).obj) b.glstate.bindFramebuffer(b.funcs, gl.READ_FRAMEBUFFER, src.(*framebuffer).obj)
b.funcs.BlitFramebuffer( b.funcs.BlitFramebuffer(
srect.Min.X, srect.Min.Y, srect.Max.X, srect.Max.Y, srect.Min.X, srect.Min.Y, srect.Max.X, srect.Max.Y,
drect.Min.X, drect.Min.Y, drect.Max.X, drect.Max.Y, drect.Min.X, drect.Min.Y, drect.Max.X, drect.Max.Y,
@@ -1142,7 +1141,7 @@ func (b *Backend) BlitFramebuffer(dst, src driver.Framebuffer, srect, drect imag
gl.NEAREST) gl.NEAREST)
} }
func (f *gpuFramebuffer) ReadPixels(src image.Rectangle, pixels []byte) error { func (f *framebuffer) ReadPixels(src image.Rectangle, pixels []byte) error {
glErr(f.backend.funcs) glErr(f.backend.funcs)
f.backend.BindFramebuffer(f) f.backend.BindFramebuffer(f)
if len(pixels) < src.Dx()*src.Dy()*4 { if len(pixels) < src.Dx()*src.Dy()*4 {
@@ -1153,22 +1152,22 @@ func (f *gpuFramebuffer) ReadPixels(src image.Rectangle, pixels []byte) error {
} }
func (b *Backend) BindFramebuffer(fbo driver.Framebuffer) { func (b *Backend) BindFramebuffer(fbo driver.Framebuffer) {
b.glstate.bindFramebuffer(b.funcs, gl.FRAMEBUFFER, fbo.(*gpuFramebuffer).obj) b.glstate.bindFramebuffer(b.funcs, gl.FRAMEBUFFER, fbo.(*framebuffer).obj)
} }
func (f *gpuFramebuffer) Invalidate() { func (f *framebuffer) Invalidate() {
f.backend.BindFramebuffer(f) f.backend.BindFramebuffer(f)
f.backend.funcs.InvalidateFramebuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0) f.backend.funcs.InvalidateFramebuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0)
} }
func (f *gpuFramebuffer) Release() { func (f *framebuffer) Release() {
if f.foreign { if f.foreign {
panic("framebuffer not created by NewFramebuffer") panic("framebuffer not created by NewFramebuffer")
} }
f.backend.glstate.deleteFramebuffer(f.backend.funcs, f.obj) f.backend.glstate.deleteFramebuffer(f.backend.funcs, f.obj)
} }
func (f *gpuFramebuffer) ImplementsRenderTarget() {} func (f *framebuffer) ImplementsRenderTarget() {}
func toTexFilter(f driver.TextureFilter) int { func toTexFilter(f driver.TextureFilter) int {
switch f { switch f {
@@ -1182,14 +1181,14 @@ func toTexFilter(f driver.TextureFilter) int {
} }
func (b *Backend) BindTexture(unit int, t driver.Texture) { func (b *Backend) BindTexture(unit int, t driver.Texture) {
b.glstate.bindTexture(b.funcs, unit, t.(*gpuTexture).obj) b.glstate.bindTexture(b.funcs, unit, t.(*texture).obj)
} }
func (t *gpuTexture) Release() { func (t *texture) Release() {
t.backend.glstate.deleteTexture(t.backend.funcs, t.obj) t.backend.glstate.deleteTexture(t.backend.funcs, t.obj)
} }
func (t *gpuTexture) Upload(offset, size image.Point, pixels []byte, stride int) { func (t *texture) Upload(offset, size image.Point, pixels []byte, stride int) {
if min := size.X * size.Y * 4; min > len(pixels) { if min := size.X * size.Y * 4; min > len(pixels) {
panic(fmt.Errorf("size %d larger than data %d", min, len(pixels))) panic(fmt.Errorf("size %d larger than data %d", min, len(pixels)))
} }
@@ -1198,23 +1197,23 @@ func (t *gpuTexture) Upload(offset, size image.Point, pixels []byte, stride int)
t.backend.funcs.TexSubImage2D(gl.TEXTURE_2D, 0, offset.X, offset.Y, size.X, size.Y, t.triple.format, t.triple.typ, pixels) t.backend.funcs.TexSubImage2D(gl.TEXTURE_2D, 0, offset.X, offset.Y, size.X, size.Y, t.triple.format, t.triple.typ, pixels)
} }
func (t *gpuTimer) Begin() { func (t *timer) Begin() {
t.funcs.BeginQuery(gl.TIME_ELAPSED_EXT, t.obj) t.funcs.BeginQuery(gl.TIME_ELAPSED_EXT, t.obj)
} }
func (t *gpuTimer) End() { func (t *timer) End() {
t.funcs.EndQuery(gl.TIME_ELAPSED_EXT) t.funcs.EndQuery(gl.TIME_ELAPSED_EXT)
} }
func (t *gpuTimer) ready() bool { func (t *timer) ready() bool {
return t.funcs.GetQueryObjectuiv(t.obj, gl.QUERY_RESULT_AVAILABLE) == gl.TRUE return t.funcs.GetQueryObjectuiv(t.obj, gl.QUERY_RESULT_AVAILABLE) == gl.TRUE
} }
func (t *gpuTimer) Release() { func (t *timer) Release() {
t.funcs.DeleteQuery(t.obj) t.funcs.DeleteQuery(t.obj)
} }
func (t *gpuTimer) Duration() (time.Duration, bool) { func (t *timer) Duration() (time.Duration, bool) {
if !t.ready() { if !t.ready() {
return 0, false return 0, false
} }
@@ -1223,10 +1222,10 @@ func (t *gpuTimer) Duration() (time.Duration, bool) {
} }
func (b *Backend) BindInputLayout(l driver.InputLayout) { func (b *Backend) BindInputLayout(l driver.InputLayout) {
b.state.layout = l.(*gpuInputLayout) b.state.layout = l.(*inputLayout)
} }
func (l *gpuInputLayout) Release() {} func (l *inputLayout) Release() {}
// floatTripleFor determines the best texture triple for floating point FBOs. // floatTripleFor determines the best texture triple for floating point FBOs.
func floatTripleFor(f *gl.Functions, ver [2]int, exts []string) (textureTriple, error) { func floatTripleFor(f *gl.Functions, ver [2]int, exts []string) (textureTriple, error) {