Skip to content

Commit 2ee1c83

Browse files
committed
[Vk] Wrap mCurrentCmdBuffer in accessor
1 parent 081c763 commit 2ee1c83

15 files changed

Lines changed: 64 additions & 57 deletions

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ set( OGRE_DEBUG_LEVEL_DEBUG 3 CACHE STRING
559559
3 - High. We perform intensive validation without concerns for performance."
560560
)
561561
set( OGRE_DEBUG_LEVEL_RELEASE 0 CACHE STRING
562-
"Specify debug level for Release, RelWithDebInfo and MinSizeRel builds. See OGRE_MAX_DEBUG_LEVEL_DEBUG" )
562+
"Specify debug level for Release, RelWithDebInfo and MinSizeRel builds. See OGRE_DEBUG_LEVEL_DEBUG" )
563563

564564
cmake_dependent_option(OGRE_CONFIG_CONTAINERS_USE_CUSTOM_ALLOCATOR "STL containers in Ogre use the custom allocator" TRUE "" FALSE)
565565
if( OGRE_CONFIG_ALLOCATOR EQUAL 0 )

RenderSystems/Vulkan/include/OgreVulkanQueue.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ namespace Ogre
7777
uint32 mQueueIdx;
7878

7979
VkQueue mQueue;
80-
VkCommandBuffer mCurrentCmdBuffer;
8180

8281
VulkanDevice *mOwnerDevice;
8382

@@ -116,6 +115,7 @@ namespace Ogre
116115
FastArray<VulkanWindowSwapChainBased *> mWindowsPendingSwap;
117116

118117
protected:
118+
VkCommandBuffer mCurrentCmdBuffer;
119119
FastArray<VkCommandBuffer> mPendingCmds;
120120

121121
VulkanVaoManager *mVaoManager;
@@ -220,6 +220,11 @@ namespace Ogre
220220
void endCommandBuffer();
221221

222222
public:
223+
VkCommandBuffer getCurrentCmdBuffer()
224+
{
225+
OGRE_ASSERT_LOW( mCurrentCmdBuffer );
226+
return mCurrentCmdBuffer;
227+
}
223228
EncoderState getEncoderState() const { return mEncoderState; }
224229

225230
void getGraphicsEncoder();

RenderSystems/Vulkan/src/OgreVulkanAsyncTextureTicket.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ namespace Ogre
132132
memBarrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
133133

134134
// GPU must stop using this buffer before we can write into it
135-
vkCmdPipelineBarrier( mQueue->mCurrentCmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT,
135+
vkCmdPipelineBarrier( mQueue->getCurrentCmdBuffer(), VK_PIPELINE_STAGE_TRANSFER_BIT,
136136
VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 1u, &memBarrier, 0u, 0, 0u, 0 );
137137
}
138138

@@ -168,7 +168,7 @@ namespace Ogre
168168
region.imageExtent.height = srcTextureBox.height;
169169
region.imageExtent.depth = srcTextureBox.depth;
170170

