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

org.lwjgl.vulkan.EXTShaderSubgroupBallot 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;

/**
 * This extension adds support for the following SPIR-V extension in Vulkan:
 * 
 * 
    *
  • {@code SPV_KHR_shader_ballot}
  • *
* *

This extension provides the ability for a group of invocations, which execute in parallel, to do limited forms of cross-invocation communication via a group broadcast of a invocation value, or broadcast of a bitarray representing a predicate value from each invocation in the group.

* *

This extension provides access to a number of additional built-in shader variables in Vulkan:

* *
    *
  • {@code SubgroupEqMaskKHR}, which contains the subgroup mask of the current subgroup invocation,
  • *
  • {@code SubgroupGeMaskKHR}, which contains the subgroup mask of the invocations greater than or equal to the current invocation,
  • *
  • {@code SubgroupGtMaskKHR}, which contains the subgroup mask of the invocations greater than the current invocation,
  • *
  • {@code SubgroupLeMaskKHR}, which contains the subgroup mask of the invocations less than or equal to the current invocation,
  • *
  • {@code SubgroupLtMaskKHR}, which contains the subgroup mask of the invocations less than the current invocation,
  • *
  • {@code SubgroupLocalInvocationId}, which contains the index of an invocation within a subgroup, and
  • *
  • {@code SubgroupSize}, which contains the maximum number of invocations in a subgroup.
  • *
* *

Additionally, this extension provides access to the new SPIR-V instructions:

* *
    *
  • {@code OpSubgroupBallotKHR},
  • *
  • {@code OpSubgroupFirstInvocationKHR}, and
  • *
  • {@code OpSubgroupReadInvocationKHR},
  • *
* *

When using GLSL source-based shader languages, the following variables and shader functions from GL_ARB_shader_ballot can map to these SPIR-V built-in decorations and instructions:

* *
    *
  • {@code in uint64_t gl_SubGroupEqMaskARB;} → {@code SubgroupEqMaskKHR},
  • *
  • {@code in uint64_t gl_SubGroupGeMaskARB;} → {@code SubgroupGeMaskKHR},
  • *
  • {@code in uint64_t gl_SubGroupGtMaskARB;} → {@code SubgroupGtMaskKHR},
  • *
  • {@code in uint64_t gl_SubGroupLeMaskARB;} → {@code SubgroupLeMaskKHR},
  • *
  • {@code in uint64_t gl_SubGroupLtMaskARB;} → {@code SubgroupLtMaskKHR},
  • *
  • {@code in uint gl_SubGroupInvocationARB;} → {@code SubgroupLocalInvocationId},
  • *
  • {@code uniform uint gl_SubGroupSizeARB;} → {@code SubgroupSize},
  • *
  • {@code ballotARB}() → {@code OpSubgroupBallotKHR},
  • *
  • {@code readFirstInvocationARB}() → {@code OpSubgroupFirstInvocationKHR}, and
  • *
  • {@code readInvocationARB}() → {@code OpSubgroupReadInvocationKHR}.
  • *
* *
Deprecated by Vulkan 1.2
* *

Most of the functionality in this extension is superseded by the core Vulkan 1.1 subgroup operations. However, Vulkan 1.1 required the {@code OpGroupNonUniformBroadcast} “{@code Id}” to be constant. This restriction was removed in Vulkan 1.2 with the addition of the subgroupBroadcastDynamicId feature.

* *
VK_EXT_shader_subgroup_ballot
* *
*
Name String
*
{@code VK_EXT_shader_subgroup_ballot}
*
Extension Type
*
Device extension
*
Registered Extension Number
*
65
*
Revision
*
1
*
Extension and Version Dependencies
*
    *
  • Requires Vulkan 1.0
  • *
*
Deprecation state
*
*
Contact
*
*
* *
Other Extension Metadata
* *
*
Last Modified Date
*
2016-11-28
*
IP Status
*
No known IP claims.
*
Interactions and External Dependencies
*
*
Contributors
*
    *
  • Jeff Bolz, NVIDIA
  • *
  • Neil Henning, Codeplay
  • *
  • Daniel Koch, NVIDIA Corporation
  • *
*
*/ public final class EXTShaderSubgroupBallot { /** The extension specification version. */ public static final int VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION = 1; /** The extension name. */ public static final String VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME = "VK_EXT_shader_subgroup_ballot"; private EXTShaderSubgroupBallot() {} }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy