@@ -49,11 +49,11 @@ class PLYSTLDemo : public ApplicationBase
49
49
nbl::core::smart_refctd_ptr<nbl::video::IUtilities> utilities;
50
50
nbl::core::smart_refctd_ptr<nbl::video::ILogicalDevice> logicalDevice;
51
51
nbl::video::IPhysicalDevice* gpuPhysicalDevice;
52
- std::array<nbl::video::IGPUQueue*, CommonAPI::InitOutput<SC_IMG_COUNT>::EQT_COUNT > queues = { nullptr , nullptr , nullptr , nullptr };
52
+ std::array<nbl::video::IGPUQueue*, CommonAPI::InitOutput::MaxQueuesCount > queues = { nullptr , nullptr , nullptr , nullptr };
53
53
nbl::core::smart_refctd_ptr<nbl::video::ISwapchain> swapchain;
54
54
nbl::core::smart_refctd_ptr<nbl::video::IGPURenderpass> renderpass;
55
- std::array<nbl::core::smart_refctd_ptr<nbl::video::IGPUFramebuffer>, SC_IMG_COUNT > fbos;
56
- nbl::core::smart_refctd_ptr<nbl::video::IGPUCommandPool> commandPool ;
55
+ std::array<nbl::core::smart_refctd_ptr<nbl::video::IGPUFramebuffer>, CommonAPI::InitOutput::MaxSwapChainImageCount > fbos;
56
+ std::array< nbl::core::smart_refctd_ptr<nbl::video::IGPUCommandPool>, CommonAPI::InitOutput::MaxQueuesCount> commandPools ;
57
57
nbl::core::smart_refctd_ptr<nbl::system::ISystem> system;
58
58
nbl::core::smart_refctd_ptr<nbl::asset::IAssetManager> assetManager;
59
59
nbl::video::IGPUObjectFromAssetConverter::SParams cpu2gpuParams;
@@ -79,8 +79,8 @@ class PLYSTLDemo : public ApplicationBase
79
79
double time_sum = 0 ;
80
80
double dtList[NBL_FRAMES_TO_AVERAGE] = {};
81
81
82
- CommonAPI::InputSystem::ChannelReader<IMouseEventChannel> mouse;
83
- CommonAPI::InputSystem::ChannelReader<IKeyboardEventChannel> keyboard;
82
+ CommonAPI::InputSystem::ChannelReader<ui:: IMouseEventChannel> mouse;
83
+ CommonAPI::InputSystem::ChannelReader<ui:: IKeyboardEventChannel> keyboard;
84
84
85
85
Camera camera = Camera(core::vectorSIMDf(0 , 0 , 0 ), core::vectorSIMDf(0 , 0 , 0 ), core::matrix4SIMD());
86
86
@@ -94,22 +94,62 @@ class PLYSTLDemo : public ApplicationBase
94
94
{
95
95
window = std::move (wnd);
96
96
}
97
+ nbl::ui::IWindow* getWindow () override
98
+ {
99
+ return window.get ();
100
+ }
97
101
void setSystem (core::smart_refctd_ptr<nbl::system::ISystem>&& s) override
98
102
{
99
103
system = std::move (s);
100
104
}
101
- nbl::ui::IWindow* getWindow () override
105
+ video::IAPIConnection* getAPIConnection () override
102
106
{
103
- return window.get ();
107
+ return gl.get ();
108
+ }
109
+ video::ILogicalDevice* getLogicalDevice () override
110
+ {
111
+ return logicalDevice.get ();
112
+ }
113
+ video::IGPURenderpass* getRenderpass () override
114
+ {
115
+ return renderpass.get ();
116
+ }
117
+ void setSurface (core::smart_refctd_ptr<video::ISurface>&& s) override
118
+ {
119
+ surface = std::move (s);
120
+ }
121
+ void setFBOs (std::vector<core::smart_refctd_ptr<video::IGPUFramebuffer>>& f) override
122
+ {
123
+ for (int i = 0 ; i < f.size (); i++)
124
+ {
125
+ fbos[i] = core::smart_refctd_ptr (f[i]);
126
+ }
127
+ }
128
+ void setSwapchain (core::smart_refctd_ptr<video::ISwapchain>&& s) override
129
+ {
130
+ swapchain = std::move (s);
131
+ }
132
+ uint32_t getSwapchainImageCount () override
133
+ {
134
+ return SC_IMG_COUNT;
135
+ }
136
+ virtual nbl::asset::E_FORMAT getDepthFormat () override
137
+ {
138
+ return nbl::asset::EF_D32_SFLOAT;
104
139
}
105
140
106
141
APP_CONSTRUCTOR (PLYSTLDemo)
107
142
108
143
void onAppInitialized_impl() override
109
144
{
110
- CommonAPI::InitOutput<SC_IMG_COUNT> initOutput;
145
+ CommonAPI::InitOutput initOutput;
111
146
initOutput.window = core::smart_refctd_ptr (window);
112
- CommonAPI::Init<WIN_W, WIN_H, SC_IMG_COUNT>(initOutput, video::EAT_OPENGL, " plystldemo" , nbl::asset::EF_D32_SFLOAT);
147
+ initOutput.system = core::smart_refctd_ptr (system);
148
+
149
+ const auto swapchainImageUsage = static_cast <asset::IImage::E_USAGE_FLAGS>(asset::IImage::EUF_COLOR_ATTACHMENT_BIT);
150
+ const video::ISurface::SFormat surfaceFormat (asset::EF_R8G8B8A8_SRGB, asset::ECP_COUNT, asset::EOTF_UNKNOWN);
151
+
152
+ CommonAPI::InitWithDefaultExt (initOutput, video::EAT_OPENGL_ES, " plystldemo" , WIN_W, WIN_H, SC_IMG_COUNT, swapchainImageUsage, surfaceFormat, nbl::asset::EF_D32_SFLOAT);
113
153
window = std::move (initOutput.window );
114
154
gl = std::move (initOutput.apiConnection );
115
155
surface = std::move (initOutput.surface );
@@ -119,7 +159,7 @@ APP_CONSTRUCTOR(PLYSTLDemo)
119
159
swapchain = std::move (initOutput.swapchain );
120
160
renderpass = std::move (initOutput.renderpass );
121
161
fbos = std::move (initOutput.fbo );
122
- commandPool = std::move (initOutput.commandPool );
162
+ commandPools = std::move (initOutput.commandPools );
123
163
assetManager = std::move (initOutput.assetManager );
124
164
logger = std::move (initOutput.logger );
125
165
inputSystem = std::move (initOutput.inputSystem );
@@ -162,11 +202,9 @@ APP_CONSTRUCTOR(PLYSTLDemo)
162
202
cpu2gpuParams.sharingMode = nbl::asset::ESM_CONCURRENT;
163
203
cpu2gpuParams.utilities = utilities.get ();
164
204
165
- cpu2gpuParams.perQueue [nbl::video::IGPUObjectFromAssetConverter::EQU_TRANSFER].fence = &gpuTransferFence;
166
205
cpu2gpuParams.perQueue [nbl::video::IGPUObjectFromAssetConverter::EQU_TRANSFER].semaphore = &gpuTransferSemaphore;
167
206
cpu2gpuParams.perQueue [nbl::video::IGPUObjectFromAssetConverter::EQU_TRANSFER].queue = queues[decltype (initOutput)::EQT_TRANSFER_UP];
168
207
169
- cpu2gpuParams.perQueue [nbl::video::IGPUObjectFromAssetConverter::EQU_COMPUTE].fence = &gpuComputeFence;
170
208
cpu2gpuParams.perQueue [nbl::video::IGPUObjectFromAssetConverter::EQU_COMPUTE].semaphore = &gpuComputeSemaphore;
171
209
cpu2gpuParams.perQueue [nbl::video::IGPUObjectFromAssetConverter::EQU_COMPUTE].queue = queues[decltype (initOutput)::EQT_COMPUTE];
172
210
}
@@ -338,7 +376,7 @@ APP_CONSTRUCTOR(PLYSTLDemo)
338
376
for (size_t i = 0ull ; i < NBL_FRAMES_TO_AVERAGE; ++i)
339
377
dtList[i] = 0.0 ;
340
378
341
- logicalDevice->createCommandBuffers (commandPool .get (), video::IGPUCommandBuffer::EL_PRIMARY, FRAMES_IN_FLIGHT, commandBuffers);
379
+ logicalDevice->createCommandBuffers (commandPools[CommonAPI::InitOutput::EQT_GRAPHICS] .get (), video::IGPUCommandBuffer::EL_PRIMARY, FRAMES_IN_FLIGHT, commandBuffers);
342
380
343
381
for (uint32_t i = 0u ; i < FRAMES_IN_FLIGHT; i++)
344
382
{
@@ -352,8 +390,9 @@ APP_CONSTRUCTOR(PLYSTLDemo)
352
390
const auto & fboCreationParams = fbos[acquiredNextFBO]->getCreationParameters ();
353
391
auto gpuSourceImageView = fboCreationParams.attachments [0 ];
354
392
355
- bool status = ext::ScreenShot::createScreenShot (logicalDevice.get (), queues[CommonAPI::InitOutput<1u >::EQT_TRANSFER_UP], renderFinished[resourceIx].get (), gpuSourceImageView.get (), assetManager.get (), " ScreenShot.png" );
356
- assert (status);
393
+ // TODO:
394
+ // bool status = ext::ScreenShot::createScreenShot(logicalDevice.get(), queues[CommonAPI::InitOutput<1u>::EQT_TRANSFER_UP], renderFinished[resourceIx].get(), gpuSourceImageView.get(), assetManager.get(), "ScreenShot.png");
395
+ // assert(status);
357
396
}
358
397
359
398
void workLoopBody () override
@@ -399,8 +438,8 @@ APP_CONSTRUCTOR(PLYSTLDemo)
399
438
inputSystem->getDefaultKeyboard (&keyboard);
400
439
401
440
camera.beginInputProcessing (nextPresentationTimeStamp);
402
- mouse.consumeEvents ([&](const IMouseEventChannel::range_t & events) -> void { camera.mouseProcess (events); }, logger.get ());
403
- keyboard.consumeEvents ([&](const IKeyboardEventChannel::range_t & events) -> void { camera.keyboardProcess (events); }, logger.get ());
441
+ mouse.consumeEvents ([&](const ui:: IMouseEventChannel::range_t & events) -> void { camera.mouseProcess (events); }, logger.get ());
442
+ keyboard.consumeEvents ([&](const ui:: IKeyboardEventChannel::range_t & events) -> void { camera.keyboardProcess (events); }, logger.get ());
404
443
camera.endInputProcessing (nextPresentationTimeStamp);
405
444
406
445
const auto & viewMatrix = camera.getViewMatrix ();
@@ -494,12 +533,12 @@ APP_CONSTRUCTOR(PLYSTLDemo)
494
533
commandBuffer->bindGraphicsPipeline (gpuGraphicsPipeline.get ());
495
534
496
535
const video::IGPUDescriptorSet* gpuds1_ptr = gpuds1.get ();
497
- commandBuffer->bindDescriptorSets (asset::EPBP_GRAPHICS, gpuRenderpassIndependentPipeline->getLayout (), 1u , 1u , &gpuds1_ptr, nullptr );
536
+ commandBuffer->bindDescriptorSets (asset::EPBP_GRAPHICS, gpuRenderpassIndependentPipeline->getLayout (), 1u , 1u , &gpuds1_ptr, 0u );
498
537
const video::IGPUDescriptorSet* gpuds3_ptr = gpuMeshBuffer->getAttachedDescriptorSet ();
499
538
500
539
if (gpuds3_ptr)
501
- commandBuffer->bindDescriptorSets (asset::EPBP_GRAPHICS, gpuRenderpassIndependentPipeline->getLayout (), 3u , 1u , &gpuds3_ptr, nullptr );
502
- commandBuffer->pushConstants (gpuRenderpassIndependentPipeline->getLayout (), video::IGPUSpecializedShader ::ESS_FRAGMENT, 0u , gpuMeshBuffer->MAX_PUSH_CONSTANT_BYTESIZE , gpuMeshBuffer->getPushConstantsDataPtr ());
540
+ commandBuffer->bindDescriptorSets (asset::EPBP_GRAPHICS, gpuRenderpassIndependentPipeline->getLayout (), 3u , 1u , &gpuds3_ptr, 0u );
541
+ commandBuffer->pushConstants (gpuRenderpassIndependentPipeline->getLayout (), video::IGPUShader ::ESS_FRAGMENT, 0u , gpuMeshBuffer->MAX_PUSH_CONSTANT_BYTESIZE , gpuMeshBuffer->getPushConstantsDataPtr ());
503
542
504
543
commandBuffer->drawMeshBuffer (gpuMeshBuffer);
505
544
}
@@ -515,8 +554,8 @@ APP_CONSTRUCTOR(PLYSTLDemo)
515
554
commandBuffer->endRenderPass ();
516
555
commandBuffer->end ();
517
556
518
- CommonAPI::Submit (logicalDevice.get (), swapchain.get (), commandBuffer.get (), queues[CommonAPI::InitOutput< 1u > ::EQT_GRAPHICS], imageAcquire[resourceIx].get (), renderFinished[resourceIx].get (), fence.get ());
519
- CommonAPI::Present (logicalDevice.get (), swapchain.get (), queues[CommonAPI::InitOutput< 1u > ::EQT_GRAPHICS], renderFinished[resourceIx].get (), acquiredNextFBO);
557
+ CommonAPI::Submit (logicalDevice.get (), swapchain.get (), commandBuffer.get (), queues[CommonAPI::InitOutput::EQT_GRAPHICS], imageAcquire[resourceIx].get (), renderFinished[resourceIx].get (), fence.get ());
558
+ CommonAPI::Present (logicalDevice.get (), swapchain.get (), queues[CommonAPI::InitOutput::EQT_GRAPHICS], renderFinished[resourceIx].get (), acquiredNextFBO);
520
559
}
521
560
522
561
bool keepRunning () override
0 commit comments