const VkDeviceSize indirectBufferOffset,
const deUint32 indirectBufferStride) = DE_NULL;
virtual void setUsePPGeometries (const bool usePPGeometries) = 0;
+ virtual void setTryCachedMemory (const bool tryCachedMemory) = 0;
virtual VkBuildAccelerationStructureFlagsKHR getBuildFlags () const = DE_NULL;
- VkDeviceSize getStructureSize () const;
+ VkAccelerationStructureBuildSizesInfoKHR getStructureBuildSizes () const;
// methods specific for each acceleration structure
+ virtual void getCreationSizes (const DeviceInterface& vk,
+ const VkDevice device,
+ const VkDeviceSize structureSize,
+ CreationSizes& sizes) = 0;
virtual void create (const DeviceInterface& vk,
const VkDevice device,
Allocator& allocator,
0u,
*m_vertexShaderModule,
&rasterizationStateParams)
- .setupFragmentShaderState(*m_pipelineLayout,
- *m_renderPass,
- 0u,
- *m_fragmentShaderModule,
- &depthStencilStateParams)
- .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateCreateInfo)
- .setMonolithicPipelineLayout(*m_pipelineLayout)
- .buildPipeline();
+ .setupFragmentShaderState(*m_pipelineLayout,
+ *m_renderPass,
+ 0u,
+ *m_fragmentShaderModule,
+ &depthStencilStateParams)
- .setupFragmentOutputState(*m_renderPass)
++ .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateCreateInfo)
+ .setMonolithicPipelineLayout(*m_pipelineLayout)
+ .buildPipeline();
+ }
+ else
+ {
+ m_altGraphicsPipelines[quadNdx].setDefaultMultisampleState()
+ .setDefaultColorBlendState()
+ .setDepthClipControl(depthClipControl01Wrapper)
+ .setDynamicState(&dynamicStateCreateInfo)
+ .setupVertexInputStete(&vertexInputStateParams)
+ .setupPreRasterizationShaderState((dynamicViewport ? badViewports : viewports),
+ scissors,
+ *m_pipelineLayout,
+ *m_renderPass,
+ 0u,
+ *m_vertexShaderModule,
+ &rasterizationStateParams)
+ .setupFragmentShaderState(*m_pipelineLayout,
+ *m_renderPass,
+ 0u,
+ *m_fragmentShaderModule,
+ &depthStencilStateParams)
- .setupFragmentOutputState(*m_renderPass)
++ .setupFragmentOutputState(*m_renderPass, 0u, &colorBlendStateCreateInfo)
+ .setMonolithicPipelineLayout(*m_pipelineLayout)
+ .buildPipeline();
+ }
}
}
}
{
cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, &preImageBarrier);
vkd.cmdClearColorImage(*cmdBuffer, **image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, &clearValue.color, 1, &imageSubresourceRange);
- cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, &postImageBarrier);
+ cmdPipelineImageMemoryBarrier(vkd, *cmdBuffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, &postImageBarrier);
- bottomLevelAccelerationStructures = initBottomAccelerationStructures(*cmdBuffer, useGpuBuild, workerThreadsCount);
- topLevelAccelerationStructure = initTopAccelerationStructure(*cmdBuffer, useGpuBuild, workerThreadsCount, bottomLevelAccelerationStructures);
+ topLevelAccelerationStructure = initTopAccelerationStructure(useGpuBuild, workerThreadsCount, blasPool);
+ createTopAccelerationStructure(*cmdBuffer, topLevelAccelerationStructure.get());
- const TopLevelAccelerationStructure* topLevelAccelerationStructurePtr = topLevelAccelerationStructure.get();
VkWriteDescriptorSetAccelerationStructureKHR accelerationStructureWriteDescriptorSet =
{
VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR, // VkStructureType sType;