vulkan
Safe HaskellNone
LanguageHaskell2010

Vulkan.Core11.Promoted_From_VK_KHR_maintenance1

Synopsis

Documentation

trimCommandPool Source #

Arguments

:: MonadIO io 
=> Device

device is the logical device that owns the command pool.

-> CommandPool

commandPool is the command pool to trim.

-> CommandPoolTrimFlags

flags is reserved for future use.

-> io () 

vkTrimCommandPool - Trim a command pool

Description

Trimming a command pool recycles unused memory from the command pool back to the system. Command buffers allocated from the pool are not affected by the command.

This command provides applications with some control over the internal memory allocations used by command pools.

Unused memory normally arises from command buffers that have been recorded and later reset, such that they are no longer using the memory. On reset, a command buffer can return memory to its command pool, but the only way to release memory from a command pool to the system requires calling resetCommandPool, which cannot be executed while any command buffers from that pool are still in use. Subsequent recording operations into command buffers will reuse this memory but since total memory requirements fluctuate over time, unused memory can accumulate.

In this situation, trimming a command pool may be useful to return unused memory back to the system, returning the total outstanding memory allocated by the pool back to a more “average” value.

Implementations utilize many internal allocation strategies that make it impossible to guarantee that all unused memory is released back to the system. For instance, an implementation of a command pool may involve allocating memory in bulk from the system and sub-allocating from that memory. In such an implementation any live command buffer that holds a reference to a bulk allocation would prevent that allocation from being freed, even if only a small proportion of the bulk allocation is in use.

In most cases trimming will result in a reduction in allocated but unused memory, but it does not guarantee the “ideal” behavior.

Trimming may be an expensive operation, and should not be called frequently. Trimming should be treated as a way to relieve memory pressure after application-known points when there exists enough unused memory that the cost of trimming is “worth” it.

Valid Usage (Implicit)

  • device must be a valid Device handle
  • commandPool must be a valid CommandPool handle
  • flags must be 0
  • commandPool must have been created, allocated, or retrieved from device

Host Synchronization

  • Host access to commandPool must be externally synchronized

See Also

VK_KHR_maintenance1, VK_VERSION_1_1, CommandPool, CommandPoolTrimFlags, Device

newtype CommandPoolTrimFlags Source #

VkCommandPoolTrimFlags - Reserved for future use

Description

CommandPoolTrimFlags is a bitmask type for setting a mask, but is currently reserved for future use.

See Also

VK_KHR_maintenance1, VK_VERSION_1_1, Flags, trimCommandPool, trimCommandPool

Instances

Instances details
Bits CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

FiniteBits CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

Eq CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

Ord CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

Storable CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

Read CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

Show CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

Zero CommandPoolTrimFlags Source # 
Instance details

Defined in Vulkan.Core11.Enums.CommandPoolTrimFlags

newtype Result Source #

VkResult - Vulkan command return codes

Description

  • SUCCESS Command successfully completed

If a command returns a runtime error, unless otherwise specified any output parameters will have undefined contents, except that if the output parameter is a structure with sType and pNext fields, those fields will be unmodified. Any structures chained from pNext will also have undefined contents, except that sType and pNext will be unmodified.

VK_ERROR_OUT_OF_*_MEMORY errors do not modify any currently existing Vulkan objects. Objects that have already been successfully created can still be used by the application.

As a general rule, Free, Release, and Reset commands do not return ERROR_OUT_OF_HOST_MEMORY, while any other command with a return code may return it. Any exceptions from this rule are described for those commands.

ERROR_UNKNOWN will be returned by an implementation when an unexpected error occurs that cannot be attributed to valid behavior of the application and implementation. Under these conditions, it may be returned from any command returning a Result.

ERROR_UNKNOWN is not expected to ever be returned if the application behavior is valid, and if the implementation is bug-free. If ERROR_UNKNOWN is returned, the application should be checked against the latest validation layers to verify correct behavior as much as possible. If no issues are identified it could be an implementation issue, and the implementor should be contacted for support.

Any command returning a Result may return ERROR_VALIDATION_FAILED if a violation of valid usage is detected.

Performance-critical commands generally do not have return codes. If a runtime error occurs in such commands, the implementation will defer reporting the error until a specified point. For commands that record into command buffers (vkCmd*) runtime errors are reported by endCommandBuffer.

See Also

VK_VERSION_1_0, Promoted_From_VK_KHR_maintenance6AdditionalFunctionality.BindMemoryStatus', PresentInfoKHR

Constructors

Result Int32 

Bundled Patterns

