@@ -144,7 +144,7 @@ void pushDescriptors(VkCommandBuffer commandBuffer, FrameDescriptors& framedesc,
144144
145145 const Image* image = static_cast <const Image*>(info.resource );
146146 char descriptor[128 ];
147- getDescriptor (framedesc.device , image->image , image->format , 0 , 1 , program.resourceTypes [i], descriptor, framedesc.descriptorSize );
147+ getDescriptor (framedesc.device , image->image , image->format , 0 , VK_REMAINING_MIP_LEVELS , program.resourceTypes [i], descriptor, framedesc.descriptorSize );
148148
149149 memcpy (static_cast <char *>(framedesc.descriptorHeap ) + (framedesc.descriptorOffset + i) * framedesc.descriptorSize , descriptor, framedesc.descriptorSize );
150150 }
@@ -1370,8 +1370,7 @@ int main(int argc, const char** argv)
13701370
13711371 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, pipeline);
13721372
1373- DescriptorInfo pyramidDesc (depthSampler, depthPyramid.imageView );
1374- DescriptorInfo descriptors[] = { db.buffer , mb.buffer , dcb.buffer , dccb.buffer , dvb.buffer , pyramidDesc };
1373+ DescriptorInfo descriptors[] = { db, mb, dcb, dccb, dvb, depthPyramid, depthSampler };
13751374
13761375 dispatch (commandBuffer, framedesc, drawcullProgram, uint32_t (draws.size ()), 1 , passData, descriptors);
13771376 }
@@ -1382,7 +1381,7 @@ int main(int argc, const char** argv)
13821381
13831382 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, tasksubmitPipeline);
13841383
1385- DescriptorInfo descriptors[] = { dccb. buffer , dcb. buffer };
1384+ DescriptorInfo descriptors[] = { dccb, dcb };
13861385 pushDescriptors (commandBuffer, framedesc, tasksubmitProgram, descriptors);
13871386
13881387 vkCmdDispatch (commandBuffer, 1 , 1 , 1 );
@@ -1409,8 +1408,7 @@ int main(int argc, const char** argv)
14091408
14101409 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, late ? clusterculllatePipeline : clustercullPipeline);
14111410
1412- DescriptorInfo pyramidDesc (depthSampler, depthPyramid.imageView );
1413- DescriptorInfo descriptors[] = { dcb.buffer , db.buffer , mlb.buffer , mvb.buffer , pyramidDesc, cib.buffer , ccb.buffer };
1411+ DescriptorInfo descriptors[] = { dcb, db, mlb, mvb, depthPyramid, cib, ccb, depthSampler };
14141412 pushDescriptors (commandBuffer, framedesc, clustercullProgram, descriptors);
14151413
14161414 CullData passData = cullData;
@@ -1423,7 +1421,7 @@ int main(int argc, const char** argv)
14231421
14241422 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_COMPUTE, clustersubmitPipeline);
14251423
1426- DescriptorInfo descriptors2[] = { ccb. buffer , cib. buffer };
1424+ DescriptorInfo descriptors2[] = { ccb, cib };
14271425 pushDescriptors (commandBuffer, framedesc, clustersubmitProgram, descriptors2);
14281426
14291427 vkCmdDispatch (commandBuffer, 1 , 1 , 1 );
@@ -1475,7 +1473,7 @@ int main(int argc, const char** argv)
14751473 {
14761474 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, postPass >= 1 ? clusterpostPipeline : clusterPipeline);
14771475
1478- DescriptorInfo descriptors[] = { dcb. buffer , db. buffer , mlb. buffer , mdb. buffer , vb. buffer , cib. buffer , DescriptorInfo (), textureSampler, mtb. buffer };
1476+ DescriptorInfo descriptors[] = { dcb, db, mlb, mdb, vb, cib, DescriptorInfo (), textureSampler, mtb };
14791477 pushDescriptors (commandBuffer, framedesc, clusterProgram, descriptors);
14801478
14811479 vkCmdBindDescriptorSets (commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, clusterProgram.layout , 1 , 1 , &textureSet.second , 0 , nullptr );
@@ -1488,8 +1486,7 @@ int main(int argc, const char** argv)
14881486 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, postPass >= 1 ? meshtaskpostPipeline : late ? meshtasklatePipeline
14891487 : meshtaskPipeline);
14901488
1491- DescriptorInfo pyramidDesc (depthSampler, depthPyramid.imageView );
1492- DescriptorInfo descriptors[] = { dcb.buffer , db.buffer , mlb.buffer , mdb.buffer , vb.buffer , mvb.buffer , pyramidDesc, textureSampler, mtb.buffer };
1489+ DescriptorInfo descriptors[] = { dcb, db, mlb, mdb, vb, mvb, depthPyramid, textureSampler, mtb, depthSampler };
14931490 pushDescriptors (commandBuffer, framedesc, meshtaskProgram, descriptors);
14941491
14951492 vkCmdBindDescriptorSets (commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, meshtaskProgram.layout , 1 , 1 , &textureSet.second , 0 , nullptr );
@@ -1501,7 +1498,7 @@ int main(int argc, const char** argv)
15011498 {
15021499 vkCmdBindPipeline (commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, postPass >= 1 ? meshpostPipeline : meshPipeline);
15031500
1504- DescriptorInfo descriptors[] = { dcb. buffer , db. buffer , vb. buffer , DescriptorInfo (), DescriptorInfo (), DescriptorInfo (), DescriptorInfo (), textureSampler, mtb. buffer };
1501+ DescriptorInfo descriptors[] = { dcb, db, vb, DescriptorInfo (), DescriptorInfo (), DescriptorInfo (), DescriptorInfo (), textureSampler, mtb };
15051502 pushDescriptors (commandBuffer, framedesc, meshProgram, descriptors);
15061503
15071504 vkCmdBindDescriptorSets (commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, meshProgram.layout , 1 , 1 , &textureSet.second , 0 , nullptr );
@@ -1529,11 +1526,9 @@ int main(int argc, const char** argv)
15291526
15301527 for (uint32_t i = 0 ; i < depthPyramidLevels; ++i)
15311528 {
1532- DescriptorInfo sourceDepth = (i == 0 )
1533- ? DescriptorInfo (depthSampler, depthTarget.imageView )
1534- : DescriptorInfo (depthSampler, depthPyramidMips[i - 1 ]);
1529+ VkImageView sourceDepth = (i == 0 ) ? depthTarget.imageView : depthPyramidMips[i - 1 ];
15351530
1536- DescriptorInfo descriptors[] = { depthPyramidMips[i], sourceDepth };
1531+ DescriptorInfo descriptors[] = { depthPyramidMips[i], sourceDepth, depthSampler };
15371532
15381533 uint32_t levelWidth = std::max (1u , depthPyramidWidth >> i);
15391534 uint32_t levelHeight = std::max (1u , depthPyramidHeight >> i);
0 commit comments