1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-03 17:56:21 +03:00
occt/tests/v3d/trsf/bug26029
kgv 0d828ac838 0032208: Tests - refactor visualization tests to cover several graphic drivers
Removed testgrids 'bugs/vis' and '3rdparty'; tests have been redistributed across other grids.
Moved testgrid 'v3d/ivtk' into dedicated 'vtk/ivtk'.

Added testgrid 'vselect' dedicated to 3D viewer picking/selection functionality
and filled with tests from 'v3d/vertex', 'v3d/face' and similar groups.

Added testgrid 'opengl' dedicated to OpenGL driver low-level functionality (GLSL programs and similar)
and filled with tests from 'v3d/glsl', 'v3d/raytrace', '3rdparty/fonts', 'bugs/vis' (portion) and similar.

Added testgrid 'opengles3' dedicated to OpenGL ES 3.0 driver low-level functionality
and reusing tests from 'opengl' testgrid.
Subgroup 'opengles3/raytrace' is disabled on Windows, as Ray-Tracing currently requires OpenGL ES 3.2.
while ANGLE library implements only OpenGL ES 3.0.

Added testgrid 'opengles2' dedicated to OpenGL ES 2.0 driver low-level functionality
and reusing a limited subset of passing tests from 'opengl' testgrid.
Currently testgrid is activated only on Windows platform when using ANGLE library
(properietary OpenGL ES drivers do not allow creation of restricted 2.0 context).

Test cases have been cleaned out to put bug description into log,
to properly load necessary plugins and to explicitly dump viewer.
2021-03-25 19:14:33 +03:00

55 lines
1.6 KiB
Plaintext

puts "============"
puts "0026029: Visualization - Poor performance of connected objects"
puts "Time spent on computation of large number of connected objects"
puts "should grow linearly with the number of objects"
puts "============"
puts ""
pload MODELING VISUALIZATION
psphere s 0.5
tclean s
incmesh s 0.1
trinfo s
vinit View1
vclear
vaxo
#vcaps -vbo 0
vsetdispmode 1
vdefaults -defl 1.0 -autoTriang off
vdisplay s
set aNb1 100
# display 100x100 connected instances of single presentation
puts "Creating [expr $aNb1*$aNb1] instances..."
set t [time {for {set i 0} {$i < $aNb1} {incr i} {for {set j 0} {$j < $aNb1} {incr j} {vconnectto s_${i}_${j} ${i} ${j} 0 s -noupdate}}}]
set d1 [lindex $t 0]
puts "Done in $d1 microseconds!\n"
vclear
set aNb2 200
# display 200x200 connected instances of single presentation
puts "Creating [expr $aNb2*$aNb2] instances..."
set t [time {for {set i 0} {$i < $aNb2} {incr i} {for {set j 0} {$j < $aNb2} {incr j} {vconnectto s_${i}_${j} ${i} ${j} 0 s -noupdate}}}]
set d2 [lindex $t 0]
puts "Done in $d2 microseconds!\n"
vclear
# compare two CPU times: the ratio should be quasi-linear
set expected_ratio [expr double($aNb2 * $aNb2) / double($aNb1 * $aNb1)]
set actual_ratio [expr double($d2) / double($d1)]
puts "Comparing CPU time for the two test cases..."
puts "============================================="
puts "Expected ratio: $expected_ratio"
puts "Actual ratio: $actual_ratio"
puts "============================================="
# Allow 50% deviation from linear growth
if {[expr $actual_ratio / $expected_ratio] > 1.5} {
puts "Error: non-linear time growth detected!"
} else {
puts "Test passed!"
}