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
eagleivg committed Sep 29, 2018

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 59086d0 commit 6728a54
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
@@ -5,6 +5,8 @@ list(APPEND DIRS
"../xrRender"
"../xrRender/blenders"
"../xrRenderGL"
"../xrRenderGL/MSAA"
"../xrRenderGL/GL Rain"
"../../Include/xrRender"
)

26 changes: 15 additions & 11 deletions src/Layers/xrRenderPC_GL/gl_rendertarget.cpp
Original file line number Diff line number Diff line change
@@ -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)
@@ -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
@@ -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;
@@ -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;
}
@@ -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);
@@ -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();
16 changes: 9 additions & 7 deletions src/Layers/xrRenderPC_GL/rgl.cpp
Original file line number Diff line number Diff line change
@@ -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;
@@ -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()
{
@@ -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() {}
@@ -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
6 changes: 4 additions & 2 deletions src/Layers/xrRenderPC_GL/rgl.h
Original file line number Diff line number Diff line change
@@ -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;
@@ -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);
@@ -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
18 changes: 12 additions & 6 deletions src/xrEngine/EngineAPI.cpp
Original file line number Diff line number Diff line change
@@ -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();
@@ -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);

0 comments on commit 6728a54

Please sign in to comment.