Skip to content

Commit 8716a06

Browse files
committed
Merge branch 'master' into for-0.56.0/sync
2 parents a603985 + 386d693 commit 8716a06

File tree

13 files changed

+187
-56
lines changed

13 files changed

+187
-56
lines changed

CMakeLists.txt

Lines changed: 89 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -218,38 +218,88 @@ set(DEPS_VERSION 11)
218218

219219
option(USE_EXTERNAL_DEPS "Download or reuse dependencies from EXTERNAL_DEPS_DIR (mandatory for building and running NaCl .nexe binaries)." ON)
220220

221+
macro(set_deps_dir)
222+
set(DEPS_DIR ${EXTERNAL_DEPS_DIR}/${DEPS_SYSTEM}-${DEPS_ARCH}-${DEPS_COMPILER}_${DEPS_VERSION})
223+
endmacro()
224+
225+
set(DEFAULT_USE_EXTERNAL_DEPS_LIBS ON)
226+
221227
if (USE_EXTERNAL_DEPS AND NOT NACL)
222228
set(EXTERNAL_DEPS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/external_deps" CACHE STRING "Directory in which to store the downloaded dependencies.")
223229

224230
set(DEPS_EXT ".tar.xz")
225231

232+
set(DEPS_ARCH "${ARCH}")
233+
234+
if (MSVC)
235+
set(DEPS_COMPILER msvc)
236+
elseif (WIN32)
237+
set(DEPS_COMPILER mingw)
238+
else()
239+
set(DEPS_COMPILER default)
240+
endif()
241+
226242
if (WIN32)
227243
set(DEPS_SYSTEM windows)
228244
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64 i686)
229245
elseif (APPLE)
230246
set(DEPS_SYSTEM macos)
231247
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64)
232-
elseif (LINUX OR FREEBSD)
248+
249+
if (ARCH STREQUAL arm64)
250+
set(DEPS_ARCH amd64)
251+
252+
set_deps_dir()
253+
254+
if (NOT EXISTS ${DEPS_DIR})
255+
set(DEFAULT_USE_EXTERNAL_DEPS_LIBS OFF)
256+
endif()
257+
endif()
258+
elseif (LINUX)
233259
set(DEPS_SYSTEM linux)
234260
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64 i686 arm64 armhf)
235-
endif()
261+
elseif (FREEBSD)
262+
set(DEPS_SYSTEM freebsd)
263+
set(SUPPORTED_${DEPS_SYSTEM}_ARCH amd64 i686)
236264

237-
if (MSVC)
238-
set(DEPS_COMPILER msvc)
239-
elseif (WIN32)
240-
set(DEPS_COMPILER mingw)
241-
else()
242-
set(DEPS_COMPILER default)
265+
set_deps_dir()
266+
267+
if (NOT EXISTS ${DEPS_DIR})
268+
set(DEFAULT_USE_EXTERNAL_DEPS_LIBS OFF)
269+
set(DEPS_SYSTEM linux)
270+
endif()
243271
endif()
244272

245-
if (DEPS_SYSTEM AND ARCH IN_LIST SUPPORTED_${DEPS_SYSTEM}_ARCH)
246-
set(DEPS_DIR ${EXTERNAL_DEPS_DIR}/${DEPS_SYSTEM}-${ARCH}-${DEPS_COMPILER}_${DEPS_VERSION})
273+
set_deps_dir()
274+
275+
if (DEPS_SYSTEM AND DEPS_ARCH IN_LIST SUPPORTED_${DEPS_SYSTEM}_ARCH)
276+
set(HAS_NACL ON)
247277