171-
vkCmdCopyImageToBuffer( mQueue->mCurrentCmdBuffer, srcTextureVk->getFinalTextureName(),
171+
vkCmdCopyImageToBuffer( mQueue->getCurrentCmdBuffer(), srcTextureVk->getFinalTextureName(),
172172
VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, mVboName.mVboName, 1u, &region );
173173

174174
if( accurateTracking )

RenderSystems/Vulkan/src/OgreVulkanDiscardBufferManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ namespace Ogre
9696
region.srcOffset = ( *itor )->getBlockStart() + oldBuffer.mInternalBufferStart;
9797
region.dstOffset = ( *itor )->getBlockStart() + mBuffer.mInternalBufferStart;
9898
region.size = ( *itor )->getBlockSize();
99-
vkCmdCopyBuffer( mDevice->mGraphicsQueue.mCurrentCmdBuffer, oldBuffer.mVboName,
99+
vkCmdCopyBuffer( mDevice->mGraphicsQueue.getCurrentCmdBuffer(), oldBuffer.mVboName,
100100
mBuffer.mVboName, 1u, &region );
101101
( *itor )->mLastFrameUsed = currentFrame;
102102
}

RenderSystems/Vulkan/src/OgreVulkanHardwareBufferCommon.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ namespace Ogre
297297
region.srcOffset = srcOffset + srcOffsetStart;
298298
region.dstOffset = dstOffset + dstOffsetStart;
299299
region.size = alignToNextMultiple<size_t>( length, 4u );
300-
vkCmdCopyBuffer( mDevice->mGraphicsQueue.mCurrentCmdBuffer, srcBuf, dstBuf, 1u,
300+
vkCmdCopyBuffer( mDevice->mGraphicsQueue.getCurrentCmdBuffer(), srcBuf, dstBuf, 1u,
301301
&region );
302302

303303
if( this->mDiscardBuffer )

RenderSystems/Vulkan/src/OgreVulkanQueue.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,7 @@ namespace Ogre
635635

636636
// Wait until earlier render, compute and transfers are done so we can copy what
637637
// they wrote (unless we're only here for a texture transition)
638-
vkCmdPipelineBarrier( mCurrentCmdBuffer, srcStage & mOwnerDevice->mSupportedStages,
638+
vkCmdPipelineBarrier( getCurrentCmdBuffer(), srcStage & mOwnerDevice->mSupportedStages,
639639
VK_PIPELINE_STAGE_TRANSFER_BIT, 0, numMemBarriers, &memBarrier, 0u, 0,
640640
numImageMemBarriers, &imageMemBarrier );
641641
}
@@ -839,7 +839,7 @@ namespace Ogre
839839

840840
// Wait until earlier render, compute and transfers are done so we can copy what
841841
// they wrote (unless we're only here for a texture transition)
842-
vkCmdPipelineBarrier( mCurrentCmdBuffer, srcStage & mOwnerDevice->mSupportedStages,
842+
vkCmdPipelineBarrier( getCurrentCmdBuffer(), srcStage & mOwnerDevice->mSupportedStages,
843843
VK_PIPELINE_STAGE_TRANSFER_BIT, 0, numMemBarriers, &memBarrier, 0u, 0,
844844
numImageMemBarriers, &imageMemBarrier );
845845
}
@@ -937,7 +937,7 @@ namespace Ogre
937937
numMemBarriers = 1u;
938938

939939
// GPU must stop using this buffer before we can write into it
940-
vkCmdPipelineBarrier( mCurrentCmdBuffer, VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
940+
vkCmdPipelineBarrier( getCurrentCmdBuffer(), VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
941941
VK_PIPELINE_STAGE_TRANSFER_BIT, 0, numMemBarriers, &memBarrier, 0u,
942942
0, 0u, 0 );
943943
}
@@ -997,7 +997,7 @@ namespace Ogre
997997

998998
// Wait until earlier render, compute and transfers are done
999999
// Block render, compute and transfers until we're done
1000-
vkCmdPipelineBarrier( mCurrentCmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT,
1000+
vkCmdPipelineBarrier( getCurrentCmdBuffer(), VK_PIPELINE_STAGE_TRANSFER_BIT,
10011001
dstStage & mOwnerDevice->mSupportedStages, 0, numMemBarriers,
10021002
&memBarrier, 0u, 0, static_cast<uint32_t>( mImageMemBarriers.size() ),
10031003
mImageMemBarriers.begin() );

RenderSystems/Vulkan/src/OgreVulkanRenderPassDescriptor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -904,7 +904,7 @@ namespace Ogre
904904
if( mInformationOnly )
905905
return;
906906

907-
VkCommandBuffer cmdBuffer = mQueue->mCurrentCmdBuffer;
907+
VkCommandBuffer cmdBuffer = mQueue->getCurrentCmdBuffer();
908908

909909
const VulkanFrameBufferDescValue &fboDesc = mSharedFboItor->second;
910910

@@ -967,7 +967,7 @@ namespace Ogre
967967
if( mQueue->getEncoderState() != VulkanQueue::EncoderGraphicsOpen )
968968
return;
969969

970-
vkCmdEndRenderPass( mQueue->mCurrentCmdBuffer );
970+
vkCmdEndRenderPass( mQueue->getCurrentCmdBuffer() );
971971

972972
if( isInterruptingRendering )
973973
{

RenderSystems/Vulkan/src/OgreVulkanRenderSystem.cpp

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2182,7 +2182,7 @@ namespace Ogre
21822182
if( mPso )
21832183
oldRootLayout = reinterpret_cast<VulkanHlmsPso *>( mPso->rsData )->rootLayout;
21842184

2185-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2185+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
21862186
OGRE_ASSERT_LOW( pso->rsData );
21872187
VulkanHlmsPso *vulkanPso = reinterpret_cast<VulkanHlmsPso *>( pso->rsData );
21882188
vkCmdBindPipeline( cmdBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, vulkanPso->pso );
@@ -2212,7 +2212,7 @@ namespace Ogre
22122212
{
22132213
OGRE_ASSERT_LOW( pso->rsData );
22142214
vulkanPso = reinterpret_cast<VulkanHlmsPso *>( pso->rsData );
2215-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2215+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
22162216
vkCmdBindPipeline( cmdBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, vulkanPso->pso );
22172217

22182218
if( vulkanPso->rootLayout != oldRootLayout )
@@ -2232,7 +2232,7 @@ namespace Ogre
22322232
{
22332233
flushRootLayoutCS();
22342234

2235-
vkCmdDispatch( mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer, pso.mNumThreadGroups[0],
2235+
vkCmdDispatch( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer(), pso.mNumThreadGroups[0],
22362236
pso.mNumThreadGroups[1], pso.mNumThreadGroups[2] );
22372237
}
22382238
//-------------------------------------------------------------------------
@@ -2258,7 +2258,7 @@ namespace Ogre
22582258

22592259
OGRE_ASSERT_LOW( numVertexBuffers < 15u );
22602260

2261-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2261+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
22622262
if( numVertexBuffers > 0u )
22632263
{
22642264
vkCmdBindVertexBuffers( cmdBuffer, 0, static_cast<uint32>( numVertexBuffers ),
@@ -2304,7 +2304,7 @@ namespace Ogre
23042304
{
23052305
flushRootLayout();
23062306

2307-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2307+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
23082308
vkCmdDrawIndexedIndirect( cmdBuffer, mIndirectBuffer,
23092309
reinterpret_cast<VkDeviceSize>( cmd->indirectBufferOffset ),
23102310
cmd->numDraws, sizeof( CbDrawIndexed ) );
@@ -2314,7 +2314,7 @@ namespace Ogre
23142314
{
23152315
flushRootLayout();
23162316

2317-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2317+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
23182318
vkCmdDrawIndirect( cmdBuffer, mIndirectBuffer,
23192319
reinterpret_cast<VkDeviceSize>( cmd->indirectBufferOffset ), cmd->numDraws,
23202320
sizeof( CbDrawStrip ) );
@@ -2327,7 +2327,7 @@ namespace Ogre
23272327
CbDrawIndexed *drawCmd = reinterpret_cast<CbDrawIndexed *>( mSwIndirectBufferPtr +
23282328
(size_t)cmd->indirectBufferOffset );
23292329

2330-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2330+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
23312331

23322332
for( uint32 i = cmd->numDraws; i--; )
23332333
{
@@ -2345,7 +2345,7 @@ namespace Ogre
23452345
CbDrawStrip *drawCmd =
23462346
reinterpret_cast<CbDrawStrip *>( mSwIndirectBufferPtr + (size_t)cmd->indirectBufferOffset );
23472347

2348-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2348+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
23492349

23502350
for( uint32 i = cmd->numDraws; i--; )
23512351
{
@@ -2359,7 +2359,7 @@ namespace Ogre
23592359
{
23602360
VulkanVaoManager *vaoManager = static_cast<VulkanVaoManager *>( mVaoManager );
23612361

2362-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2362+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
23632363

23642364
VkBuffer vulkanVertexBuffers[16];
23652365
VkDeviceSize offsets[16];
@@ -2420,7 +2420,7 @@ namespace Ogre
24202420
{
24212421
flushRootLayout();
24222422

2423-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2423+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
24242424
vkCmdDrawIndexed( cmdBuffer, cmd->primCount, cmd->instanceCount, cmd->firstVertexIndex,
24252425
(int32_t)mCurrentVertexBuffer->vertexStart, cmd->baseInstance );
24262426
}
@@ -2429,7 +2429,7 @@ namespace Ogre
24292429
{
24302430
flushRootLayout();
24312431

2432-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2432+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
24332433
vkCmdDraw( cmdBuffer, cmd->primCount, cmd->instanceCount, cmd->firstVertexIndex,
24342434
cmd->baseInstance );
24352435
}
@@ -2443,7 +2443,7 @@ namespace Ogre
24432443

24442444
const size_t numberOfInstances = op.numberOfInstances;
24452445

2446-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2446+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
24472447

24482448
// Render to screen!
24492449
if( op.useIndexes )
@@ -2692,7 +2692,7 @@ namespace Ogre
26922692
#if OGRE_DEBUG_MODE >= OGRE_DEBUG_MEDIUM
26932693
if( !CmdBeginDebugUtilsLabelEXT )
26942694
return; // VK_EXT_debug_utils not available
2695-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2695+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
26962696
VkDebugUtilsLabelEXT markerInfo;
26972697
makeVkStruct( markerInfo, VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT );
26982698
markerInfo.pLabelName = event.c_str();
@@ -2705,7 +2705,7 @@ namespace Ogre
27052705
#if OGRE_DEBUG_MODE >= OGRE_DEBUG_MEDIUM
27062706
if( !CmdEndDebugUtilsLabelEXT )
27072707
return; // VK_EXT_debug_utils not available
2708-
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer;
2708+
VkCommandBuffer cmdBuffer = mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer();
27092709
CmdEndDebugUtilsLabelEXT( cmdBuffer );
27102710
#endif
27112711
}
@@ -2905,11 +2905,11 @@ namespace Ogre
29052905
mActiveDevice->mGraphicsQueue.getGraphicsEncoder();
29062906

29072907
VulkanVaoManager *vaoManager = static_cast<VulkanVaoManager *>( mVaoManager );
2908-
vaoManager->bindDrawIdVertexBuffer( mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer );
2908+
vaoManager->bindDrawIdVertexBuffer( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer() );
29092909

29102910
if( mStencilEnabled )
29112911
{
2912-
vkCmdSetStencilReference( mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer,
2912+
vkCmdSetStencilReference( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer(),
29132913
VK_STENCIL_FACE_FRONT_AND_BACK, mStencilRefValue );
29142914
}
29152915

@@ -2943,7 +2943,8 @@ namespace Ogre
29432943
#endif
29442944
}
29452945

2946-
vkCmdSetViewport( mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer, 0u, numViewports, vkVp );
2946+
vkCmdSetViewport( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer(), 0u, numViewports,
2947+
vkVp );
29472948
}
29482949

29492950
if( mVpChanged || numViewports > 1u )
@@ -2966,7 +2967,7 @@ namespace Ogre
29662967
#endif
29672968
}
29682969

2969-
vkCmdSetScissor( mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer, 0u, numViewports,
2970+
vkCmdSetScissor( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer(), 0u, numViewports,
29702971
scissorRect );
29712972
}
29722973

@@ -3340,10 +3341,11 @@ namespace Ogre
33403341
if( dstStage == 0 )
33413342
dstStage = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
33423343

3343-
vkCmdPipelineBarrier(
3344-
mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer, srcStage & mActiveDevice->mSupportedStages,
3345-
dstStage & mActiveDevice->mSupportedStages, 0, numMemBarriers, &memBarrier, 0u, 0,
3346-
static_cast<uint32>( mImageBarriers.size() ), mImageBarriers.begin() );
3344+
vkCmdPipelineBarrier( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer(),
3345+
srcStage & mActiveDevice->mSupportedStages,
3346+
dstStage & mActiveDevice->mSupportedStages, 0, numMemBarriers, &memBarrier,
3347+
0u, 0, static_cast<uint32>( mImageBarriers.size() ),
3348+
mImageBarriers.begin() );
33473349
mImageBarriers.clear();
33483350
}
33493351
//-------------------------------------------------------------------------
@@ -3864,7 +3866,7 @@ namespace Ogre
38643866

38653867
if( mActiveDevice->mGraphicsQueue.getEncoderState() == VulkanQueue::EncoderGraphicsOpen )
38663868
{
3867-
vkCmdSetStencilReference( mActiveDevice->mGraphicsQueue.mCurrentCmdBuffer,
3869+
vkCmdSetStencilReference( mActiveDevice->mGraphicsQueue.getCurrentCmdBuffer(),
38683870
VK_STENCIL_FACE_FRONT_AND_BACK, mStencilRefValue );
38693871
}
38703872
}

RenderSystems/Vulkan/src/OgreVulkanRootLayout.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -611,7 +611,7 @@ namespace Ogre
611611
if( firstDirtySet < mSets.size() )
612612
{
613613
vkCmdBindDescriptorSets(
614-
device->mGraphicsQueue.mCurrentCmdBuffer,
614+
device->mGraphicsQueue.getCurrentCmdBuffer(),
615615
mCompute ? VK_PIPELINE_BIND_POINT_COMPUTE : VK_PIPELINE_BIND_POINT_GRAPHICS, mRootLayout,
616616
firstDirtySet, static_cast<uint32_t>( mSets.size() ) - firstDirtySet,
617617
&descSets[firstDirtySet], 0u, 0 );

RenderSystems/Vulkan/src/OgreVulkanStagingTexture.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ namespace Ogre
183183
region.imageExtent.height = srcBox.height;
184184
region.imageExtent.depth = srcBox.depth;
185185

186-
vkCmdCopyBufferToImage( device->mGraphicsQueue.mCurrentCmdBuffer, mVboName,
186+
vkCmdCopyBufferToImage( device->mGraphicsQueue.getCurrentCmdBuffer(), mVboName,
187187
dstTextureVulkan->getFinalTextureName(),
188188
VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1u, &region );
189189
}

0 commit comments

Comments
 (0)