MCPcopy Create free account
hub / github.com/OGRECave/ogre-next / init

Method init

RenderSystems/Vulkan/src/OgreVulkanQueue.cpp:261–295  ·  view source on GitHub ↗

-------------------------------------------------------------------------

Source from the content-addressed store, hash-verified

259 }
260 //-------------------------------------------------------------------------
261 void VulkanQueue::init( VkDevice device, VkQueue queue, VulkanRenderSystem *renderSystem )
262 {
263 mDevice = device;
264 mQueue = queue;
265 mVaoManager = static_cast<VulkanVaoManager *>( renderSystem->getVaoManager() );
266 mRenderSystem = renderSystem;
267
268 const size_t maxNumFrames = mVaoManager->getDynamicBufferMultiplier();
269
270 VkDeviceQueueCreateInfo queueCreateInfo;
271 makeVkStruct( queueCreateInfo, VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO );
272
273 // Create at least maxNumFrames fences, though we may need more
274 mAvailableFences.resize( maxNumFrames );
275
276 VkFenceCreateInfo fenceCi;
277 makeVkStruct( fenceCi, VK_STRUCTURE_TYPE_FENCE_CREATE_INFO );
278 for( size_t i = 0; i < maxNumFrames; ++i )
279 {
280 VkResult result = vkCreateFence( mDevice, &fenceCi, 0, &mAvailableFences[i] );
281 checkVkResult( result, "vkCreateFence" );
282 }
283
284 // Create one cmd pool per thread (assume single threaded for now)
285 mPerFrameData.resize( maxNumFrames );
286 VkCommandPoolCreateInfo cmdPoolCreateInfo;
287 makeVkStruct( cmdPoolCreateInfo, VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO );
288 cmdPoolCreateInfo.flags = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT;
289 cmdPoolCreateInfo.queueFamilyIndex = mFamilyIdx;
290
291 for( size_t i = 0; i < maxNumFrames; ++i )
292 vkCreateCommandPool( mDevice, &cmdPoolCreateInfo, 0, &mPerFrameData[i].mCmdPool );
293
294 newCommandBuffer();
295 }
296
297 void VulkanQueue::destroy() {}
298

Callers 1

initQueuesMethod · 0.45

Calls 3

makeVkStructFunction · 0.85
getVaoManagerMethod · 0.80
resizeMethod · 0.45

Tested by

no test coverage detected