248278
if (DAEMON_PARENT_SCOPE_DIR)
249279
set(DEPS_DIR ${DEPS_DIR} PARENT_SCOPE)
250280
endif()
251281
else()
252-
message(WARNING "No dependencies are provided for this system, Native Client is likely unsupported.")
282+
message(WARNING "No prebuilt dependencies are available for this platform, Native Client is likely unsupported.")
283+
284+
if (NOT EXISTS ${DEPS_DIR})
285+
unset(DEPS_DIR)
286+
endif()
287+
endif()
288+
endif()
289+
290+
option(USE_EXTERNAL_DEPS_LIBS "Build and link against libraries from the EXTERNAL_DEPS_DIR" ${DEFAULT_USE_EXTERNAL_DEPS_LIBS})
291+
292+
if (USE_EXTERNAL_DEPS AND NOT NACL)
293+
if (DEPS_DIR)
294+
message(STATUS "Using external deps dir: ${DEPS_DIR}")
295+
296+
if (USE_EXTERNAL_DEPS_LIBS)
297+
message(STATUS "Building against libraries from external deps dir")
298+
else()
299+
message(STATUS "Not building against libraries from external deps dir")
300+
endif()
301+
else()
302+
message(STATUS "Not using any external deps dir")
253303
endif()
254304
endif()
255305

@@ -499,17 +549,19 @@ if (DEPS_DIR)
499549
endif()
500550
endif()
501551

502-
# Add to paths
503-
set(CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH})
504-
set(CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR}/include ${CMAKE_INCLUDE_PATH})
505-
set(CMAKE_FRAMEWORK_PATH ${DEPS_DIR}/lib ${CMAKE_FRAMEWORK_PATH})
506-
set(CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH})
507-
if (DAEMON_PARENT_SCOPE_DIR)
508-
# Also set parent scope so the top level CMakeLists can find precompiled deps
509-
set(CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH} PARENT_SCOPE)
510-
set(CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR}/include ${CMAKE_INCLUDE_PATH} PARENT_SCOPE)
511-
set(CMAKE_FRAMEWORK_PATH ${DEPS_DIR} ${CMAKE_FRAMEWORK_PATH} PARENT_SCOPE)
512-
set(CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
552+
if (USE_EXTERNAL_DEPS_LIBS)
553+
# Add to paths
554+
set(CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH})
555+
set(CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR}/include ${CMAKE_INCLUDE_PATH})
556+
set(CMAKE_FRAMEWORK_PATH ${DEPS_DIR}/lib ${CMAKE_FRAMEWORK_PATH})
557+
set(CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH})
558+
if (DAEMON_PARENT_SCOPE_DIR)
559+
# Also set parent scope so the top level CMakeLists can find precompiled deps
560+
set(CMAKE_FIND_ROOT_PATH ${DEPS_DIR} ${CMAKE_FIND_ROOT_PATH} PARENT_SCOPE)
561+
set(CMAKE_INCLUDE_PATH ${DEPS_DIR} ${DEPS_DIR}/include ${CMAKE_INCLUDE_PATH} PARENT_SCOPE)
562+
set(CMAKE_FRAMEWORK_PATH ${DEPS_DIR} ${CMAKE_FRAMEWORK_PATH} PARENT_SCOPE)
563+
set(CMAKE_PREFIX_PATH ${DEPS_DIR} ${CMAKE_PREFIX_PATH} PARENT_SCOPE)
564+
endif()
513565
endif()
514566
endif()
515567

@@ -784,6 +836,7 @@ if (USE_BREAKPAD)
784836
elseif (LINUX)
785837
add_library(srclibs-breakpad EXCLUDE_FROM_ALL ${BREAKPAD_LIST})
786838
set_target_properties(srclibs-breakpad PROPERTIES POSITION_INDEPENDENT_CODE 1 FOLDER "libs")
839+
target_compile_definitions(srclibs-breakpad PUBLIC HAVE_GETCONTEXT=1)
787840
set(LIBS_ENGINE ${LIBS_ENGINE} srclibs-breakpad)
788841

789842
add_executable(crash_server src/engine/crash_server/crash_server_linux.cpp)
@@ -871,7 +924,7 @@ macro(AddApplicationInternal Target Executable)
871924
add_executable(${Target} ${Sources})
872925
target_link_libraries(${Target} ${A_Target}-objects ${CPP23SupportLibrary})
873926

