Text archives Help
- From: cgribble@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1146 - in trunk: Engine/Control Model/Groups Model/Materials Model/Primitives scenes
- Date: Tue, 18 Jul 2006 20:38:40 -0600 (MDT)
Author: cgribble
Date: Tue Jul 18 20:38:34 2006
New Revision: 1146
Added:
trunk/Engine/Control/DynPLTQueue.h
Removed:
trunk/Model/Materials/DynPLTMaterial.cc
trunk/Model/Materials/DynPLTMaterial.h
Modified:
trunk/Engine/Control/CMakeLists.txt
trunk/Engine/Control/DynPLTWorker.cc
trunk/Engine/Control/DynPLTWorker.h
trunk/Model/Groups/TimeSteppedParticles.cc
trunk/Model/Groups/TimeSteppedParticles.h
trunk/Model/Materials/CMakeLists.txt
trunk/Model/Primitives/DynPLTGridSpheres.cc
trunk/Model/Primitives/DynPLTGridSpheres.h
trunk/scenes/dynplt.cc
Log:
Model/Groups/TimeSteppedParticles.h
Model/Groups/TimeSteppedParticles.cc
Model/Primitives/DynPLTGridSpheres.cc
Model/Primitives/DynPLTGridSpheres.h
Engine/Control/DynPLTWorker.cc
Engine/Control/DynPLTWorker.h
Engine/Control/CMakeLists.txt
scenes/dynplt.cc
Change SCIRun::Mailbox<DynPLTMessage> to new DynPLTQueue class
Moved DynPLTMessage struct into "DynPLTQueue.h"
Engine/Control/DynPLTQueue.h
Added generic DynPLTQueue base class
Added FIFO implementation based on SCIRun::Mailbox<DynPLTMessage>
Model/Materials/CMakeLists.txt
Model/Materials/DynPLTMaterial.h
Model/Materials/DynPLTMaterial.cc
Remove unnecessary files from the repository
Modified: trunk/Engine/Control/CMakeLists.txt
==============================================================================
--- trunk/Engine/Control/CMakeLists.txt (original)
+++ trunk/Engine/Control/CMakeLists.txt Tue Jul 18 20:38:34 2006
@@ -8,6 +8,7 @@
IF(BUILD_DYNPLT)
SET(Manta_Control_SRCS
${Manta_Control_SRCS}
+ Control/DynPLTQueue.h
Control/DynPLTWorker.h
Control/DynPLTWorker.cc
)
Added: trunk/Engine/Control/DynPLTQueue.h
==============================================================================
--- (empty file)
+++ trunk/Engine/Control/DynPLTQueue.h Tue Jul 18 20:38:34 2006
@@ -0,0 +1,81 @@
+
+#ifndef Manta_Engine_DynPLTQueue_h
+#define Manta_Engine_DynPLTQueue_h
+
+#include <MantaTypes.h>
+#include <SCIRun/Core/Thread/Mailbox.h>
+
+#include <float.h>
+
+namespace Manta
+{
+ class DynPLTGridSpheres;
+
+ struct DynPLTMessage {
+ DynPLTMessage(int particle, const DynPLTGridSpheres* grid) :
+ particle(particle), grid(grid)
+ {
+ // Do nothing
+ }
+ DynPLTMessage(void) :
+ particle(-1), grid(0)
+ {
+ // Do nothing
+ }
+
+ int particle;
+ const DynPLTGridSpheres* grid;
+ };
+
+ class DynPLTQueue
+ {
+ public:
+ DynPLTQueue(void) { /* no-op */ }
+ ~DynPLTQueue(void) { /* no-op */ }
+
+ virtual bool tryReceive(DynPLTMessage& msg) = 0;
+ virtual DynPLTMessage receive(void) = 0;
+
+ virtual bool trySend(const DynPLTMessage& msg) = 0;
+ virtual void send(const DynPLTMessage& msg) = 0;
+ };
+
+ class DynPLTFifoQ : public DynPLTQueue
+ {
+ public:
+ DynPLTFifoQ(int size)
+ {
+ mailbox=new SCIRun::Mailbox<DynPLTMessage>("DynPLT Work Queue", size);
+ }
+
+ ~DynPLTFifoQ(void)
+ {
+ delete mailbox;
+ }
+
+ bool tryReceive(DynPLTMessage& msg)
+ {
+ return mailbox->tryReceive(msg);
+ }
+
+ DynPLTMessage receive(void)
+ {
+ return mailbox->receive();
+ }
+
+ bool trySend(const DynPLTMessage& msg)
+ {
+ mailbox->trySend(msg);
+ }
+
+ void send(const DynPLTMessage& msg)
+ {
+ mailbox->send(msg);
+ }
+
+ private:
+ SCIRun::Mailbox<DynPLTMessage>* mailbox;
+ };
+}
+
+#endif
Modified: trunk/Engine/Control/DynPLTWorker.cc
==============================================================================
--- trunk/Engine/Control/DynPLTWorker.cc (original)
+++ trunk/Engine/Control/DynPLTWorker.cc Tue Jul 18 20:38:34 2006
@@ -2,6 +2,7 @@
#include <Interface/Context.h>
#include <Interface/Packet.h>
#include <Interface/Scene.h>
+#include <Engine/Control/DynPLTQueue.h>
#include <Engine/Control/DynPLTWorker.h>
#include <Engine/Shadows/HardShadows.h>
#include <Model/Primitives/DynPLTGridSpheres.h>
@@ -23,7 +24,7 @@
// isn't empty, and never when it is empty
DynPLTContext::DynPLTContext(MantaInterface* manta_interface,
- SCIRun::Mailbox<DynPLTMessage>* queue,
+ DynPLTQueue* queue,
Scene* scene, unsigned int ngroups,
unsigned int nsamples, unsigned int max_depth,
bool dilate, Background* background, double
runtime,
Modified: trunk/Engine/Control/DynPLTWorker.h
==============================================================================
--- trunk/Engine/Control/DynPLTWorker.h (original)
+++ trunk/Engine/Control/DynPLTWorker.h Tue Jul 18 20:38:34 2006
@@ -16,6 +16,7 @@
namespace Manta
{
class Background;
+ class DynPLTMessage;
class MantaInterface;
class RayPacket;
class Scene;
@@ -26,7 +27,7 @@
{
public:
DynPLTContext(MantaInterface* manta_interface,
- SCIRun::Mailbox<DynPLTMessage>* queue, Scene* scene,
+ DynPLTQueue* queue, Scene* scene,
unsigned int ngroups, unsigned int nsamples,
unsigned int max_depth, bool dilate,
Background* background, double runtime=DBL_MAX,
@@ -38,7 +39,7 @@
MantaInterface* manta_interface;
// DynPLT work queue
- SCIRun::Mailbox<DynPLTMessage>* queue;
+ DynPLTQueue* queue;
// Manta scene
Scene* scene;
Modified: trunk/Model/Groups/TimeSteppedParticles.cc
==============================================================================
--- trunk/Model/Groups/TimeSteppedParticles.cc (original)
+++ trunk/Model/Groups/TimeSteppedParticles.cc Tue Jul 18 20:38:34 2006
@@ -16,7 +16,7 @@
TimeSteppedParticles::TimeSteppedParticles(const string& filename, int
ncells,
int depth, Real radius, int ridx,
RegularColorMap* cmap, int cidx,
- SCIRun::Mailbox<DynPLTMessage>*
queue,
+ DynPLTQueue* queue,
int min, int max) :
tstep(0)
{
Modified: trunk/Model/Groups/TimeSteppedParticles.h
==============================================================================
--- trunk/Model/Groups/TimeSteppedParticles.h (original)
+++ trunk/Model/Groups/TimeSteppedParticles.h Tue Jul 18 20:38:34 2006
@@ -14,6 +14,7 @@
namespace Manta
{
+ class DynPLTQueue;
class RegularColorMap;
class TimeSteppedParticles : public Group
@@ -21,7 +22,7 @@
public:
TimeSteppedParticles(const string& filename, int ncells, int depth,
Real radius, int ridx, RegularColorMap* cmap, int
cidx,
- SCIRun::Mailbox<DynPLTMessage>* queue=0, int min=0,
+ DynPLTQueue* queue=0, int min=0,
int max=INT_MAX);
~TimeSteppedParticles(void);
Modified: trunk/Model/Materials/CMakeLists.txt
==============================================================================
--- trunk/Model/Materials/CMakeLists.txt (original)
+++ trunk/Model/Materials/CMakeLists.txt Tue Jul 18 20:38:34 2006
@@ -25,11 +25,3 @@
Materials/CopyColorMaterial.cc
Materials/CopyColorMaterial.h
)
-
-IF(BUILD_DYNPLT)
- SET(Manta_Materials_SRCS
- ${Manta_Materials_SRCS}
- Materials/DynPLTMaterial.h
- Materials/DynPLTMaterial.cc
- )
-ENDIF(BUILD_DYNPLT)
Modified: trunk/Model/Primitives/DynPLTGridSpheres.cc
==============================================================================
--- trunk/Model/Primitives/DynPLTGridSpheres.cc (original)
+++ trunk/Model/Primitives/DynPLTGridSpheres.cc Tue Jul 18 20:38:34 2006
@@ -1,9 +1,10 @@
#include <Core/Color/RegularColorMap.h>
+#include <Engine/Control/DynPLTQueue.h>
+#include <Engine/Control/DynPLTWorker.h>
#include <Interface/AmbientLight.h>
#include <Interface/LightSet.h>
#include <Interface/RayPacket.h>
-#include <Engine/Control/DynPLTWorker.h>
#include <Model/Primitives/DynPLTGridSpheres.h>
#include <iostream>
@@ -12,7 +13,7 @@
using namespace Manta;
using namespace SCIRun;
-DynPLTGridSpheres::DynPLTGridSpheres(SCIRun::Mailbox<DynPLTMessage>* queue,
+DynPLTGridSpheres::DynPLTGridSpheres(DynPLTQueue* queue,
float* spheres, int nspheres, int nvars,
int ncells, int depth, Real radius,
int ridx, RegularColorMap* cmap, int
cidx) :
Modified: trunk/Model/Primitives/DynPLTGridSpheres.h
==============================================================================
--- trunk/Model/Primitives/DynPLTGridSpheres.h (original)
+++ trunk/Model/Primitives/DynPLTGridSpheres.h Tue Jul 18 20:38:34 2006
@@ -14,6 +14,7 @@
namespace Manta {
class DynPLTContext;
class DynPLTGridSpheres;
+ class DynPLTQueue;
class RegularColorMap;
class DynPLT {
@@ -31,22 +32,6 @@
Real inside[XRES][YRES];
};
- struct DynPLTMessage {
- DynPLTMessage(int particle, const DynPLTGridSpheres* grid) :
- particle(particle), grid(grid)
- {
- // Do nothing
- }
- DynPLTMessage(void) :
- particle(-1), grid(0)
- {
- // Do nothing
- }
-
- int particle;
- const DynPLTGridSpheres* grid;
- };
-
class DynPLTGridSpheres : public GridSpheres
{
public:
@@ -55,7 +40,7 @@
GlobalIllumination
} TextureMode;
- DynPLTGridSpheres(SCIRun::Mailbox<DynPLTMessage>* queue, float* spheres,
+ DynPLTGridSpheres(DynPLTQueue* queue, float* spheres,
int nspheres, int nvars, int ncells, int depth,
Real radius, int ridx, RegularColorMap* cmap, int
cidx);
~DynPLTGridSpheres(void);
@@ -131,7 +116,7 @@
}
}
- SCIRun::Mailbox<DynPLTMessage>* queue;
+ DynPLTQueue* queue;
mutable vector<bool> requested;
vector<bool> allocated;
vector<bool> valid;
Modified: trunk/scenes/dynplt.cc
==============================================================================
--- trunk/scenes/dynplt.cc (original)
+++ trunk/scenes/dynplt.cc Tue Jul 18 20:38:34 2006
@@ -2,6 +2,7 @@
#include <Core/Exceptions/IllegalArgument.h>
#include <Core/Geometry/Vector.h>
#include <Core/Util/Args.h>
+#include <Engine/Control/DynPLTQueue.h>
#include <Engine/Control/DynPLTWorker.h>
#include <Interface/Context.h>
#include <Interface/LightSet.h>
@@ -16,7 +17,6 @@
#include <Model/Primitives/DynPLTGridSpheres.h>
#include <Model/Primitives/Sphere.h>
#include <Model/Readers/ParticleNRRD.h>
-#include <SCIRun/Core/Thread/Mailbox.h>
#include <SCIRun/Core/Thread/Thread.h>
#include <sgi_stl_warnings_off.h>
@@ -157,8 +157,9 @@
Scene* scene=new Scene();
// Create DynPLT work queue
- Mailbox<DynPLTMessage>* queue=new Mailbox<DynPLTMessage>("DynPLT Work
Queue",
- nthreads*qsize);
+ DynPLTQueue* queue;
+ // XXX: temporary (should switch on queue type)
+ queue=new DynPLTFifoQ(nthreads*qsize);
Background* bg=0;
if (env_fname != "")
- [MANTA] r1146 - in trunk: Engine/Control Model/Groups Model/Materials Model/Primitives scenes, cgribble, 07/18/2006
Archive powered by MHonArc 2.6.16.