Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 1 addition & 15 deletions src/renderers/vulkan/tr_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -695,17 +695,10 @@ void R_SetupFirstPersonProjection( viewParms_t *dest, float *outProjection )
const float depth = zFar - zNearClamped;
if ( depth > 0.1f ) {
#ifdef USE_VULKAN
#ifdef USE_REVERSED_DEPTH
outProjection[2] = 0.0f;
outProjection[6] = 0.0f;
outProjection[10] = zNearClamped / depth;
outProjection[14] = zFar * zNearClamped / depth;
#else
outProjection[2] = 0.0f;
outProjection[6] = 0.0f;
outProjection[10] = -zFar / depth;
outProjection[14] = -zFar * zNearClamped / depth;
#endif
#else
outProjection[2] = 0.0f;
outProjection[6] = 0.0f;
Expand Down Expand Up @@ -733,13 +726,8 @@ static void R_SetupProjectionZ( viewParms_t *dest )
dest->projectionMatrix[2] = 0;
dest->projectionMatrix[6] = 0;
#ifdef USE_VULKAN
#ifdef USE_REVERSED_DEPTH
dest->projectionMatrix[10] = zNear / depth;
dest->projectionMatrix[14] = zFar * zNear / depth;
#else
dest->projectionMatrix[10] = - zFar / depth;
dest->projectionMatrix[14] = - zFar * zNear / depth;
#endif
#else
dest->projectionMatrix[10] = -( zFar + zNear ) / depth;
dest->projectionMatrix[14] = -2 * zFar * zNear / depth;
Expand All @@ -752,10 +740,8 @@ static void R_SetupProjectionZ( viewParms_t *dest )
vec4_t q, c;

#ifdef USE_VULKAN
#ifdef USE_REVERSED_DEPTH
dest->projectionMatrix[10] = - zFar / depth;
dest->projectionMatrix[14] = - zFar * zNear / depth;
#endif
#endif
// transform portal plane into camera space
plane[0] = dest->portalPlane.normal[0];
Expand Down Expand Up @@ -789,7 +775,7 @@ static void R_SetupProjectionZ( viewParms_t *dest )
#endif
dest->projectionMatrix[14] = c[3];

#ifdef USE_REVERSED_DEPTH
#ifdef USE_VULKAN
dest->projectionMatrix[2] = -dest->projectionMatrix[2];
dest->projectionMatrix[6] = -dest->projectionMatrix[6];
dest->projectionMatrix[10] = -(dest->projectionMatrix[10] + 1.0);
Expand Down
4 changes: 0 additions & 4 deletions src/renderers/vulkan/vk_clear_attachments.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,11 +63,7 @@ void vk_clear_depth( qboolean clear_stencil )
return;

attachment.colorAttachment = 0;
#ifdef USE_REVERSED_DEPTH
attachment.clearValue.depthStencil.depth = 0.0f;
#else
attachment.clearValue.depthStencil.depth = 1.0f;
#endif
attachment.clearValue.depthStencil.stencil = 0;
if ( clear_stencil && glConfig.stencilBits > 0 ) {
attachment.aspectMask = VK_IMAGE_ASPECT_DEPTH_BIT | VK_IMAGE_ASPECT_STENCIL_BIT;
Expand Down
14 changes: 0 additions & 14 deletions src/renderers/vulkan/vk_create_pipeline.c
Original file line number Diff line number Diff line change
Expand Up @@ -1188,21 +1188,11 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa
cvar_t *sv_units = ri.Cvar_Get( "r_shadowVolumeOffsetUnits", "1", CVAR_ARCHIVE_ND );
float factor = sv_factor ? sv_factor->value : 1.0f;
float units = sv_units ? sv_units->value : 1.0f;
#ifdef USE_REVERSED_DEPTH
rasterization_state.depthBiasConstantFactor = units;
rasterization_state.depthBiasSlopeFactor = factor;
#else
rasterization_state.depthBiasConstantFactor = -units;
rasterization_state.depthBiasSlopeFactor = -factor;
#endif
} else {
#ifdef USE_REVERSED_DEPTH
rasterization_state.depthBiasConstantFactor = -r_offsetUnits->value;
rasterization_state.depthBiasSlopeFactor = -r_offsetFactor->value;
#else
rasterization_state.depthBiasConstantFactor = r_offsetUnits->value;
rasterization_state.depthBiasSlopeFactor = r_offsetFactor->value;
#endif
}
} else {
rasterization_state.depthBiasEnable = VK_FALSE;
Expand Down Expand Up @@ -1241,11 +1231,7 @@ VkPipeline vk_create_pipeline( const Vk_Pipeline_Def *def, renderPass_t renderPa
depth_stencil_state.flags = 0;
depth_stencil_state.depthTestEnable = (state_bits & GLS_DEPTHTEST_DISABLE) ? VK_FALSE : VK_TRUE;
depth_stencil_state.depthWriteEnable = ( def->shader_type == TYPE_OCCLUSION_BBOX ) ? VK_FALSE : ( (state_bits & GLS_DEPTHMASK_TRUE) ? VK_TRUE : VK_FALSE );
#ifdef USE_REVERSED_DEPTH
depth_stencil_state.depthCompareOp = (state_bits & GLS_DEPTHFUNC_EQUAL) ? VK_COMPARE_OP_EQUAL : VK_COMPARE_OP_GREATER_OR_EQUAL;
#else
depth_stencil_state.depthCompareOp = (state_bits & GLS_DEPTHFUNC_EQUAL) ? VK_COMPARE_OP_EQUAL : VK_COMPARE_OP_LESS_OR_EQUAL;
#endif
depth_stencil_state.depthBoundsTestEnable = VK_FALSE;
depth_stencil_state.stencilTestEnable = (def->shadow_phase != SHADOW_DISABLED) ? VK_TRUE : VK_FALSE;

Expand Down
9 changes: 0 additions & 9 deletions src/renderers/vulkan/vk_flares.c
Original file line number Diff line number Diff line change
Expand Up @@ -204,11 +204,7 @@ void RB_AddFlare( void *surface, int fogNum, vec3_t point, vec3_t color, vec3_t

f->eyeZ = eye[2];

#ifdef USE_REVERSED_DEPTH
f->drawZ = (clip[2]+0.20) / clip[3];
#else
f->drawZ = (clip[2]-0.20) / clip[3];
#endif

}

Expand Down Expand Up @@ -537,13 +533,8 @@ void RB_RenderFlares( void ) {
return; // none visible
}

#ifdef USE_REVERSED_DEPTH
m = vk_ortho( backEnd.viewParms.viewportX, backEnd.viewParms.viewportX + backEnd.viewParms.viewportWidth,
backEnd.viewParms.viewportY, backEnd.viewParms.viewportY + backEnd.viewParms.viewportHeight, 1.0, 0.0 );
#else
m = vk_ortho( backEnd.viewParms.viewportX, backEnd.viewParms.viewportX + backEnd.viewParms.viewportWidth,
backEnd.viewParms.viewportY, backEnd.viewParms.viewportY + backEnd.viewParms.viewportHeight, 0.0, 1.0 );
#endif

vk_update_mvp( m );

Expand Down
44 changes: 0 additions & 44 deletions src/renderers/vulkan/vk_frame_submit.c
Original file line number Diff line number Diff line change
Expand Up @@ -114,10 +114,6 @@ void vk_begin_frame( void )
vk.temporal.preparedThisFrame = qfalse;
vk.uiOverlayActive = qfalse;

#ifdef USE_UPLOAD_QUEUE
vk_flush_staging_buffer( qtrue );
#endif

vk.cmd = &vk.tess[ vk.cmd_index ];

if ( vk.cmd->waitForFence ) {
Expand Down Expand Up @@ -281,12 +277,7 @@ static void vk_resize_geometry_buffer( void )

void vk_end_frame( void )
{
#ifdef USE_UPLOAD_QUEUE
VkSemaphore waits[2], signals[2];
const VkPipelineStageFlags wait_dst_stage_mask[2] = {VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT};
#else
const VkPipelineStageFlags wait_dst_stage_mask = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
#endif
VkSubmitInfo submit_info;

if ( vk.frame_count == 0 )
Expand Down Expand Up @@ -346,46 +337,11 @@ void vk_end_frame( void )
submit_info.commandBufferCount = 1;
submit_info.pCommandBuffers = &vk.cmd->command_buffer;
if ( !ri.CL_IsMinimized() ) {
#ifdef USE_UPLOAD_QUEUE
if ( vk.image_uploaded != VK_NULL_HANDLE ) {
waits[0] = vk.cmd->image_acquired;
waits[1] = vk.image_uploaded;
submit_info.waitSemaphoreCount = 2;
submit_info.pWaitSemaphores = &waits[0];
submit_info.pWaitDstStageMask = &wait_dst_stage_mask[0];
signals[0] = vk.swapchain_rendering_finished[ vk.cmd->swapchain_image_index ];
signals[1] = vk.cmd->rendering_finished2;
submit_info.signalSemaphoreCount = 2;
submit_info.pSignalSemaphores = &signals[0];

vk.rendering_finished = vk.cmd->rendering_finished2;
vk.image_uploaded = VK_NULL_HANDLE;
} else if ( vk.rendering_finished != VK_NULL_HANDLE ) {
waits[0] = vk.cmd->image_acquired;
waits[1] = vk.rendering_finished;
submit_info.waitSemaphoreCount = 2;
submit_info.pWaitSemaphores = &waits[0];
submit_info.pWaitDstStageMask = &wait_dst_stage_mask[0];
signals[0] = vk.swapchain_rendering_finished[ vk.cmd->swapchain_image_index ];
signals[1] = vk.cmd->rendering_finished2;
submit_info.signalSemaphoreCount = 2;
submit_info.pSignalSemaphores = &signals[0];

vk.rendering_finished = vk.cmd->rendering_finished2;
} else {
submit_info.waitSemaphoreCount = 1;
submit_info.pWaitSemaphores = &vk.cmd->image_acquired;
submit_info.pWaitDstStageMask = &wait_dst_stage_mask[0];
submit_info.signalSemaphoreCount = 1;
submit_info.pSignalSemaphores = &vk.swapchain_rendering_finished[ vk.cmd->swapchain_image_index ];
}
#else
submit_info.waitSemaphoreCount = 1;
submit_info.pWaitSemaphores = &vk.cmd->image_acquired;
submit_info.pWaitDstStageMask = &wait_dst_stage_mask;
submit_info.signalSemaphoreCount = 1;
submit_info.pSignalSemaphores = &vk.swapchain_rendering_finished[ vk.cmd->swapchain_image_index ];
#endif
} else {
submit_info.waitSemaphoreCount = 0;
submit_info.pWaitSemaphores = NULL;
Expand Down
14 changes: 0 additions & 14 deletions src/renderers/vulkan/vk_init_device.c
Original file line number Diff line number Diff line change
Expand Up @@ -465,20 +465,6 @@ void vk_initialize( void )
SET_OBJECT_NAME( vk.command_pool, "command pool", VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT );
}

#ifdef USE_UPLOAD_QUEUE
{
VkCommandBufferAllocateInfo alloc_info;

alloc_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO;
alloc_info.pNext = NULL;
alloc_info.commandPool = vk.command_pool;
alloc_info.level = VK_COMMAND_BUFFER_LEVEL_PRIMARY;
alloc_info.commandBufferCount = 1;

VK_CHECK( qvkAllocateCommandBuffers( vk.device, &alloc_info, &vk.staging_command_buffer ) );
}
#endif

//
// Command buffers and color attachments.
//
Expand Down
4 changes: 0 additions & 4 deletions src/renderers/vulkan/vk_pipeline_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,12 +85,8 @@ void vk_create_atmosphere_pipeline( void )
depth_stencil_state.sType = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO;
depth_stencil_state.depthTestEnable = VK_TRUE;
depth_stencil_state.depthWriteEnable = VK_FALSE;
#ifdef USE_REVERSED_DEPTH
/* Reversed depth: far=0.0. Pass only where stored==0.0 (sky). Shader outputs gl_FragDepth=0.0. */
depth_stencil_state.depthCompareOp = VK_COMPARE_OP_EQUAL;
#else
depth_stencil_state.depthCompareOp = VK_COMPARE_OP_LESS_OR_EQUAL;
#endif

Com_Memset( &attachment_blend, 0, sizeof( attachment_blend ) );
attachment_blend.blendEnable = VK_TRUE;
Expand Down
4 changes: 0 additions & 4 deletions src/renderers/vulkan/vk_postfx_passes.c
Original file line number Diff line number Diff line change
Expand Up @@ -348,11 +348,7 @@ qboolean vk_ssao_pass( void )
VkImageAspectFlags depth_aspect = VK_IMAGE_ASPECT_DEPTH_BIT;
const uint32_t ssaoTexW = vk_get_render_target_width();
const uint32_t ssaoTexH = vk_get_render_target_height();
#ifdef USE_REVERSED_DEPTH
const float depthIsReversed = 1.0f;
#else
const float depthIsReversed = 0.0f;
#endif
if ( glConfig.stencilBits > 0 )
depth_aspect |= VK_IMAGE_ASPECT_STENCIL_BIT;

Expand Down
6 changes: 0 additions & 6 deletions src/renderers/vulkan/vk_presentation.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,6 @@ void vk_teardown_presentation_targets( void )
}
}

#ifdef USE_UPLOAD_QUEUE
if ( vk.staging_command_buffer != VK_NULL_HANDLE ) {
qvkResetCommandBuffer( vk.staging_command_buffer, 0 );
}
#endif

vk_destroy_pipelines( qfalse );
vk_destroy_framebuffers();
vk_destroy_render_passes();
Expand Down
6 changes: 0 additions & 6 deletions src/renderers/vulkan/vk_render_pass.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,6 @@ void vk_begin_render_pass_tracked( VkRenderPass renderPass, VkFramebuffer frameB
if ( vk.renderPassIndex == RENDER_PASS_UI_OVERLAY ) {
clear_values[0].color.float32[3] = 0.0f;
}
#ifndef USE_REVERSED_DEPTH
clear_values[1].depthStencil.depth = 1.0;
#endif
if ( vk.renderPassIndex == RENDER_PASS_MAIN || vk.renderPassIndex == RENDER_PASS_POST_BLOOM ||
vk.renderPassIndex == RENDER_PASS_UI_OVERLAY ) {
if ( vk.fboActive ) {
Expand Down Expand Up @@ -91,9 +88,6 @@ void vk_begin_render_pass_tracked( VkRenderPass renderPass, VkFramebuffer frameB
clear_values[1].color.float32[1] = 1.0f;
clear_values[1].color.float32[2] = 1.0f;
clear_values[1].color.float32[3] = 1.0f;
#ifndef USE_REVERSED_DEPTH
clear_values[2].depthStencil.depth = 1.0f;
#endif
clear_count = vk.msaaActive ? 2 : 3;
}
render_pass_begin_info.clearValueCount = clear_count;
Expand Down
23 changes: 0 additions & 23 deletions src/renderers/vulkan/vk_view_state.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ static void vk_get_viewport( VkViewport *viewport, Vk_Depth_Range depth_range )

switch ( depth_range ) {
default:
#ifdef USE_REVERSED_DEPTH
viewport->minDepth = 0.0f;
viewport->maxDepth = 1.0f;
break;
Expand All @@ -124,23 +123,6 @@ static void vk_get_viewport( VkViewport *viewport, Vk_Depth_Range depth_range )
viewport->minDepth = 0.6f;
viewport->maxDepth = 1.0f;
break;
#else
viewport->minDepth = 0.0f;
viewport->maxDepth = 1.0f;
break;
case DEPTH_RANGE_ZERO:
viewport->minDepth = 0.0f;
viewport->maxDepth = 0.0f;
break;
case DEPTH_RANGE_ONE:
viewport->minDepth = 1.0f;
viewport->maxDepth = 1.0f;
break;
case DEPTH_RANGE_WEAPON:
viewport->minDepth = 0.0f;
viewport->maxDepth = 0.3f;
break;
#endif
}
}

Expand Down Expand Up @@ -212,13 +194,8 @@ static void vk_get_mvp_transform( float *mvp )

mvp[0] = mvp0; mvp[1] = 0.0f; mvp[2] = 0.0f; mvp[3] = 0.0f;
mvp[4] = 0.0f; mvp[5] = mvp5; mvp[6] = 0.0f; mvp[7] = 0.0f;
#ifdef USE_REVERSED_DEPTH
mvp[8] = 0.0f; mvp[9] = 0.0f; mvp[10] = 0.0f; mvp[11] = 0.0f;
mvp[12] = -1.0f; mvp[13] = -1.0f; mvp[14] = 1.0f; mvp[15] = 1.0f;
#else
mvp[8] = 0.0f; mvp[9] = 0.0f; mvp[10] = 1.0f; mvp[11] = 0.0f;
mvp[12] = -1.0f; mvp[13] = -1.0f; mvp[14] = 0.0f; mvp[15] = 1.0f;
#endif
} else {
float proj[16];
const float *projection = backEnd.useFirstPersonProjection
Expand Down
Loading