Skip to content

Commit

Permalink
xrRender_GL: now dll is loaded without error on linux
Browse files Browse the repository at this point in the history
  • Loading branch information
eagleivg committed Sep 29, 2018
1 parent 59086d0 commit 6728a54
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 26 deletions.
2 changes: 2 additions & 0 deletions src/Layers/xrRenderPC_GL/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ list(APPEND DIRS
"../xrRender"
"../xrRender/blenders"
"../xrRenderGL"
"../xrRenderGL/MSAA"
"../xrRenderGL/GL Rain"
"../../Include/xrRender"
)

Expand Down
26 changes: 15 additions & 11 deletions src/Layers/xrRenderPC_GL/gl_rendertarget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
#include "Layers/xrRenderDX10/MSAA/dx10MSAABlender.h"
#include "Layers/xrRenderDX10/DX10 Rain/dx10RainBlender.h"

#if defined(LINUX)
float OLES_SUN_LIMIT_27_01_07 = 100.f;
#endif

void CRenderTarget::u_setrt(const ref_rt& _1, const ref_rt& _2, const ref_rt& _3, GLuint zb)
{
if (_1)
Expand Down Expand Up @@ -188,7 +192,7 @@ Ivector vpack(Fvector src)
float e_best = flt_max;
int r = bx, g = by, b = bz;
#ifdef DEBUG
int d=0;
int d=0;
#else
int d = 3;
#endif
Expand Down Expand Up @@ -248,11 +252,11 @@ CRenderTarget::CRenderTarget()
SampleCount = RImplementation.o.dx10_msaa_samples;

#ifdef DEBUG
Msg ("MSAA samples = %d", SampleCount );
Msg ("MSAA samples = %d", SampleCount );
if( RImplementation.o.dx10_msaa_opt )
Msg ("dx10_MSAA_opt = on" );
Msg ("dx10_MSAA_opt = on" );
if( RImplementation.o.dx10_gbuffer_opt )
Msg ("dx10_gbuffer_opt = on" );
Msg ("dx10_gbuffer_opt = on" );
#endif // DEBUG
param_blur = 0.f;
param_gray = 0.f;
Expand Down Expand Up @@ -897,7 +901,7 @@ CRenderTarget::CRenderTarget()
s_flip.create("effects\\screen_set", r2_base);
g_flip.create(FVF::F_TL, RCache.Vertex.Buffer(), RCache.QuadIB);

//
//
dwWidth = Device.dwWidth;
dwHeight = Device.dwHeight;
}
Expand All @@ -914,13 +918,13 @@ CRenderTarget::~CRenderTarget()
t_LUM_dest->surface_set(GL_TEXTURE_2D, NULL);

#ifdef DEBUG
GLuint pSurf = 0;
GLuint pSurf = 0;

pSurf = t_envmap_0->surface_get();
glDeleteTextures(1, &pSurf);
pSurf = t_envmap_0->surface_get();
glDeleteTextures(1, &pSurf);

pSurf = t_envmap_1->surface_get();
glDeleteTextures(1, &pSurf);
pSurf = t_envmap_1->surface_get();
glDeleteTextures(1, &pSurf);
#endif // DEBUG
t_envmap_0->surface_set(GL_TEXTURE_CUBE_MAP, NULL);
t_envmap_1->surface_set(GL_TEXTURE_CUBE_MAP, NULL);
Expand All @@ -940,7 +944,7 @@ CRenderTarget::~CRenderTarget()
t_noise_mipped->surface_set(GL_TEXTURE_2D, NULL);
glDeleteTextures(1, &t_noise_surf_mipped);

//
//
accum_spot_geom_destroy();
accum_omnip_geom_destroy();
accum_point_geom_destroy();
Expand Down
16 changes: 9 additions & 7 deletions src/Layers/xrRenderPC_GL/rgl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ void CRender::create()

