All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.lwjgl.vulkan.AMDBufferMarker Maven / Gradle / Ivy

Go to download

A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.

There is a newer version: 3.3.4
Show newest version
/*
 * Copyright LWJGL. All rights reserved.
 * License terms: https://www.lwjgl.org/license
 * MACHINE GENERATED FILE, DO NOT EDIT
 */
package org.lwjgl.vulkan;

import org.lwjgl.system.*;

import static org.lwjgl.system.Checks.*;
import static org.lwjgl.system.JNI.*;

/**
 * This extension adds a new operation to execute pipelined writes of small marker values into a {@code VkBuffer} object.
 * 
 * 

The primary purpose of these markers is to facilitate the development of debugging tools for tracking which pipelined command contributed to device loss.

* *
Examples
* *

None.

* *
VK_AMD_buffer_marker
* *
*
Name String
*
{@code VK_AMD_buffer_marker}
*
Extension Type
*
Device extension
*
Registered Extension Number
*
180
*
Revision
*
1
*
Extension and Version Dependencies
*
    *
  • Requires Vulkan 1.0
  • *
*
Special Use
*
*
Contact
*
*
* *
Other Extension Metadata
* *
*
Last Modified Date
*
2018-01-26
*
IP Status
*
No known IP claims.
*
Contributors
*
    *
  • Matthaeus G. Chajdas, AMD
  • *
  • Jaakko Konttinen, AMD
  • *
  • Daniel Rakos, AMD
  • *
*
*/ public class AMDBufferMarker { /** The extension specification version. */ public static final int VK_AMD_BUFFER_MARKER_SPEC_VERSION = 1; /** The extension name. */ public static final String VK_AMD_BUFFER_MARKER_EXTENSION_NAME = "VK_AMD_buffer_marker"; protected AMDBufferMarker() { throw new UnsupportedOperationException(); } // --- [ vkCmdWriteBufferMarkerAMD ] --- /** * Execute a pipelined write of a marker value into a buffer. * *
C Specification
* *

To write a 32-bit marker value into a buffer as a pipelined operation, call:

* *

     * void vkCmdWriteBufferMarkerAMD(
     *     VkCommandBuffer                             commandBuffer,
     *     VkPipelineStageFlagBits                     pipelineStage,
     *     VkBuffer                                    dstBuffer,
     *     VkDeviceSize                                dstOffset,
     *     uint32_t                                    marker);
* *
Description
* *

The command will write the 32-bit marker value into the buffer only after all preceding commands have finished executing up to at least the specified pipeline stage. This includes the completion of other preceding {@code vkCmdWriteBufferMarkerAMD} commands so long as their specified pipeline stages occur either at the same time or earlier than this command’s specified {@code pipelineStage}.

* *

While consecutive buffer marker writes with the same {@code pipelineStage} parameter are implicitly complete in submission order, memory and execution dependencies between buffer marker writes and other operations must still be explicitly ordered using synchronization commands. The access scope for buffer marker writes falls under the {@link VK10#VK_ACCESS_TRANSFER_WRITE_BIT ACCESS_TRANSFER_WRITE_BIT}, and the pipeline stages for identifying the synchronization scope must include both {@code pipelineStage} and {@link VK10#VK_PIPELINE_STAGE_TRANSFER_BIT PIPELINE_STAGE_TRANSFER_BIT}.

* *
Note
* *

Similar to {@code vkCmdWriteTimestamp}, if an implementation is unable to write a marker at any specific pipeline stage, it may instead do so at any logically later stage.

*
* *
Note
* *

Implementations may only support a limited number of pipelined marker write operations in flight at a given time, thus excessive number of marker write operations may degrade command execution performance.

*
* *
Valid Usage
* *
    *
  • {@code pipelineStage} must be a valid stage for the queue family that was used to create the command pool that {@code commandBuffer} was allocated from
  • *
  • If the geometry shaders feature is not enabled, {@code pipelineStage} must not be {@link VK10#VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT PIPELINE_STAGE_GEOMETRY_SHADER_BIT}
  • *
  • If the tessellation shaders feature is not enabled, {@code pipelineStage} must not be {@link VK10#VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT} or {@link VK10#VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT}
  • *
  • If the conditional rendering feature is not enabled, {@code pipelineStage} must not be {@link EXTConditionalRendering#VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT}
  • *
  • If the fragment density map feature is not enabled, {@code pipelineStage} must not be {@link EXTFragmentDensityMap#VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT}
  • *
  • If the transform feedback feature is not enabled, {@code pipelineStage} must not be {@link EXTTransformFeedback#VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT}
  • *
  • If the mesh shaders feature is not enabled, {@code pipelineStage} must not be {@link NVMeshShader#VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV PIPELINE_STAGE_MESH_SHADER_BIT_NV} or {@link NVMeshShader#VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV PIPELINE_STAGE_TASK_SHADER_BIT_NV}
  • *
  • If the shading rate image feature is not enabled, {@code pipelineStage} must not be {@link NVShadingRateImage#VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV}
  • *
  • {@code dstOffset} must be less than or equal to the size of {@code dstBuffer} minus 4
  • *
  • {@code dstBuffer} must have been created with {@link VK10#VK_BUFFER_USAGE_TRANSFER_DST_BIT BUFFER_USAGE_TRANSFER_DST_BIT} usage flag
  • *
  • If {@code dstBuffer} is non-sparse then it must be bound completely and contiguously to a single {@code VkDeviceMemory} object
  • *
  • {@code dstOffset} must be a multiple of 4
  • *
* *
Valid Usage (Implicit)
* *
    *
  • {@code commandBuffer} must be a valid {@code VkCommandBuffer} handle
  • *
  • {@code pipelineStage} must be a valid {@code VkPipelineStageFlagBits} value
  • *
  • {@code dstBuffer} must be a valid {@code VkBuffer} handle
  • *
  • {@code commandBuffer} must be in the recording state
  • *
  • The {@code VkCommandPool} that {@code commandBuffer} was allocated from must support transfer, graphics, or compute operations
  • *
  • Both of {@code commandBuffer}, and {@code dstBuffer} must have been created, allocated, or retrieved from the same {@code VkDevice}
  • *
* *
Host Synchronization
* *
    *
  • Host access to {@code commandBuffer} must be externally synchronized
  • *
  • Host access to the {@code VkCommandPool} that {@code commandBuffer} was allocated from must be externally synchronized
  • *
* *
Command Properties
* * * * *
Command Buffer LevelsRender Pass ScopeSupported Queue Types
Primary SecondaryBothTransfer Graphics Compute
* * @param commandBuffer the command buffer into which the command will be recorded. * @param pipelineStage a {@code VkPipelineStageFlagBits} value specifying the pipeline stage whose completion triggers the marker write. * @param dstBuffer the buffer where the marker will be written to. * @param dstOffset the byte offset into the buffer where the marker will be written to. * @param marker the 32-bit value of the marker. */ public static void vkCmdWriteBufferMarkerAMD(VkCommandBuffer commandBuffer, @NativeType("VkPipelineStageFlagBits") int pipelineStage, @NativeType("VkBuffer") long dstBuffer, @NativeType("VkDeviceSize") long dstOffset, @NativeType("uint32_t") int marker) { long __functionAddress = commandBuffer.getCapabilities().vkCmdWriteBufferMarkerAMD; if (CHECKS) { check(__functionAddress); } callPJJV(commandBuffer.address(), pipelineStage, dstBuffer, dstOffset, marker, __functionAddress); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy