Vulkan Samples 阅读 -- Headless(一) Render & Compute

Render

VulkanExample 构造

  • vkCreateInstance
  • vkCreateDebugReportCallbackEXT
  • vkCreateDevice
  • vkGetDeviceQueue
  • vkCreateCommandPool
  • createBuffer: VBO
  • createBuffer: IBO
  • Create framebuffer attachments
    • vkCreateImage * 2
      • vkGetImageMemoryRequirements_vkAllocateMemory_vkBindImageMemory
    • vkCreateImageView
  • Create renderpass
    • vkCreateRenderPass
    • vkCreateFramebuffer
  • Prepare graphics pipeline
    • vkCreateDescriptorSetLayout
    • vkCreatePipelineLayout
    • vkCreatePipelineCache
    • vkCreateGraphicsPipelines
  • Command buffer creation
    • vkAllocateCommandBuffers
    • vkBeginCommandBuffer
    • vkCmdBeginRenderPass
    • vkCmdSetViewport
    • vkCmdBindPipeline
    • vkCmdBindVertexBuffers
    • vkCmdBindIndexBuffer
    • vkCmdPushConstants
    • vkCmdDrawIndexed
    • vkCmdEndRenderPass
    • vkEndCommandBuffer
    • submitWork: 提交到队列
      • vkCreateFence
      • vkQueueSubmit
      • vkWaitForFences
      • vkDestroyFence
    • vkDeviceWaitIdle
  • 保存渲染结果(Copy framebuffer image to host visible image)
    • vkCreateImage
    • vkGetImageMemoryRequirements_vkAllocateMemory_vkBindImageMemory
    • vkAllocateCommandBuffers
    • vkBeginCommandBuffer
    • insertImageMemoryBarrier
    • vkCmdCopyImage
    • insertImageMemoryBarrier
    • vkEndCommandBuffer
    • submitWork
    • vkGetImageSubresourceLayout
    • vkMapMemory
    • 将数据写入本地磁盘(imagedata)
    • vkUnmapMemory
    • vkFreeMemory
    • vkDestroyImage
  • vkQueueWaitIdle

VulkanExample析构

  • vkDestroyBuffer
  • vkFreeMemory
  • vkDestroyImageView
  • vkDestroyImage
  • vkDestroyRenderPass
  • vkDestroyFramebuffer
  • vkDestroyPipelineLayout
  • vkDestroyDescriptorSetLayout
  • vkDestroyPipeline
  • vkDestroyPipelineCache
  • vkDestroyCommandPool
  • vkDestroyShaderModule
  • vkDestroyDevice
  • vkDestroyDebugReportCallback
  • vkDestroyInstance

shader

  • VS: 正常渲染三角形
  • FS: 正常渲染

小结

  本节主要讲如何将渲染结果保存到本地硬盘. 即从GPU显存(framebuffer)复制数据到内存的教程. 主要还是使用MemoryBarrier. 没有新东西, 复习了一下vulkan管线.

Render

VulkanExample 构造

  • vkCreateInstance
  • vkCreateDebugReportCallbackEXT
  • vkCreateDevice
  • vkGetDeviceQueue
  • vkCreateCommandPool
  • Prepare storage buffers
    • 输入数据:std::vector<uint32_t> computeInput
    • 输出数据:std::vector<uint32_t> computeOutput
    • 没见过的std使用方法
      • std::generate(computeInput.begin(), computeInput.end(), [&n] { return n++; });
  • Copy input data to VRAM using a staging buffer
    • createBuffer
    • vkMapMemory
    • vkFlushMappedMemoryRanges
    • vkUnmapMemory
    • createBuffer
    • vkAllocateCommandBuffers
    • vkBeginCommandBuffer
    • vkCmdCopyBuffer
    • vkEndCommandBuffer
    • vkCreateFence
    • vkQueueSubmit
    • vkWaitForFences
    • vkDestroyFence
    • vkFreeCommandBuffers
  • Prepare compute pipeline
    • vkCreateDescriptorPool
    • vkCreateDescriptorSetLayout
    • vkAllocateDescriptorSets
    • writeDescriptorSet
    • vkUpdateDescriptorSets
    • vkCreatePipelineCache
    • vkCreateComputePipelines
    • vkAllocateCommandBuffers
    • vkCreateFence
  • Command buffer creation
    • vkBeginCommandBuffer
    • vkCmdPipelineBarrier
    • vkCmdBindPipeline
    • vkCmdBindDescriptorSets
    • vkCmdDispatch
    • vkCmdPipelineBarrier
    • Read back to host visible buffer
      • vkCmdCopyBuffer
      • vkCmdPipelineBarrier
    • vkEndCommandBuffer
    • vkResetFences
    • vkQueueSubmit
    • vkWaitForFences
    • Make device writes visible to the host
      • vkMapMemory
      • vkInvalidateMappedMemoryRanges
      • memcpy
      • vkUnmapMemory
    • vkQueueWaitIdle
    • LOG(“Compute output:\n”): 控制台输出
    • vkDestroyBuffer
    • vkFreeMemory

VulkanExample析构

  • vkDestroyPipelineLayout
  • vkDestroyDescriptorSetLayout
  • vkDestroyDescriptorPool
  • vkDestroyPipeline
  • vkDestroyPipelineCache
  • vkDestroyFence
  • vkDestroyCommandPool
  • vkDestroyShaderModule
  • vkDestroyDevice
  • vkDestroyDebugReportCallback
  • vkDestroyInstance

shader

  • comp: 将输入从新赋值再输出

小结

  本节主要讲如何将CS计算结果保存到本地硬盘. 与上一节差不多,复习一下CS管线的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
realesrgan-ncnn-vulkan-20211212-windows是一个基于ncnn框架和Vulkan图形API开发的图像超分辨率增强模型。它是由GitHub用户realsrgan开发的最新版本,最新发布日期为2021年12月12日,专为Windows操作系统而设计。 该模型的主要应用是图像超分辨率增强,通过提高图像的分辨率和细节,使图像看起来更加清晰和真实。它采用深度学习和卷积神经网络等先进的技术,能够将低分辨率的图像转换成高分辨率的图像,从而提升图像的质量和视觉效果。 realesrgan-ncnn-vulkan-20211212-windows的开发使用了ncnn框架和Vulkan图形API,这使得它能够在Windows系统上实现快速且高效的图像处理。ncnn是一个轻量级的深度学习框架,专注于在移动平台和嵌入式设备上实现高性能和低延迟的推理。而Vulkan图形API是一种跨平台的图形渲染和计算API,可以充分利用计算设备的性能,提供高效的图像处理和渲染能力。 realesrgan-ncnn-vulkan-20211212-windows的使用可以通过命令行或者图形界面进行,用户可以根据自己的需求和偏好选择适合的方式。该模型提供了训练好的权重参数,用户可以直接加载这些参数并进行图像超分辨率增强。此外,该模型还支持批量处理和视频处理,方便用户对多个图像进行处理。 总之,realesrgan-ncnn-vulkan-20211212-windows是一个高效、快速且易于使用的图像超分辨率增强模型,适用于Windows系统,并利用了ncnn框架和Vulkan图形API的优势,为用户提供了出色的图像处理效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值