//. _tzset ();
//. ??? _strdate ( date, 128 ); ???
//. ??? if (date < 22-march-07)
//. ??? if (date < 22-march-07)
if (false)
{
u32 device_id = HW.Caps.id_device;
Expand Down Expand Up @@ -441,11 +441,11 @@ void CRender::reset_end()
/*
void CRender::OnFrame()
{
Models->DeleteQueue ();
if (ps_r2_ls_flags.test(R2FLAG_EXP_MT_CALC)) {
Device.seqParallel.insert (Device.seqParallel.begin(),
fastdelegate::FastDelegate0<>(&HOM,&CHOM::MT_RENDER));
}
Models->DeleteQueue ();
if (ps_r2_ls_flags.test(R2FLAG_EXP_MT_CALC)) {
Device.seqParallel.insert (Device.seqParallel.begin(),
fastdelegate::FastDelegate0<>(&HOM,&CHOM::MT_RENDER));
}
}*/
void CRender::OnFrame()
{
Expand Down Expand Up @@ -679,7 +679,9 @@ void CRender::rmNormal()
CRender::CRender()
: m_bFirstFrameAfterReset(false)
{
#if defined(WINDOWS) // remove this after port r2_R_sun.cpp
init_cacades();
#endif
}

CRender::~CRender() {}
Expand Down Expand Up @@ -1276,7 +1278,7 @@ HRESULT CRender::shader_compile(
sprintf_s(name_comment, "// %s\n", name);
const char** sources = xr_alloc<const char*>(sources_len);
#ifdef DEBUG
sources[0] = "#version 450\n#pragma optimize (off)\n";
sources[0] = "#version 450\n#pragma optimize (off)\n";
#else
sources[0] = "#version 450\n";
#endif
Expand Down
6 changes: 4 additions & 2 deletions src/Layers/xrRenderPC_GL/rgl.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ class CRender : public D3DXRenderBase
u32 dx10_msaa : 1; // DX10.0 path
u32 dx10_msaa_hybrid : 1; // DX10.0 main path with DX10.1 A-test msaa allowed
u32 dx10_msaa_opt : 1; // DX10.1 path
u32 dx10_gbuffer_opt : 1; //
u32 dx10_gbuffer_opt : 1; //
u32 dx10_sm4_1 : 1; // DX10.1 path
u32 dx10_msaa_alphatest : 2; // A-test mode
u32 dx10_msaa_samples : 4;
Expand Down Expand Up @@ -215,7 +215,9 @@ class CRender : public D3DXRenderBase
void render_rain();

void render_sun_cascade(u32 cascade_ind);
#if defined(WINDOWS) // remove this after port r2_R_sun.cpp
void init_cacades();
#endif
void render_sun_cascades();

ShaderElement* rimp_select_sh_static(dxRender_Visual* pVisual, float cdist_sq);
Expand Down Expand Up @@ -307,7 +309,7 @@ class CRender : public D3DXRenderBase
IRender_Sector* detectSector(const Fvector& P) override;
IRender_Target* getTarget() override;

// Main
// Main
void flush() override;
void set_Object(IRenderable* O) override;
void add_Occluder(Fbox2& bb_screenspace) override; // mask screen region as oclluded
Expand Down
18 changes: 12 additions & 6 deletions src/xrEngine/EngineAPI.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ void CEngineAPI::InitializeRenderers()
// XXX: Unloading disabled due to typeids invalidation
/*if (GEnv.CurrentRenderer != 5)
hRenderRGL->close();
if (GEnv.CurrentRenderer != 4)
hRenderR4->close();
Expand Down Expand Up @@ -220,37 +220,43 @@ void CEngineAPI::CreateRendererList()
if (!VidQualityToken.empty())
return;

hRenderRGL = XRay::LoadModule("xrRender_GL");
#if defined(WINDOWS)
hRenderR1 = XRay::LoadModule("xrRender_R1");
#endif

if (GEnv.isDedicatedServer)
{
#if defined(WINDOWS)
R_ASSERT2(hRenderR1->IsLoaded(), "Dedicated server needs xrRender_R1 to work");
VidQualityToken.emplace_back("renderer_r1", 0);
#elif defined(LINUX)
R_ASSERT2(hRenderRGL->IsLoaded(), "Dedicated server needs xrRender_GL to work");
VidQualityToken.emplace_back("renderer_gl", 0);
#endif
VidQualityToken.emplace_back(nullptr, -1);
return;
}

auto& modes = VidQualityToken;

#if defined(WINDOWS)
// Hide "d3d10.dll not found" message box for XP
SetErrorMode(SEM_FAILCRITICALERRORS);

hRenderR2 = XRay::LoadModule("xrRender_R2");
hRenderR3 = XRay::LoadModule("xrRender_R3");
hRenderR4 = XRay::LoadModule("xrRender_R4");
#endif
hRenderRGL = XRay::LoadModule("xrRender_GL");

// Restore error handling
SetErrorMode(0);

auto& modes = VidQualityToken;

if (hRenderR1->IsLoaded())
{
modes.emplace_back("renderer_r1", 0);
}

#if defined(WINDOWS)

if (hRenderR2->IsLoaded())
{
modes.emplace_back("renderer_r2a", 1);
Expand Down

0 comments on commit 6728a54

Please sign in to comment.