874-
if (DEPS_DIR)
927+
if (DEPS_DIR AND HAS_NACL)
875928
add_dependencies(${Target} runtime_deps)
876929
endif()
877930

@@ -903,7 +956,7 @@ function(AddApplication)
903956
set_property(TARGET ${A_Target}-objects APPEND PROPERTY COMPILE_OPTIONS ${A_Flags})
904957
set_property(TARGET ${A_Target}-objects APPEND PROPERTY INCLUDE_DIRECTORIES ${ENGINE_DIR} ${MOUNT_DIR} ${LIB_DIR})
905958
set_property(TARGET ${A_Target}-objects APPEND PROPERTY COMPILE_DEFINITIONS ${A_Definitions})
906-
959+
907960
set_target_properties(${A_Target}-objects PROPERTIES FOLDER "engine/objects")
908961

909962
set(Sources WIN32 ${A_ApplicationMain})
@@ -973,25 +1026,31 @@ if (BUILD_CLIENT)
9731026
set(SHADERS_CPP_TEXT "// This file is auto-generated by CMakeLists.txt.\n")
9741027
string(APPEND SHADERS_CPP_TEXT "#include \"common/Common.h\"\n\n")
9751028
set(SHADERMAP_TEXT "")
1029+
9761030
foreach(res ${GLSLSOURCELIST})
9771031
get_filename_component(filename_no_ext ${res} NAME_WE)
9781032
set(outpath ${EMBED_INCLUDE_DIR}/${filename_no_ext}.glsl.h)
1033+
9791034
add_custom_command(
9801035
OUTPUT ${outpath}
9811036
COMMAND ${CMAKE_COMMAND} "-DINPUT_FILE=${res}" "-DOUTPUT_FILE=${outpath}"
9821037
"-DVARIABLE_NAME=${filename_no_ext}_glsl" -P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/EmbedText.cmake
9831038
MAIN_DEPENDENCY ${res}
9841039
)
1040+
9851041
set_property(TARGET client-objects APPEND PROPERTY SOURCES ${outpath})
986-
string(APPEND SHADERS_CPP_TEXT "#include \"../embed_data/${filename_no_ext}.glsl.h\"\n")
987-
string(APPEND SHADERMAP_TEXT "\t{ \"${filename_no_ext}.glsl\", ")
988-
string(APPEND SHADERMAP_TEXT "std::string(reinterpret_cast<const char *>( ${filename_no_ext}_glsl ), ")
989-
string(APPEND SHADERMAP_TEXT "sizeof( ${filename_no_ext}_glsl )) },\n")
1042+
1043+
string(APPEND SHADERS_CPP_TEXT "#include \"../embed_data/${filename_no_ext}.glsl.h\"\n")
1044+
string(APPEND SHADERMAP_TEXT "\t{ \"${filename_no_ext}.glsl\", ")
1045+
string(APPEND SHADERMAP_TEXT "std::string(reinterpret_cast<const char *>( ${filename_no_ext}_glsl ), ")
1046+
string(APPEND SHADERMAP_TEXT "sizeof( ${filename_no_ext}_glsl )) },\n")
9901047
endforeach()
1048+
9911049
string(APPEND SHADERS_CPP_TEXT "\nextern const std::unordered_map<std::string, std::string> shadermap\n{\n")
9921050
string(APPEND SHADERS_CPP_TEXT "${SHADERMAP_TEXT}")
9931051
string(APPEND SHADERS_CPP_TEXT "};\n")
994-
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource/shaders.cpp" "${SHADERS_CPP_TEXT}")
1052+
1053+
daemon_write_generated("shaders.cpp" "${SHADERS_CPP_TEXT}")
9951054
endif()
9961055

9971056
if (BUILD_SERVER)
@@ -1024,7 +1083,7 @@ endif()
10241083
# Runtime dependencies
10251084
################################################################################
10261085

