vkCompViz App
 
Loading...
Searching...
No Matches
Classes | Enumerations | Functions | Variables | Files
gpu Module Reference

Exported Modules

module  loader
 
module  std
 
module  vulkan_hpp
 
module  common
 
module  shader
 

Classes

class  Gpu::Gpu
 
class  Gpu::Gpu::WorkGroupCount
 Represents the number of workgroups dispatched in each dimension. More...
 
class  Gpu::Gpu::BenchmarkReport
 Reports detailed benchmark statistics for GPU computation and rendering. More...
 
class  Gpu::Gpu::BenchmarkReport::Times
 Timing data for different GPU operations in milliseconds. More...
 
class  Gpu::Gpu::BenchmarkReport::Times::Download
 Download times from GPU to CPU in milliseconds. More...
 
class  Gpu::Gpu::BenchmarkReport::Times::Upload
 Upload times from CPU to GPU in milliseconds. More...
 
class  Gpu::Vulkan
 
class  Gpu::Vulkan::VulkanInitParams
 
class  Gpu::Vulkan::VulkanInitParams::Shaders
 
class  Gpu::Vulkan::VulkanInitParams::Textures
 
class  Gpu::Vulkan::VulkanInitParams::ShaderStorageBuffer
 
class  Gpu::Vulkan::SwapChain::Frame
 
class  Gpu::Vulkan::SwapChain::InFlight
 
class  Gpu::Vulkan::SwapChain::InFlight::CommandBuffers
 
class  Gpu::Vulkan::SwapChain::InFlight::Buffers
 
class  Gpu::Vulkan::SwapChain::InFlight::Sempahores
 
class  Gpu::Vulkan::SwapChain::InFlight::Fences
 
class  Gpu::Vulkan::SwapChain::InFlight::QueryPools
 
class  Gpu::Vulkan::Pipelines::Graphics
 
class  Gpu::Vulkan::Pipelines::Compute
 
class  Gpu::Vulkan::Times::Memory::Download
 
class  Gpu::Vulkan::Times::Memory::Upload
 

Enumerations

enum  ImageType { Depth = 0 , Storage = 1 , Read = 2 }
 

Functions

float computeTime () const
 Returns total compute time in milliseconds.
 
float memoryTime () const
 Returns total memory transfer time in milliseconds.
 
float totalTime (bool includeDraw=false) const
 Returns total time including compute and optionally draw time in milliseconds.
 
std::string toString () const
 Returns a string representation of the benchmark report.
 
void print () const
 Prints the benchmark report to the console.
 
void store (std::string path) const
 Saves the benchmark report to the specified file path.
 
 Gpu ()=default
 
virtual void run ()=0
 
virtual void computeSettings (std::vector< WorkGroupCount > shaderWorkGroupCounts, bool runBenchmark)=0
 
virtual void resize ()=0
 
virtual void updateUniformBuffer (std::vector< std::uint32_t > buffer)=0
 
virtual void updateUniform (std::string name, float value)=0
 
virtual void setUniformLimits (std::string name, float minValue, float maxValue)=0
 
virtual void printUniforms () const =0
 
virtual void addToUniform (std::string name, float value)=0
 
virtual std::shared_ptr< Loader::ImageresultTexture ()=0
 
virtual std::vector< float > resultBuffer (std::size_t size=0)=0
 
virtual ~Gpu ()=default
 
const std::vector< BenchmarkReport > benchmarkReports () const
 Returns the benchmark reports collected during execution.
 
size_t uniformBufferSize () const
 
size_t uniformBufferUint32Count () const
 
std::vector< std::string > uniformNames () const
 
 Vulkan (VulkanInitParams params)
 
void run () override
 
void computeSettings (std::vector< WorkGroupCount > shaderWorkGroupCounts, bool runBenchmark) override
 
void resize () override
 
void updateUniformBuffer (std::vector< uint32_t > buffer) override
 
void updateUniform (std::string name, float value) override
 
void setUniformLimits (std::string name, float minValue, float maxValue) override
 
void addToUniform (std::string name, float value) override
 
void printUniforms () const override
 
std::shared_ptr< Loader::ImageresultTexture () override
 
std::vector< float > resultBuffer (size_t size=0) override
 
 ~Vulkan ()
 
 ~Buffer ()
 
 ~Texture ()
 
void nextInFlight ()
 
InFlight & currentInFlight ()
 
InFlight & lastComputedInFlight ()
 
 CreateInfo (Vulkan &vulkan, VulkanInitParams params)
 
void updateResolution ()
 
Resolution currentResolution () const
 
vk::ApplicationInfo & application ()
 
