Tophat crashes as it doesn't destroy unused render target buffers
Code example:
```
import (
"std.um"
"window.um"
"rt.um"
)
fn testTarget() {
target, err := rt::mk({512, 512}, .linear)
std::exitif(err)
err = target.begin()
std::exitif(err)
err = target.end()
std::exitif(err)
// I expect target to be destroyed here
}
fn test() {
for i := 0; i < 70; i++ {
printf("%d\n", i)
testTarget()
}
}
fn init*() {
window::setup("Test", 800, 600)
window::onFrame.register({
test()
})
}
```
Result:
```
...
58
59
60
61
62
63
64
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
65
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
66
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
67
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
68
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
69
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:110] lib/sokol/sokol_gfx.h:18887:0:
BUFFER_POOL_EXHAUSTED: buffer pool exhausted
[sg][error][id:298] lib/sokol/sokol_gfx.h:18441:0:
VALIDATE_ABND_EXPECTED_VB: sg_apply_bindings: vertex buffer binding is missing or buffer handle is invalid
[sg][panic][id:346] lib/sokol/sokol_gfx.h:17554:0:
VALIDATION_FAILED: validation layer checks failed
ABORTING because of [panic]
```
Tech info:
Crash occurs on both Windows and Linux, even though `th_image_free_render_target` is called in each iteration.
关闭于 2025-10-24 2 条评论