mirror of
https://github.com/ZDoom/gzdoom.git
synced 2024-11-27 22:33:17 +00:00
- some code cleanup.
This commit is contained in:
parent
bf6079af46
commit
904cc2e158
5 changed files with 9 additions and 305 deletions
|
@ -52,7 +52,6 @@
|
|||
|
||||
#include "gl/system/gl_interface.h"
|
||||
#include "gl/system/gl_framebuffer.h"
|
||||
#include "gl/system/gl_threads.h"
|
||||
#include "gl/system/gl_cvars.h"
|
||||
#include "gl/renderer/gl_renderer.h"
|
||||
#include "gl/renderer/gl_lightdata.h"
|
||||
|
@ -76,8 +75,6 @@
|
|||
//
|
||||
//===========================================================================
|
||||
|
||||
EXTERN_CVAR(Bool, gl_render_segs)
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Initialize
|
||||
|
@ -117,14 +114,12 @@ void FGLRenderer::Initialize()
|
|||
SetupLevel();
|
||||
mShaderManager = new FShaderManager;
|
||||
mSamplerManager = new FSamplerManager;
|
||||
//mThreadManager = new FGLThreadManager;
|
||||
}
|
||||
|
||||
FGLRenderer::~FGLRenderer()
|
||||
{
|
||||
gl_DeleteAllAttachedLights();
|
||||
FMaterial::FlushAll();
|
||||
//if (mThreadManager != NULL) delete mThreadManager;
|
||||
if (mShaderManager != NULL) delete mShaderManager;
|
||||
if (mSamplerManager != NULL) delete mSamplerManager;
|
||||
if (mVBO != NULL) delete mVBO;
|
||||
|
|
|
@ -16,7 +16,6 @@ struct FDrawInfo;
|
|||
struct pspdef_t;
|
||||
class FShaderManager;
|
||||
class GLPortal;
|
||||
class FGLThreadManager;
|
||||
class FLightBuffer;
|
||||
class FSamplerManager;
|
||||
|
||||
|
@ -58,7 +57,6 @@ public:
|
|||
AActor *mViewActor;
|
||||
FShaderManager *mShaderManager;
|
||||
FSamplerManager *mSamplerManager;
|
||||
FGLThreadManager *mThreadManager;
|
||||
int gl_spriteindex;
|
||||
unsigned int mFBID;
|
||||
|
||||
|
|
|
@ -186,20 +186,9 @@ static void AddLine (seg_t *seg)
|
|||
{
|
||||
SetupWall.Clock();
|
||||
|
||||
//if (!gl_multithreading)
|
||||
{
|
||||
GLWall wall;
|
||||
wall.sub = currentsubsector;
|
||||
wall.Process(seg, currentsector, backsector);
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
FJob *job = new FGLJobProcessWall(currentsubsector, seg,
|
||||
currentsector->sectornum, backsector != NULL? backsector->sectornum : -1);
|
||||
GLRenderer->mThreadManager->AddJob(job);
|
||||
}
|
||||
*/
|
||||
GLWall wall;
|
||||
wall.sub = currentsubsector;
|
||||
wall.Process(seg, currentsector, backsector);
|
||||
rendered_lines++;
|
||||
|
||||
SetupWall.Unclock();
|
||||
|
@ -341,21 +330,11 @@ static inline void RenderThings(subsector_t * sub, sector_t * sector)
|
|||
sector_t * sec=sub->sector;
|
||||
if (sec->thinglist != NULL)
|
||||
{
|
||||
//if (!gl_multithreading)
|
||||
// Handle all things in sector.
|
||||
for (AActor * thing = sec->thinglist; thing; thing = thing->snext)
|
||||
{
|
||||
// Handle all things in sector.
|
||||
for (AActor * thing = sec->thinglist; thing; thing = thing->snext)
|
||||
{
|
||||
GLRenderer->ProcessSprite(thing, sector);
|
||||
}
|
||||
GLRenderer->ProcessSprite(thing, sector);
|
||||
}
|
||||
/*
|
||||
else if (sec->thinglist != NULL)
|
||||
{
|
||||
FJob *job = new FGLJobProcessSprites(sector);
|
||||
GLRenderer->mThreadManager->AddJob(job);
|
||||
}
|
||||
*/
|
||||
}
|
||||
SetupSprite.Unclock();
|
||||
}
|
||||
|
@ -416,20 +395,10 @@ static void DoSubsector(subsector_t * sub)
|
|||
{
|
||||
SetupSprite.Clock();
|
||||
|
||||
//if (!gl_multithreading)
|
||||
for (i = ParticlesInSubsec[DWORD(sub-subsectors)]; i != NO_PARTICLE; i = Particles[i].snext)
|
||||
{
|
||||
for (i = ParticlesInSubsec[DWORD(sub-subsectors)]; i != NO_PARTICLE; i = Particles[i].snext)
|
||||
{
|
||||
GLRenderer->ProcessParticle(&Particles[i], fakesector);
|
||||
}
|
||||
GLRenderer->ProcessParticle(&Particles[i], fakesector);
|
||||
}
|
||||
/*
|
||||
else if (ParticlesInSubsec[DWORD(sub-subsectors)] != NO_PARTICLE)
|
||||
{
|
||||
FJob job = new FGLJobProcessParticles(sub);
|
||||
GLRenderer->mThreadManager->AddJob(job);
|
||||
}
|
||||
*/
|
||||
SetupSprite.Unclock();
|
||||
}
|
||||
|
||||
|
@ -476,17 +445,7 @@ static void DoSubsector(subsector_t * sub)
|
|||
srf |= SSRF_PROCESSED;
|
||||
|
||||
SetupFlat.Clock();
|
||||
//if (!gl_multithreading)
|
||||
{
|
||||
GLRenderer->ProcessSector(fakesector);
|
||||
}
|
||||
/*
|
||||
else
|
||||
{
|
||||
FJob *job = new FGLJobProcessFlats(sub);
|
||||
GLRenderer->mThreadManager->AddJob(job);
|
||||
}
|
||||
*/
|
||||
GLRenderer->ProcessSector(fakesector);
|
||||
SetupFlat.Unclock();
|
||||
}
|
||||
// mark subsector as processed - but mark for rendering only if it has an actual area.
|
||||
|
|
|
@ -36,7 +36,6 @@ EXTERN_CVAR(Bool,gl_mirror_envmap)
|
|||
|
||||
EXTERN_CVAR(Bool,gl_mirrors)
|
||||
EXTERN_CVAR(Bool,gl_mirror_envmap)
|
||||
EXTERN_CVAR(Bool, gl_render_segs)
|
||||
EXTERN_CVAR(Bool, gl_seamless)
|
||||
|
||||
EXTERN_CVAR(Float, gl_mask_threshold)
|
||||
|
|
|
@ -1,247 +0,0 @@
|
|||
#if 0 //ndef __GL_THREADS_H
|
||||
#define __GL_THREADS_H
|
||||
|
||||
#ifdef WIN32
|
||||
#include <process.h>
|
||||
#endif
|
||||
|
||||
#include "critsec.h"
|
||||
|
||||
// system specific Base classes - should be externalized to a separate header later.
|
||||
#ifdef WIN32
|
||||
class FEvent
|
||||
{
|
||||
HANDLE mEvent;
|
||||
|
||||
public:
|
||||
|
||||
FEvent(bool manual = true, bool initial = false)
|
||||
{
|
||||
mEvent = CreateEvent(NULL, manual, initial, NULL);
|
||||
}
|
||||
|
||||
~FEvent()
|
||||
{
|
||||
CloseHandle(mEvent);
|
||||
}
|
||||
|
||||
void Set()
|
||||
{
|
||||
SetEvent(mEvent);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
ResetEvent(mEvent);
|
||||
}
|
||||
};
|
||||
|
||||
class FThread
|
||||
{
|
||||
protected:
|
||||
uintptr_t hThread;
|
||||
bool mTerminateRequest;
|
||||
public:
|
||||
|
||||
FThread(int stacksize)
|
||||
{
|
||||
hThread = _beginthreadex(NULL, stacksize, StaticRun, this, 0, NULL);
|
||||
}
|
||||
|
||||
virtual ~FThread()
|
||||
{
|
||||
CloseHandle((HANDLE)hThread);
|
||||
}
|
||||
|
||||
void SignalTerminate()
|
||||
{
|
||||
mTerminateRequest = true;
|
||||
}
|
||||
|
||||
virtual void Run() = 0;
|
||||
|
||||
private:
|
||||
static unsigned __stdcall StaticRun(void *param)
|
||||
{
|
||||
FThread *thread = (FThread*)param;
|
||||
thread->Run();
|
||||
return 0;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#else
|
||||
class FEvent
|
||||
{
|
||||
public:
|
||||
|
||||
FEvent(bool manual = true, bool initial = false)
|
||||
{
|
||||
}
|
||||
|
||||
~FEvent()
|
||||
{
|
||||
}
|
||||
|
||||
void Set()
|
||||
{
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class FThread
|
||||
{
|
||||
protected:
|
||||
bool mTerminateRequest;
|
||||
public:
|
||||
|
||||
FThread(int stacksize)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~FThread()
|
||||
{
|
||||
}
|
||||
|
||||
void SignalTerminate()
|
||||
{
|
||||
mTerminateRequest = true;
|
||||
}
|
||||
|
||||
virtual void Run() = 0;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
CS_ValidateTexture,
|
||||
CS_Hacks,
|
||||
CS_Drawlist,
|
||||
CS_Portals,
|
||||
|
||||
MAX_GL_CRITICAL_SECTIONS
|
||||
};
|
||||
|
||||
class FJob
|
||||
{
|
||||
friend class FJobQueue;
|
||||
FJob *pNext;
|
||||
FJob *pPrev;
|
||||
|
||||
public:
|
||||
FJob() { pNext = pPrev = NULL; }
|
||||
virtual ~FJob();
|
||||
virtual void Run() = 0;
|
||||
};
|
||||
|
||||
class FJobQueue
|
||||
{
|
||||
FCriticalSection mCritSec; // for limiting access
|
||||
FEvent mEvent; // signals that the queue is emoty or not
|
||||
FJob *pFirst;
|
||||
FJob *pLast;
|
||||
|
||||
public:
|
||||
FJobQueue();
|
||||
~FJobQueue();
|
||||
|
||||
void AddJob(FJob *job);
|
||||
FJob *GetJob();
|
||||
};
|
||||
|
||||
class FJobThread : public FThread
|
||||
{
|
||||
FJobQueue *mQueue;
|
||||
|
||||
public:
|
||||
FJobThread(FJobQueue *queue);
|
||||
~FJobThread();
|
||||
void Run();
|
||||
};
|
||||
|
||||
class FGLJobProcessWall : public FJob
|
||||
{
|
||||
seg_t *mSeg;
|
||||
subsector_t *mSub;
|
||||
int mFrontsector, mBacksector;
|
||||
public:
|
||||
FGLJobProcessWall(seg_t *seg, subsector_t *sub, int frontsector, int backsector)
|
||||
{
|
||||
mSeg = seg;
|
||||
mSub = sub;
|
||||
mFrontsector = frontsector;
|
||||
mBacksector = backsector;
|
||||
}
|
||||
|
||||
void Run();
|
||||
};
|
||||
|
||||
class FGLJobProcessSprites : public FJob
|
||||
{
|
||||
sector_t *mSector;
|
||||
public:
|
||||
FGLJobProcessSprites(sector_t *sector);
|
||||
void Run();
|
||||
};
|
||||
|
||||
class FGLJobProcessParticles : public FJob
|
||||
{
|
||||
subsector_t *mSubsector;
|
||||
public:
|
||||
FGLJobProcessParticles(subsector_t *subsector);
|
||||
void Run();
|
||||
};
|
||||
|
||||
class FGLJobProcessFlats : public FJob
|
||||
{
|
||||
subsector_t *mSubsector;
|
||||
public:
|
||||
FGLJobProcessFlats(subsector_t *subsector);
|
||||
void Run();
|
||||
};
|
||||
|
||||
|
||||
class FGLThreadManager
|
||||
{
|
||||
#if 0
|
||||
FCriticalSection mCritSecs[MAX_GL_CRITICAL_SECTIONS];
|
||||
FJobQueue mJobs;
|
||||
FJobThread *mThreads[2];
|
||||
|
||||
public:
|
||||
FGLThreadManager() {}
|
||||
~FGLThreadManager() {}
|
||||
|
||||
void StartJobs();
|
||||
|
||||
void PauseJobs();
|
||||
|
||||
void EnterCS(int index)
|
||||
{
|
||||
mCritSecs[index].Enter();
|
||||
}
|
||||
|
||||
void LeaveCS(int index)
|
||||
{
|
||||
mCritSecs[index].Leave();
|
||||
}
|
||||
|
||||
void AddJob(FJob *job)
|
||||
{
|
||||
mJobs.AddJob(job);
|
||||
}
|
||||
|
||||
FJob *GetJob()
|
||||
{
|
||||
return mJobs.GetJob();
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue