diff --git a/source/ref_nri/r_program.c b/source/ref_nri/r_program.c index 2188c7fb35..7db2849b87 100644 --- a/source/ref_nri/r_program.c +++ b/source/ref_nri/r_program.c @@ -1219,6 +1219,11 @@ void RP_BindDescriptorSets( struct RIDevice_s *device, struct FrameState_s *cmd, if( !refl || setIndex != refl->set || RI_IsEmptyDescriptor( &bindings[i].descriptor ) ) continue; + if( numWrites == Q_ARRAY_COUNT( descriptorWrite ) ) { + vkUpdateDescriptorSets( device->vk.device, numWrites, descriptorWrite, 0, NULL ); + numWrites = 0; + } + assert( numWrites < Q_ARRAY_COUNT( descriptorWrite ) ); VkWriteDescriptorSet *vkDesc = descriptorWrite + ( numWrites++ ); memset( vkDesc, 0, sizeof( VkWriteDescriptorSet ) ); @@ -1248,18 +1253,15 @@ void RP_BindDescriptorSets( struct RIDevice_s *device, struct FrameState_s *cmd, break; } - if( numWrites >= Q_ARRAY_COUNT( descriptorWrite ) ) { - vkUpdateDescriptorSets( device->vk.device, numWrites, descriptorWrite, 0, NULL ); - numWrites = 0; - } } } + if( numWrites > 0 ) { + vkUpdateDescriptorSets( device->vk.device, numWrites, descriptorWrite, 0, NULL ); + numWrites = 0; + } VkDescriptorSet vkDescriptorSet = result.set->vk.handle; vkCmdBindDescriptorSets( cmd->handle.vk.cmd, VK_PIPELINE_BIND_POINT_GRAPHICS, program->vk.pipelineLayout, setIndex, 1, &vkDescriptorSet, 0, NULL ); } - if( numWrites > 0 ) { - vkUpdateDescriptorSets( device->vk.device, numWrites, descriptorWrite, 0, NULL ); - } } #endif TracyCZoneEnd( ctx );