graphicsdriver/opengl: Use uintptr whenever possible instead of unsafe.Pointer

This commit is contained in:
Hajime Hoshi 2019-11-20 01:59:56 +09:00
parent 4296c11256
commit 0ef8009c11
4 changed files with 10 additions and 11 deletions

View File

@ -22,7 +22,6 @@ package opengl
import ( import (
"errors" "errors"
"fmt" "fmt"
"unsafe"
"github.com/hajimehoshi/ebiten/internal/driver" "github.com/hajimehoshi/ebiten/internal/driver"
"github.com/hajimehoshi/ebiten/internal/graphicsdriver/opengl/gl" "github.com/hajimehoshi/ebiten/internal/graphicsdriver/opengl/gl"
@ -525,9 +524,9 @@ func (c *context) newPixelBufferObject(width, height int) buffer {
return bf return bf
} }
func (c *context) mapPixelBuffer(buffer buffer, t textureNative) unsafe.Pointer { func (c *context) mapPixelBuffer(buffer buffer, t textureNative) uintptr {
c.bindTexture(t) c.bindTexture(t)
var ptr unsafe.Pointer var ptr uintptr
_ = c.t.Call(func() error { _ = c.t.Call(func() error {
gl.BindBuffer(gl.PIXEL_UNPACK_BUFFER, uint32(buffer)) gl.BindBuffer(gl.PIXEL_UNPACK_BUFFER, uint32(buffer))
ptr = gl.MapBuffer(gl.PIXEL_UNPACK_BUFFER, gl.READ_WRITE) ptr = gl.MapBuffer(gl.PIXEL_UNPACK_BUFFER, gl.READ_WRITE)

View File

@ -626,9 +626,9 @@ func LinkProgram(program uint32) {
C.glowLinkProgram(gpLinkProgram, (C.GLuint)(program)) C.glowLinkProgram(gpLinkProgram, (C.GLuint)(program))
} }
func MapBuffer(target uint32, access uint32) unsafe.Pointer { func MapBuffer(target uint32, access uint32) uintptr {
ret := C.glowMapBuffer(gpMapBuffer, (C.GLenum)(target), (C.GLenum)(access)) ret := C.glowMapBuffer(gpMapBuffer, (C.GLenum)(target), (C.GLenum)(access))
return (unsafe.Pointer)(ret) return ret
} }
func PixelStorei(pname uint32, param int32) { func PixelStorei(pname uint32, param int32) {

View File

@ -271,9 +271,9 @@ func IsTexture(texture uint32) bool {
return ret != 0 return ret != 0
} }
func MapBuffer(target uint32, access uint32) unsafe.Pointer { func MapBuffer(target uint32, access uint32) uintptr {
ret, _, _ := syscall.Syscall(gpMapBuffer, 2, uintptr(target), uintptr(access), 0) ret, _, _ := syscall.Syscall(gpMapBuffer, 2, uintptr(target), uintptr(access), 0)
return unsafe.Pointer(ret) return ret
} }
func LinkProgram(program uint32) { func LinkProgram(program uint32) {

View File

@ -30,7 +30,7 @@ const canUsePBO = true
type pboState struct { type pboState struct {
image *Image image *Image
mappedPBO unsafe.Pointer mappedPBO uintptr
mapped []byte mapped []byte
} }
@ -44,13 +44,13 @@ func (s *pboState) mapPBO(img *Image) {
s.image = img s.image = img
s.mappedPBO = img.driver.context.mapPixelBuffer(img.pbo, img.textureNative) s.mappedPBO = img.driver.context.mapPixelBuffer(img.pbo, img.textureNative)
if s.mappedPBO == nil { if s.mappedPBO == 0 {
panic("opengl: mapPixelBuffer failed") panic("opengl: mapPixelBuffer failed")
} }
var mapped []byte var mapped []byte
sh := (*reflect.SliceHeader)(unsafe.Pointer(&mapped)) sh := (*reflect.SliceHeader)(unsafe.Pointer(&mapped))
sh.Data = uintptr(s.mappedPBO) sh.Data = s.mappedPBO
sh.Len = 4 * w * h sh.Len = 4 * w * h
sh.Cap = 4 * w * h sh.Cap = 4 * w * h
s.mapped = mapped s.mapped = mapped
@ -71,6 +71,6 @@ func (s *pboState) unmapPBO() {
i.driver.context.unmapPixelBuffer(i.pbo, w, h) i.driver.context.unmapPixelBuffer(i.pbo, w, h)
s.image = nil s.image = nil
s.mappedPBO = nil s.mappedPBO = 0
s.mapped = nil s.mapped = nil
} }