pattern ERROR_COMPRESSION_EXHAUSTED_EXT :: Result 
pattern ERROR_DEVICE_LOST :: Result 
pattern ERROR_EXTENSION_NOT_PRESENT :: Result 
pattern ERROR_FEATURE_NOT_PRESENT :: Result 
pattern ERROR_FORMAT_NOT_SUPPORTED :: Result 
pattern ERROR_FRAGMENTATION :: Result 
pattern ERROR_FRAGMENTED_POOL :: Result 
pattern ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT :: Result 
pattern ERROR_INCOMPATIBLE_DISPLAY_KHR :: Result 
pattern ERROR_INCOMPATIBLE_DRIVER :: Result 
pattern ERROR_INITIALIZATION_FAILED :: Result 
pattern ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT :: Result 
pattern ERROR_INVALID_EXTERNAL_HANDLE :: Result 
pattern ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS :: Result 
pattern ERROR_INVALID_PIPELINE_CACHE_DATA :: Result 
pattern ERROR_INVALID_SHADER_NV :: Result 
pattern ERROR_LAYER_NOT_PRESENT :: Result 
pattern ERROR_MEMORY_MAP_FAILED :: Result 
pattern ERROR_NATIVE_WINDOW_IN_USE_KHR :: Result 
pattern ERROR_NOT_ENOUGH_SPACE_KHR :: Result 
pattern ERROR_NOT_PERMITTED :: Result 
pattern ERROR_NO_PIPELINE_MATCH :: Result 
pattern ERROR_OUT_OF_DATE_KHR :: Result 
pattern ERROR_OUT_OF_DEVICE_MEMORY :: Result 
pattern ERROR_OUT_OF_HOST_MEMORY :: Result 
pattern ERROR_OUT_OF_POOL_MEMORY :: Result 
pattern ERROR_PRESENT_TIMING_QUEUE_FULL_EXT :: Result 
pattern ERROR_SURFACE_LOST_KHR :: Result 
pattern ERROR_TOO_MANY_OBJECTS :: Result 
pattern ERROR_UNKNOWN :: Result 
pattern ERROR_VALIDATION_FAILED :: Result 
pattern EVENT_RESET :: Result 
pattern EVENT_SET :: Result 
pattern INCOMPATIBLE_SHADER_BINARY_EXT :: Result 
pattern INCOMPLETE :: Result 
pattern NOT_READY :: Result 
pattern OPERATION_DEFERRED_KHR :: Result 
pattern OPERATION_NOT_DEFERRED_KHR :: Result 
pattern PIPELINE_BINARY_MISSING_KHR :: Result 
pattern PIPELINE_COMPILE_REQUIRED :: Result 
pattern SUBOPTIMAL_KHR :: Result 
pattern SUCCESS :: Result 
pattern THREAD_DONE_KHR :: Result 
pattern THREAD_IDLE_KHR :: Result 
pattern TIMEOUT :: Result 

Instances

Instances details
Eq Result Source # 
Instance details

Defined in Vulkan.Core10.Enums.Result

Methods

(==) :: Result -> Result -> Bool #

(/=) :: Result -> Result -> Bool #

Ord Result Source # 
Instance details

Defined in Vulkan.Core10.Enums.Result

Storable Result Source # 
Instance details

Defined in Vulkan.Core10.Enums.Result

Read Result Source # 
Instance details

Defined in Vulkan.Core10.Enums.Result

Show Result Source # 
Instance details

Defined in Vulkan.Core10.Enums.Result

Zero Result Source # 
Instance details

Defined in Vulkan.Core10.Enums.Result

Methods

zero :: Result Source #

newtype ImageCreateFlagBits Source #

VkImageCreateFlagBits - Bitmask specifying additional parameters of an image

Description

See Sparse Resource Features and Sparse Physical Device Features for more details.

See Also

VK_VERSION_1_0, ImageCreateFlags

Instances

Instances details
Bits ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

FiniteBits ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

Eq ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

Ord ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

Storable ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

Read ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

Show ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

Zero ImageCreateFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.ImageCreateFlagBits

newtype FormatFeatureFlagBits Source #

VkFormatFeatureFlagBits - Bitmask specifying features supported by a buffer

Description

These values all have the same meaning as the equivalently named values for FormatFeatureFlags2 and may be set in linearTilingFeatures, optimalTilingFeatures, and DrmFormatModifierPropertiesEXT::drmFormatModifierTilingFeatures, specifying that the features are supported by images or image views or sampler Y′CBCR conversion objects created with the queried getPhysicalDeviceFormatProperties::format:

The following bits may be set in bufferFeatures, specifying that the features are supported by buffers or buffer views created with the queried getPhysicalDeviceFormatProperties::format:

FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT and FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT are only intended to be advertised for single-component formats, since SPIR-V atomic operations require a scalar type.

See Also

VK_VERSION_1_0, FormatFeatureFlags

Bundled Patterns

pattern FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_BLIT_DST_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_BLIT_SRC_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_DISJOINT_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_STORAGE_IMAGE_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_TRANSFER_DST_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_TRANSFER_SRC_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT :: FormatFeatureFlagBits 
pattern FORMAT_FEATURE_VERTEX_BUFFER_BIT :: FormatFeatureFlagBits 

Instances

Instances details
Bits FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

FiniteBits FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

Eq FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

Ord FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

Storable FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

Read FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

Show FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits

Zero FormatFeatureFlagBits Source # 
Instance details

Defined in Vulkan.Core10.Enums.FormatFeatureFlagBits