vk::InstanceCreateInfo & instance ()
 
vk::raii::PhysicalDevice bestPhysicalDevice ()
 
vk::DeviceCreateInfo & device ()
 
std::vector< vk::DeviceQueueCreateInfo > & queues ()
 
std::size_t graphicsQueueID () const
 
std::size_t computeQueueID () const
 
std::size_t presentQueueID () const
 
vk::SwapchainCreateInfoKHR & swapChain ()
 
vk::ShaderModuleCreateInfo & shaderModule (std::vector< std::uint32_t > &code)
 
vk::PipelineShaderStageCreateInfo & pipelineShaderStage (vk::raii::ShaderModule &shaderModule, vk::ShaderStageFlagBits stage)
 
vk::PipelineDynamicStateCreateInfo & pipelineDynamic ()
 
vk::PipelineVertexInputStateCreateInfo & vertexInput ()
 
vk::PipelineInputAssemblyStateCreateInfo & inputAssembly ()
 
vk::PipelineViewportStateCreateInfo & viewport ()
 
vk::PipelineRasterizationStateCreateInfo & rasterization ()
 
vk::PipelineMultisampleStateCreateInfo & multisample ()
 
vk::PipelineColorBlendAttachmentState & colorBlendAttachment ()
 
vk::PipelineColorBlendStateCreateInfo & colorBlend ()
 
vk::PipelineLayoutCreateInfo & pipelineLayout ()
 
vk::RenderPassCreateInfo & renderPass ()
 
vk::GraphicsPipelineCreateInfo & graphicsPipeline ()
 
vk::ComputePipelineCreateInfo & computePipeline (vk::raii::ShaderModule &shaderModule, vk::raii::PipelineLayout &pipelineLayout)
 
vk::FramebufferCreateInfo & frameBuffer (vk::raii::ImageView &color, vk::raii::ImageView &depth)
 
vk::CommandPoolCreateInfo & commandPool (std::size_t queueFamilyID)
 
vk::CommandBufferAllocateInfo & commandBuffer (vk::raii::CommandPool &commandPool, std::uint32_t count)
 
vk::RenderPassBeginInfo & renderPassBegin (vk::raii::Framebuffer &frameBuffer)
 
vk::SemaphoreCreateInfo & semaphore ()
 
vk::FenceCreateInfo & fence ()
 
vk::ImageViewCreateInfo & imageView (vk::Format imageFormat, vk::Image image, bool depth=false)
 
vk::ImageCreateInfo & image (vk::Format imageFormat, Resolution resolution, ImageType imageType)
 
vk::DescriptorSetLayoutCreateInfo & descriptorSetLayout (size_t inputTextureCount, size_t outputTextureCount)
 
vk::DescriptorPoolCreateInfo & descriptorPool (size_t inputTextureCount, size_t outputTextureCount, size_t inFlightFramesCount)
 
vk::DescriptorSetAllocateInfo & descriptorSet (vk::raii::DescriptorPool &descriptorPool, std::size_t count)
 
vk::SamplerCreateInfo & sampler ()
 
void createFrameBuffer (Vulkan::SwapChain::Frame &frame, vk::Image image)
 
void createFrameSync (SwapChain::InFlight &frame)
 
const std::vector< std::shared_ptr< Loader::Image > > & outputImages () const
 
const std::vector< std::shared_ptr< Loader::Image > > & inputImages () const
 
std::size_t shaderStorageBufferSize () const
 
const std::vector< float > & shaderStorageBufferData () const
 
VkSurfaceKHR surface ()
 
bool windowEnabled () const
 
std::size_t vertexCount () const
 
std::size_t computeShaderCount () const
 
 Memory (vk::raii::Instance &instance, vk::raii::PhysicalDevice &physicalDevice, vk::raii::Device &device, Vulkan &vulkan)
 
std::unique_ptr< Buffer > buffer (vk::BufferUsageFlags usage, size_t size)
 
std::unique_ptr< Texture > texture (std::shared_ptr< Loader::Image > image, bool storage=false)
 
std::unique_ptr< Texture > depth (Resolution resolution)
 
 ~Memory ()
 
 Graphics ()=default
 
 Compute ()=default
 
 Compute (std::vector< vk::raii::ShaderModule > &shaders, vk::raii::Device &device, CreateInfo &createInfo)
 
vk::raii::CommandBuffer & command ()
 
 ~OneTimeCommand ()
 

Variables

std::size_t x
 
std::size_t y
 
std::size_t z
 
std::size_t inFlightFrames {1}
 Number of in-flight frames during benchmarking.
 
std::vector< float > compute
 Compute times per compute shader iteration in milliseconds.
 
