app/internal/gpu: extract profile in separate method, Profile

Updates #26

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-02-07 20:08:50 +01:00
parent 81f958fc70
commit 6e98132ebb
2 changed files with 12 additions and 8 deletions
+7 -4
View File
@@ -25,6 +25,7 @@ type GPU struct {
pathCache *opCache
cache *resourceCache
profile string
timers *timers
frameStart time.Time
zopsTimer, stencilTimer, coverTimer, cleanupTimer *timer
@@ -304,12 +305,11 @@ func (g *GPU) Frame(viewport image.Point) {
g.coverTimer.end()
}
func (g *GPU) EndFrame() string {
func (g *GPU) EndFrame() {
g.cleanupTimer.begin()
g.cache.frame(g.ctx)
g.pathCache.frame(g.ctx)
g.cleanupTimer.end()
var summary string
if g.drawOps.profile && g.timers.ready() {
zt, st, covt, cleant := g.zopsTimer.Elapsed, g.stencilTimer.Elapsed, g.coverTimer.Elapsed, g.cleanupTimer.Elapsed
ft := zt + st + covt + cleant
@@ -317,9 +317,12 @@ func (g *GPU) EndFrame() string {
zt, st, covt = zt.Round(q), st.Round(q), covt.Round(q)
frameDur := time.Since(g.frameStart).Round(q)
ft = ft.Round(q)
summary = fmt.Sprintf("draw:%7s gpu:%7s zt:%7s st:%7s cov:%7s", frameDur, ft, zt, st, covt)
g.profile = fmt.Sprintf("draw:%7s gpu:%7s zt:%7s st:%7s cov:%7s", frameDur, ft, zt, st, covt)
}
return summary
}
func (g *GPU) Profile() string {
return g.profile
}
func (r *renderer) texHandle(t *texture) gl.Texture {
+5 -4
View File
@@ -31,7 +31,7 @@ type frame struct {
}
type frameResult struct {
summary string
profile string
err error
}
@@ -86,7 +86,8 @@ func (l *renderLoop) renderLoop(glctx window.Context) error {
g.Frame(frame.viewport)
var res frameResult
res.err = glctx.Present()
res.summary = g.EndFrame()
g.EndFrame()
res.profile = g.Profile()
glctx.Unlock()
l.results <- res
case <-l.stop:
@@ -109,8 +110,8 @@ func (l *renderLoop) Flush() error {
if l.drawing {
st := <-l.results
l.setErr(st.err)
if st.summary != "" {
l.summary = st.summary
if st.profile != "" {
l.summary = st.profile
}
l.drawing = false
}