我需要渲染图像并将其复制回主机。我在vkCmdCopyImageToBuffer()
之后立即将渲染过程的结果中的vkCmdEndRenderPass()
发出到主机可读的缓冲区,它似乎可以工作,但是我担心复制在渲染完成之前开始(否则图像会过渡) )。
我是否需要执行某种同步,还是可以隐式地保证图像将过渡到所需的VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL
,而该@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
ReactiveFormsModule,
routing,
TooltipModule,
Ng2BootstrapModule,
TypeaheadModule,
ModalModule,
TinymceModule.withConfig({skin_url:appContextPath+'/assets/tinymce/skins/lightgray',
baseURL:appContextPath+'/assets/tinymce', plugins: ['preview','colorpicker','textcolor','link','table','lists','advlist','image','template'],
toolbar: 'preview | forecolor backcolor image | styleselect,formatselect,fontselect,fontsizeselect | tablecontrols | undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | template',
file_picker_types: 'image',
//problem code here
templates: 'somepath',
...
发生在渲染过程的末尾,即开始复制之前?在规格中,此顺序在哪里定义?
答案 0 :(得分:3)
在您构建渲染通道时,将显式指定执行渲染通道之后的图像布局。由VkAttachmentDescription::finalLayout
为附加的图片指定。
对于同步,它还是由您在renderpass创建时指定的。子通道可以具有外部依赖性,它们依赖于渲染通道之前发生的事情,或者它们导致渲染通道之后依赖它们的事情。
话虽如此,如果您未指定目标子通道为VK_SUBPASS_EXTERNAL
的子通道依赖关系,则会创建一个隐式依赖关系(Vulkan进行隐式同步的几次次数之一)。这种隐式依赖性将任何命令的颜色,深度和输入附件与管道底部同步。但是,由于它没有在其掩码中指定任何目标访问形式,因此它没有用,您应该提供显式的外部依赖关系。
此外,将管道底部用作目标阶段几乎没有用。