luv

Workshop wiki

renderer-tests.lisp

luvcraft/renderer-tests.lisp

system luvcraft/core/test · 12 definitions · on GitHub

in-package#:luvcraft.tests
defclassrenderer-release-probe
failures-remaining:initarg:failures-remaining:initform0:accessorrenderer-release-probe-failures-remaining
attempts:initform0:accessorrenderer-release-probe-attempts
defmethoddestroy
incf
renderer-release-probe-attemptsprobe
when
plusp
renderer-release-probe-failures-remainingprobe
decf
renderer-release-probe-failures-remainingprobe
error"Synthetic renderer resource release failure."
probe
defclassworld-panel-order-probe
depth:initarg:depth:readerworld-panel-order-probe-depth
defmethodluvcraft-overlay-stage
declare
ignoreprobe
:world-panel
defmethodluvcraft-world-panel-depth
declare
ignoresession
world-panel-order-probe-depthprobe
deftestnative-density-world-panels-order-back-to-front
let*
near
make-instance'world-panel-order-probe:depth1.0
middle
make-instance'world-panel-order-probe:depth2.0
far
make-instance'world-panel-order-probe:depth3.0
scene
gensym"SCENE"
session
make-instance'luvcraft-session
setf
luvcraft-session-overlayssession
listnearscenefarmiddle
ok
deftestsession-coordinates-one-renderer-owner
let*
pipeline
gensym"PIPELINE"
resource
gensym"RESOURCE"
replacement
gensym"REPLACEMENT"
renderer
make-instance'luvcraft-renderer:block-pipelinepipeline:resources
listresource
session
make-instance'luvcraft-session:rendererrenderer
ok
eqrenderer
luvcraft-session-renderersession
ok
equal
listresource
luvcraft::luvcraft-renderer-resourcesrenderer
setf
luvcraft::luvcraft-renderer-resourcesrenderer
listreplacement
ok
equal
listreplacement
luvcraft::luvcraft-renderer-resourcesrenderer
deftestframe-attachments-publish-as-one-session-facing-cohort
let*
old-color
gensym"OLD-COLOR"
old-depth
gensym"OLD-DEPTH"
old-panel-color
gensym"OLD-PANEL-COLOR"
old-panel-depth
gensym"OLD-PANEL-DEPTH"
new-color
gensym"NEW-COLOR"
new-depth
gensym"NEW-DEPTH"
new-panel-color
gensym"NEW-PANEL-COLOR"
new-panel-depth
gensym"NEW-PANEL-DEPTH"
old-attachments
list:render-extent'
640480
:presentation-extent'
1280960
:color-textureold-color:depth-textureold-depth:world-panel-color-textureold-panel-color:world-panel-depth-textureold-panel-depth
new-attachments
list:render-extent'
1280720
:presentation-extent'
25601440
:color-texturenew-color:depth-texturenew-depth:world-panel-color-texturenew-panel-color:world-panel-depth-texturenew-panel-depth
renderer
make-instance'luvcraft-renderer:frame-attachmentsold-attachments:resources
listold-colorold-depthold-panel-colorold-panel-depth
session
make-instance'luvcraft-session:rendererrenderer
ok
eqold-attachments
luvcraft::luvcraft-renderer-frame-attachmentsrenderer
ok
eqnew-attachments
luvcraft::luvcraft-renderer-frame-attachmentsrenderer
ok
equal
listnew-colornew-depthnew-panel-colornew-panel-depthold-colorold-depthold-panel-colorold-panel-depth
luvcraft::luvcraft-renderer-resourcesrenderer
deftestpresentation-depth-composes-native-density-world-panels
let*
resources
shader:shader-specification-resourcesspecification
panel-color
find'world-panel-colorresources:key#'shader:shader-object-name:test#'string-equal
panel-depth
find'world-panel-depthresources:key#'shader:shader-object-name:test#'string-equal
okpanel-color
okpanel-depth
ok
=7
shader:shader-resource-bindingpanel-color
ok
=8
shader:shader-resource-bindingpanel-depth
ok
find'panel-visible
shader:shader-specification-bindingsspecification
:key#'shader:shader-object-name:test#'string-equal
deftestlive-session-migration-adopts-the-old-render-inventory
let*
atlas
gensym"ATLAS"
color
gensym"COLOR"
depth
gensym"DEPTH"
pipeline
gensym"PIPELINE"
resource
gensym"RESOURCE"
states
make-hash-table
session
make-instance'luvcraft-session
renderer
luvcraft::make-luvcraft-renderer-from-retired-session-slotssession
list'luvcraft::atlas-textureatlas'luvcraft::render-extent'
1024768
'luvcraft::color-texturecolor'luvcraft::depth-texturedepth'luvcraft::block-pipelinepipeline'luvcraft::frame-statesstates'luvcraft::resources
listresource
ok
eqatlas
luvcraft::luvcraft-renderer-atlas-texturerenderer
ok
eqstates
luvcraft::luvcraft-renderer-frame-statesrenderer
ok
equal
listresource
luvcraft::luvcraft-renderer-resourcesrenderer
deftestrenderer-resource-release-retains-a-failed-handle-for-retry
let*
resource
make-instance'renderer-release-probe:failures-remaining1
renderer
make-instance'luvcraft-renderer:resources
listresource
ok
=1
renderer-release-probe-attemptsresource
ok
equal
listresource
luvcraft::luvcraft-renderer-resourcesrenderer
ok
=2
renderer-release-probe-attemptsresource
ok
null
luvcraft::luvcraft-renderer-resourcesrenderer

Once the owner has forgotten a successful release, repeating teardown cannot destroy the same native handle again.

ok
=2
renderer-release-probe-attemptsresource
deftestrenderer-release-deduplicates-its-resource-inventory
let*
resource
renderer
make-instance'luvcraft-renderer:resources
listresourceresource
ok
=1
renderer-release-probe-attemptsresource
ok
null
luvcraft::luvcraft-renderer-resourcesrenderer