1027-
if (DEPS_DIR AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER OR BUILD_DUMMY_APP))
1086+
if (DEPS_DIR AND HAS_NACL AND (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER OR BUILD_DUMMY_APP))
10281087
add_custom_target(runtime_deps)
10291088
set_target_properties(runtime_deps PROPERTIES FOLDER "CMakePlumbing")
10301089

cmake/DaemonBuildInfo.cmake

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1-
set(DAEMON_BUILDINFO_HEADER "// Automatically generated, do not modify!\n")
2-
set(DAEMON_BUILDINFO_PARENT "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource")
1+
set(DAEMON_GENERATED_DIR "${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource")
2+
33
set(DAEMON_BUILDINFO_DIR "DaemonBuildInfo")
4-
set(DAEMON_BUILDINFO_DIR_FULLPATH "${DAEMON_BUILDINFO_PARENT}/${DAEMON_BUILDINFO_DIR}")
4+
set(DAEMON_BUILDINFO_HEADER "// Automatically generated, do not modify!\n")
55
set(DAEMON_BUILDINFO_CPP_EXT ".cpp")
66
set(DAEMON_BUILDINFO_H_EXT ".h")
77
set(BUILDINFOLIST)
88

9-
file(MAKE_DIRECTORY "${DAEMON_BUILDINFO_DIR_FULLPATH}")
10-
include_directories("${DAEMON_BUILDINFO_PARENT}")
9+
file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}")
10+
include_directories("${DAEMON_GENERATED_DIR}")
11+
12+
file(MAKE_DIRECTORY "${DAEMON_GENERATED_DIR}/${DAEMON_BUILDINFO_DIR}")
1113

1214
foreach(kind CPP H)
1315
set(DAEMON_BUILDINFO_${kind} "${DAEMON_BUILDINFO_HEADER}")
@@ -18,20 +20,25 @@ macro(daemon_add_buildinfo TYPE NAME VALUE)
1820
set(DAEMON_BUILDINFO_H "${DAEMON_BUILDINFO_H}extern const ${TYPE} ${NAME};\n")
1921
endmacro()
2022

23+
macro(daemon_write_generated GENERATED_PATH GENERATED_CONTENT)
24+
set(DAEMON_GENERATED_FILE ${DAEMON_GENERATED_DIR}/${GENERATED_PATH})
25+
26+
if (EXISTS "${DAEMON_GENERATED_FILE}")
27+
file(READ "${DAEMON_GENERATED_FILE}" GENERATED_CONTENT_READ)
28+
endif()
29+
30+
if (NOT "${GENERATED_CONTENT}" STREQUAL "${GENERATED_CONTENT_READ}")
31+
message(STATUS "Generating ${GENERATED_PATH}")
32+
file(WRITE "${DAEMON_GENERATED_FILE}" "${GENERATED_CONTENT}")
33+
endif()
34+
endmacro()
35+
2136
macro(daemon_write_buildinfo NAME)
2237
foreach(kind CPP H)
2338
set(DAEMON_BUILDINFO_${kind}_NAME "${NAME}${DAEMON_BUILDINFO_${kind}_EXT}")
24-
set(DAEMON_BUILDINFO_${kind}_FILE "${DAEMON_BUILDINFO_DIR}/${DAEMON_BUILDINFO_${kind}_NAME}")
25-
set(DAEMON_BUILDINFO_${kind}_FILE_FULLPATH "${DAEMON_BUILDINFO_PARENT}/${DAEMON_BUILDINFO_${kind}_FILE}")
26-
list(APPEND BUILDINFOLIST "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}")
27-
28-
if (EXISTS "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}")
29-
file(READ "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}" DAEMON_BUILDINFO_${kind}_READ)
30-
endif()
31-
32-
if (NOT "${DAEMON_BUILDINFO_${kind}}" STREQUAL "${DAEMON_BUILDINFO_${kind}_READ}")
33-
message(STATUS "Generating ${DAEMON_BUILDINFO_${kind}_FILE}")
34-
file(WRITE "${DAEMON_BUILDINFO_${kind}_FILE_FULLPATH}" "${DAEMON_BUILDINFO_${kind}}")
35-
endif()
39+
set(DAEMON_BUILDINFO_${kind}_PATH "${DAEMON_BUILDINFO_DIR}/${DAEMON_BUILDINFO_${kind}_NAME}")
40+
41+
daemon_write_generated("${DAEMON_BUILDINFO_${kind}_PATH}" "${DAEMON_BUILDINFO_${kind}}")
42+
list(APPEND BUILDINFOLIST "${DAEMON_GENERATED_FILE}")
3643
endforeach()
3744
endmacro()