float draw {0}
 Time taken to draw a frame in milliseconds.
 
float texture {0}
 Time taken to download texture data.
 
float shaderStorage {0}
 Time taken to download shader storage buffer data.
 
float texture {0}
 Time taken to upload texture data.
 
float shaderStorage {0}
 Time taken to upload shader storage buffer data.
 
float usedMemory {0}
 Amount of GPU memory used in bytes.
 
bool benchmark = false
 
std::vector< BenchmarkReport > benchmarks
 
std::vector< const char * > requiredExtensions
 
std::function< std::uintptr_t(std::uintptr_t)> surface
 
std::function< Resolution()> currentResolution
 
bool window {true}
 
Resolution resolution
 
std::string deviceUUID {""}
 
Shader::Shader::Info vertex
 
Shader::Shader::Info fragment
 
std::size_t vertexCount {3}
 
std::vector< Shader::Shader::Infocompute
 
std::vector< std::shared_ptr< Loader::Image > > input
 
std::vector< std::shared_ptr< Loader::Image > > output
 
std::size_t size
 
std::vector< float > initialData
 
VkBuffer buffer
 
VmaAllocation allocation
 
VmaAllocator * allocator
 
VkImage image
 
VmaAllocation allocation
 
VmaAllocator * allocator
 
std::optional< vk::raii::ImageView > view
 
std::optional< vk::raii::DescriptorPool > descriptorPool
 
vk::Image image
 
std::optional< vk::raii::ImageView > imageView
 
std::optional< vk::raii::Framebuffer > frameBuffer
 
std::unique_ptr< Texture > depth
 
std::optional< vk::raii::CommandBuffer > graphics
 
std::optional< vk::raii::CommandBuffer > compute
 
std::optional< vk::raii::DescriptorSet > descriptorSet
 
std::vector< std::unique_ptr< Texture > > outputTextures
 
std::unique_ptr< Buffer > uniform
 
std::unique_ptr< Buffer > shaderStorage
 
std::optional< vk::raii::Semaphore > imageAvailable
 
std::optional< vk::raii::Semaphore > renderFinished
 
std::optional< vk::raii::Semaphore > computeFinished
 
std::optional< vk::raii::Fence > inFlight
 
std::optional< vk::raii::Fence > computeInFlight
 
std::optional< vk::raii::QueryPool > compute
 
size_t computeCount {0}
 
std::optional< vk::raii::QueryPool > graphics
 
std::optional< vk::raii::SwapchainKHR > swapChain
 
std::optional< vk::raii::SwapchainKHR > oldSwapChain
 
vk::Format imageFormat
 
vk::Extent2D extent
 
std::vector< Frame > frames
 
std::vector< InFlight > inFlight
 
std::uint32_t inFlightID {0}
 
std::uint32_t inFlightCount {0}
 
int previousInFlightID {-1}
 
std::size_t graphics
 
std::size_t compute
 
std::size_t present
 
VmaAllocator allocator
 
vk::raii::Queue graphics
 
vk::raii::Queue compute
 
vk::raii::Queue present
 
vk::raii::CommandPool graphics
 
vk::raii::CommandPool compute
 
vk::raii::ShaderModule vertex
 
vk::raii::ShaderModule fragment
 
std::vector< vk::raii::ShaderModule > compute
 
std::optional< vk::raii::PipelineLayout > layout
 
std::optional< vk::raii::RenderPass > renderPass
 
std::optional< vk::raii::Pipeline > pipeline
 
std::optional< vk::raii::PipelineLayout > layout
 
std::vector< vk::raii::Pipeline > pipelines
 
std::optional< vk::raii::CommandBuffer > buffer
 
vk::raii::Queue * queue
 
static constexpr size_t UNIFORM {0}
 
static constexpr size_t OUTPUT_TEXTURE_SAMPLER {1}
 
static constexpr size_t OUTPUT_TEXTURE_STORAGE {2}
 
static constexpr size_t INPUT_TEXTURE_SAMPLER {3}
 
static constexpr size_t INPUT_TEXTURE {4}
 
static constexpr size_t SHADER_STORAGE {5}
 
float texture {0}
 
float shaderStorage {0}
 
float texture {0}
 
float shaderStorage {0}
 
float minValue
 
float maxValue
 

Files

file  /home/runner/work/vkCompViz/vkCompViz/vkCompViz/src/gpu.cppm
 
file  /home/runner/work/vkCompViz/vkCompViz/vkCompViz/src/gpu.interface.cppm
 
file  /home/runner/work/vkCompViz/vkCompViz/vkCompViz/src/gpu.vulkan.cppm