Re: readback + tilesort

Johann Won <[email protected]>
Newsgroups gmane.comp.graphics.chromium.devel
Message-ID <[email protected]>
Hi,

Putting readback + tilesort aside, I'm testing binaryswap + tilesort
configuration.

With the patch, the problem mentioned earlier has been (partially) resolved.
However this time, similar symtpom is found with bswap + tilesort.
The same portion is drawn on each of the tiles ( I applied the patch ).

Attached .conf is a modified version of psubmit_bswap, which uses two tiles.
Please test with it, and give me a comment.

Thanks in advance,

- johann.


Quoting Brian Paul <[email protected]>:

> Joong Ho (Johann) Won wrote:
> > Hi,
> > 
> > I'm testing a combination of readback and tilesort SPUs, of which the
> > ultimate purpose is to let sort-last parallel apps be able to render on
> a
> > DMX mural display. I wrote a simple test script for the first step,
> which is
> > a very simple modification of simplemural.conf.
> > Simplemural.conf uses a tilesort SPU to render an app in two seperate
> > (possibly remote) windows.
> > My intension is just to add a readback SPU on top of the tilesort SPU.
> At
> > this stage, it has nothing to do with DMX.
> > 
> > What should be rendered must be the same as that of the original
> > simplemural.conf, but it is not.
> > SAME part of the application window is rendered on both of the
> crserver
> > windows, i.e. the left half.
> > 
> > Configuration for readback is the simplest, as will be shown below.
> > Mike Houston's guess is that there may be a bug in arguments for
> DrawPixels.
> > Even worse is that when the 'extract_depth' option is turned on,
> nothing is
> > drawn at all.
> > 
> > Below is my modified simplemural.conf script. Only a few lines related
> with
> > readbackSPU are added and without these, everything works fine.
> > 
> > Thanks in advance for any comment.
> 
> I found the problem.  On the server side, the initial current raster 
> position needs to be translated by the origin of the server's tile. 
> Normally, the first call to glRasterPos/glWindowPos would set it 
> correctly, but the tilesort SPU's state tracker was filtering out that 
> state change.
> 
> Try applying this patch to crserverlib/server_context.c
> 
> -Brian
> 
>
psubmit_bswap.conf (application/octet-stream, 3.1 KB)
# Copyright (c) 2001, Stanford University
# All rights reserved
#
# See the file LICENSE.txt for information on redistributing this software.

# Demonstrate parallel submission with sort-last rendering.

import sys
sys.path.append( "../server" )
from mothership import *

NODES = 'tcpip://localhost,tcpip://localhost'
Demo = 'psubmit'

Demo = os.path.join(crbindir, Demo)

# Can render/readback windows be dynamically resized?
resizable = '1'
WIDTH=400
HEIGHT=400
# Set up the server node
servernode1 = CRNetworkNode( )
# Note: set only_swap_once here and pass -swap flag to all clients
servernode1.Conf( 'only_swap_once', 1 )
renderspu = SPU( 'render' )
renderspu.Conf( 'window_geometry', [500, 500, WIDTH/2, HEIGHT] )
servernode1.AddTile( 0,0, WIDTH/2, HEIGHT)
#servernode1.AddTile( 0,0, WIDTH, HEIGHT)
servernode1.Conf('optimize_bucket', 1)
servernode1.AddSPU( renderspu )

servernode2 = CRNetworkNode( )
# Note: set only_swap_once here and pass -swap flag to all clients
servernode2.Conf( 'only_swap_once', 1 )
renderspu = SPU( 'render' )
renderspu.Conf( 'window_geometry', [500+WIDTH/2+10, 500, WIDTH/2, HEIGHT] )
servernode2.AddTile( WIDTH/2, 0, WIDTH/2, HEIGHT)
#servernode2.AddTile( 0, 0, WIDTH, HEIGHT)
servernode2.Conf('optimize_bucket', 1)
servernode2.AddSPU( renderspu )

# Set up first app/client node
appnode1 = CRApplicationNode(  )
# Set this node as the one to actually call SwapBuffers
appnode1.SetApplication( '%s -rank 0 -size 2 -clear -swap' % Demo )
appnode1.StartDir( crbindir )
spu = SPU('binaryswap')
spu.Conf('window_geometry', [0, 0, 400, 400])
spu.Conf('type', 'depth')
#spu.Conf('type', 'alpha')
spu.Conf('resizable', resizable)
spu.Conf('peers', NODES)
# only specifying visual to work-around ATI FireGL problem
spu.Conf('default_visual', 'rgb, double, depth, stencil')
spu.Conf('node_number', '0')
spu.Conf('title', 'binary-swap SPU node 0')
appnode1.AddSPU( spu )
spu = SPU('tilesort')
spu.Conf('bucket_mode', 'Uniform Grid')
spu.Conf('draw_bbox',0)
spu.Conf('bbox_scale', 1.0)
spu.Conf('dlist_state_tracking', 0)
spu.Conf('fake_window_dims', [ WIDTH, HEIGHT ] )
spu.AddServer( servernode1, 'tcpip', port=7010 )
spu.AddServer( servernode2, 'tcpip', port=7020 )
appnode1.AddSPU( spu )

# Set up second app/client node
appnode2 = CRApplicationNode( )
appnode2.SetApplication( '%s -rank 1 -size 2 -clear -swap' % Demo )
appnode2.StartDir( crbindir )
spu = SPU('binaryswap')
spu.Conf('window_geometry', [420, 0, 400, 400])
spu.Conf('type', 'depth')
spu.Conf('resizable', resizable)
spu.Conf('peers', NODES)
# only specifying visual to work-around ATI FireGL problem
spu.Conf('default_visual', 'rgb, double, depth, stencil')
spu.Conf('node_number', '1')
spu.Conf('title', 'binary-swap SPU node 1')
appnode2.AddSPU( spu )
spu = SPU('tilesort')
spu.Conf('bucket_mode', 'Uniform Grid')
spu.Conf('draw_bbox',0)
spu.Conf('bbox_scale', 1.0)
spu.Conf('dlist_state_tracking', 0)
spu.Conf('fake_window_dims', [ WIDTH, HEIGHT ] )
spu.AddServer( servernode1, 'tcpip', port=7010 )
spu.AddServer( servernode2, 'tcpip', port=7020 )
appnode2.AddSPU( spu )

cr = CR()
cr.MTU( 1024*1024 )
cr.AddNode( servernode1 )
cr.AddNode( servernode2 )
cr.AddNode( appnode1 )
cr.AddNode( appnode2 )
cr.Go()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.