cmake/DaemonFlags.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -642,7 +642,9 @@ elseif (NOT NACL)
642642

643643
option(USE_CPU_GENERIC_ARCHITECTURE "Enforce generic -march and -mtune compiler options" ON)
644644
if (USE_CPU_GENERIC_ARCHITECTURE)
645-
try_c_cxx_flag_werror(MARCH "-march=${GCC_GENERIC_ARCH}")
645+
if (GCC_GENERIC_ARCH)
646+
try_c_cxx_flag_werror(MARCH "-march=${GCC_GENERIC_ARCH}")
647+
endif()
646648

647649
if (GCC_GENERIC_TUNE)
648650
try_c_cxx_flag_werror(MTUNE "-mtune=${GCC_GENERIC_TUNE}")

src.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ set(COMMONTESTLIST
8080
)
8181

8282
set(RENDERERLIST
83-
${CMAKE_CURRENT_BINARY_DIR}/GeneratedSource/shaders.cpp
83+
${DAEMON_GENERATED_DIR}/shaders.cpp
8484
${ENGINE_DIR}/renderer/BufferBind.h
8585
${ENGINE_DIR}/renderer/DetectGLVendors.cpp
8686
${ENGINE_DIR}/renderer/DetectGLVendors.h

src/engine/renderer/Material.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -904,7 +904,7 @@ void BindShaderGeneric3D( Material* material ) {
904904
gl_genericShaderMaterial->SetUniform_ModelMatrix( backEnd.orientation.transformMatrix );
905905
gl_genericShaderMaterial->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[glState.stackIndex] );
906906

907-
gl_genericShaderMaterial->SetUniform_DepthMapBindless( GL_BindToTMU( 1, tr.currentDepthImage ) );
907+
gl_genericShaderMaterial->SetUniform_DepthMapBindless( GL_BindToTMU( 1, tr.depthSamplerImage ) );
908908

909909
// u_DeformGen
910910
gl_genericShaderMaterial->SetUniform_Time( backEnd.refdef.floatTime - backEnd.currentEntity->e.shaderTime );
@@ -1080,7 +1080,7 @@ void BindShaderLiquid( Material* material ) {
10801080
gl_liquidShaderMaterial->SetUniform_ModelViewProjectionMatrix( glState.modelViewProjectionMatrix[glState.stackIndex] );
10811081

10821082
// depth texture
1083-
gl_liquidShaderMaterial->SetUniform_DepthMapBindless( GL_BindToTMU( 2, tr.currentDepthImage ) );
1083+
gl_liquidShaderMaterial->SetUniform_DepthMapBindless( GL_BindToTMU( 2, tr.depthSamplerImage ) );
10841084

10851085
// bind u_PortalMap
10861086
gl_liquidShaderMaterial->SetUniform_PortalMapBindless( GL_BindToTMU( 1, tr.portalRenderImage ) );

src/engine/renderer/tr_backend.cpp

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,11 @@ void RB_RunVisTests( )
12131213

12141214
void RB_PrepareForSamplingDepthMap()
12151215
{
1216+
if ( glConfig.usingReadonlyDepth )
1217+
{
1218+
return;
1219+
}
1220+
12161221
if ( !glConfig.textureBarrierAvailable )
12171222
{
12181223
return;
@@ -1413,7 +1418,7 @@ void RB_RenderGlobalFog()
14131418

14141419
// bind u_DepthMap
14151420
gl_fogGlobalShader->SetUniform_DepthMapBindless(
1416-
GL_BindToTMU( 1, tr.currentDepthImage )
1421+
GL_BindToTMU( 1, tr.depthSamplerImage )
14171422
);
14181423

14191424
Tess_InstantScreenSpaceQuad();
@@ -1535,7 +1540,7 @@ void RB_RenderMotionBlur()
15351540
gl_motionblurShader->SetUniform_blurVec(tr.refdef.blurVec);
15361541

15371542
gl_motionblurShader->SetUniform_DepthMapBindless(
1538-
GL_BindToTMU( 1, tr.currentDepthImage )
1543+
GL_BindToTMU( 1, tr.depthSamplerImage )
15391544
);
15401545

15411546
Tess_InstantScreenSpaceQuad();
@@ -1586,7 +1591,7 @@ void RB_RenderSSAO()
15861591
gl_ssaoShader->SetUniform_UnprojectionParams( unprojectionParams );
15871592

15881593
gl_ssaoShader->SetUniform_DepthMapBindless(
1589-
GL_BindToTMU( 0, tr.currentDepthImage )
1594+
GL_BindToTMU( 0, tr.depthSamplerImage )
15901595
);
15911596

15921597
Tess_InstantScreenSpaceQuad();
@@ -2699,6 +2704,17 @@ static void RB_RenderView( bool depthPass )
26992704
return;
27002705
}
27012706

2707+
if ( glConfig.usingReadonlyDepth )
2708+
{
2709+
FBO_t *currentDrawFBO = glState.currentFBO;
2710+
R_BindFBO( GL_READ_FRAMEBUFFER, currentDrawFBO );
2711+
R_BindFBO( GL_DRAW_FRAMEBUFFER, tr.readonlyDepthFBO );
2712+
int x0 = backEnd.viewParms.viewportX, x1 = x0 + backEnd.viewParms.viewportWidth;
2713+
int y0 = backEnd.viewParms.viewportY, y1 = y0 + backEnd.viewParms.viewportHeight;
2714+
GL_fboShim.glBlitFramebuffer( x0, y0, x1, y1, x0, y0, x1, y1, GL_DEPTH_BUFFER_BIT, GL_NEAREST );
2715+
R_BindFBO( currentDrawFBO );
2716+
}
2717+
27022718
if( tr.refdef.blurVec[0] != 0.0f ||
27032719
tr.refdef.blurVec[1] != 0.0f ||
27042720
tr.refdef.blurVec[2] != 0.0f )

src/engine/renderer/tr_fbo.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,14 @@ void R_InitFBOs()
263263
R_AttachFBOTexturePackedDepthStencil( tr.currentDepthImage->texnum );
264264
R_CheckFBO( tr.mainFBO[1] );
265265

266+
if ( glConfig.usingReadonlyDepth )
267+
{
268+
tr.readonlyDepthFBO = R_CreateFBO( "_depthReadonly", width, height );
269+
R_BindFBO( tr.readonlyDepthFBO );
270+
R_AttachFBOTexturePackedDepthStencil( tr.depthSamplerImage->texnum );
271+
glConfig.usingReadonlyDepth = R_CheckFBO( tr.readonlyDepthFBO );
272+
}
273+
266274
if ( glConfig.realtimeLighting )
267275
{
268276
/* It's only required to create frame buffers only used by the

src/engine/renderer/tr_image.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2473,6 +2473,12 @@ static void R_CreateCurrentRenderImage()
24732473

24742474
tr.currentDepthImage = R_CreateImage( "*currentDepth", nullptr, width, height, 1, imageParams );
24752475

2476+
if ( glConfig.usingReadonlyDepth )
2477+
{
2478+
// For use with glBlitFramebuffer, format must be the same as currentDepthImage
2479+
tr.depthSamplerImage = R_CreateImage( "*readonlyDepth", nullptr, width, height, 1, imageParams );
2480+
}
2481+
24762482
if ( glConfig.usingMaterialSystem ) {
24772483
materialSystem.GenerateDepthImages( width, height, imageParams );
24782484
}

0 commit comments

Comments
 (0)