app: add error result to context.RenderTarget

Vulkan may report VK_ERROR_OUT_OF_DATE_KHR which is not a fatal error.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2021-09-07 18:42:21 +02:00
parent 9e6ed3cb96
commit af6770de18
7 changed files with 19 additions and 15 deletions
+2 -2
View File
@@ -53,10 +53,10 @@ func (c *d3d11Context) API() gpu.API {
return gpu.Direct3D11{Device: unsafe.Pointer(c.dev)}
}
func (c *d3d11Context) RenderTarget() gpu.RenderTarget {
func (c *d3d11Context) RenderTarget() (gpu.RenderTarget, error) {
return gpu.Direct3D11RenderTarget{
RenderTarget: unsafe.Pointer(c.renderTarget),
}
}, nil
}
func (c *d3d11Context) Present() error {
+2 -2
View File
@@ -36,8 +36,8 @@ func newContext(w *window) (*glContext, error) {
return c, nil
}
func (c *glContext) RenderTarget() gpu.RenderTarget {
return gpu.OpenGLRenderTarget{}
func (c *glContext) RenderTarget() (gpu.RenderTarget, error) {
return gpu.OpenGLRenderTarget{}, nil
}
func (c *glContext) API() gpu.API {
+2 -2
View File
@@ -72,8 +72,8 @@ func newContext(w *window) (*glContext, error) {
return c, nil
}
func (c *glContext) RenderTarget() gpu.RenderTarget {
return gpu.OpenGLRenderTarget{}
func (c *glContext) RenderTarget() (gpu.RenderTarget, error) {
return gpu.OpenGLRenderTarget{}, nil
}
func (c *glContext) API() gpu.API {
+5 -5
View File
@@ -111,21 +111,21 @@ func newMtlContext(w *window) (*mtlContext, error) {
return c, nil
}
func (c *mtlContext) RenderTarget() gpu.RenderTarget {
func (c *mtlContext) RenderTarget() (gpu.RenderTarget, error) {
if c.drawable != 0 || c.texture != 0 {
panic("a previous RenderTarget wasn't Presented")
return nil, errors.New("metal:a previous RenderTarget wasn't Presented")
}
c.drawable = C.nextDrawable(c.layer)
if c.drawable == 0 {
panic("metal: [CAMetalLayer nextDrawable] failed")
return nil, errors.New("metal: [CAMetalLayer nextDrawable] failed")
}
c.texture = C.drawableTexture(c.drawable)
if c.texture == 0 {
panic("metal: CADrawable.texture is nil")
return nil, errors.New("metal: CADrawable.texture is nil")
}
return gpu.MetalRenderTarget{
Texture: unsafe.Pointer(c.texture),
}
}, nil
}
func (c *mtlContext) API() gpu.API {
+1 -1
View File
@@ -105,7 +105,7 @@ type frameEvent struct {
type context interface {
API() gpu.API
RenderTarget() gpu.RenderTarget
RenderTarget() (gpu.RenderTarget, error)
Present() error
Refresh() error
Release()
+5 -1
View File
@@ -198,7 +198,11 @@ func (w *Window) render(frame *op.Ops, viewport image.Point) error {
} else {
w.gpu.Clear(color.NRGBA{A: 0xff, R: 0xff, G: 0xff, B: 0xff})
}
if err := w.gpu.Frame(frame, w.ctx.RenderTarget(), viewport); err != nil {
target, err := w.ctx.RenderTarget()
if err != nil {
return err
}
if err := w.gpu.Frame(frame, target, viewport); err != nil {
return err
}
return w.ctx.Present()
+2 -2
View File
@@ -97,8 +97,8 @@ func NewContext(disp NativeDisplayType) (*Context, error) {
return c, nil
}
func (c *Context) RenderTarget() gpu.RenderTarget {
return gpu.OpenGLRenderTarget{}
func (c *Context) RenderTarget() (gpu.RenderTarget, error) {
return gpu.OpenGLRenderTarget{}, nil
}
func (c *Context) API() gpu.API {