|
|
@@ -550,81 +550,76 @@ enum class AttachmentStoreOperation : U8
|
|
|
};
|
|
|
|
|
|
/// Buffer usage modes.
|
|
|
+/// The graphics work consists of the following pipes: INDIRECT, GEOMETRY (all programmable and fixed function geometry
|
|
|
+/// stages) and finaly FRAGMENT.
|
|
|
+/// The compute from the consists of the following: INDIRECT and COMPUTE.
|
|
|
+/// The trace rays from the: INDIRECT and TRACE_RAYS
|
|
|
enum class BufferUsageBit : U64
|
|
|
{
|
|
|
NONE = 0,
|
|
|
|
|
|
- UNIFORM_VERTEX = 1 << 0,
|
|
|
- UNIFORM_TESSELLATION_EVALUATION = 1 << 1,
|
|
|
- UNIFORM_TESSELLATION_CONTROL = 1 << 2,
|
|
|
- UNIFORM_GEOMETRY = 1 << 3,
|
|
|
- UNIFORM_FRAGMENT = 1 << 4,
|
|
|
- UNIFORM_COMPUTE = 1 << 5,
|
|
|
- UNIFORM_ALL_GRAPHICS = UNIFORM_VERTEX | UNIFORM_TESSELLATION_EVALUATION | UNIFORM_TESSELLATION_CONTROL
|
|
|
- | UNIFORM_GEOMETRY | UNIFORM_FRAGMENT,
|
|
|
- UNIFORM_ALL = UNIFORM_ALL_GRAPHICS | UNIFORM_COMPUTE,
|
|
|
-
|
|
|
- STORAGE_VERTEX_READ = 1 << 6,
|
|
|
- STORAGE_VERTEX_WRITE = 1 << 7,
|
|
|
- STORAGE_VERTEX_READ_WRITE = STORAGE_VERTEX_READ | STORAGE_VERTEX_WRITE,
|
|
|
- STORAGE_TESSELLATION_EVALUATION_READ = 1 << 8,
|
|
|
- STORAGE_TESSELLATION_EVALUATION_WRITE = 1 << 9,
|
|
|
- STORAGE_TESSELLATION_EVALUATION_READ_WRITE =
|
|
|
- STORAGE_TESSELLATION_EVALUATION_READ | STORAGE_TESSELLATION_EVALUATION_WRITE,
|
|
|
- STORAGE_TESSELLATION_CONTROL_READ = 1 << 10,
|
|
|
- STORAGE_TESSELLATION_CONTROL_WRITE = 1 << 11,
|
|
|
- STORAGE_TESSELLATION_CONTROL_READ_WRITE = STORAGE_TESSELLATION_CONTROL_READ | STORAGE_TESSELLATION_CONTROL_WRITE,
|
|
|
- STORAGE_GEOMETRY_READ = 1 << 12,
|
|
|
- STORAGE_GEOMETRY_WRITE = 1 << 13,
|
|
|
- STORAGE_GEOMETRY_READ_WRITE = STORAGE_GEOMETRY_READ | STORAGE_GEOMETRY_WRITE,
|
|
|
- STORAGE_FRAGMENT_READ = 1 << 14,
|
|
|
- STORAGE_FRAGMENT_WRITE = 1 << 15,
|
|
|
- STORAGE_FRAGMENT_READ_WRITE = STORAGE_FRAGMENT_READ | STORAGE_FRAGMENT_WRITE,
|
|
|
- STORAGE_COMPUTE_READ = 1 << 16,
|
|
|
- STORAGE_COMPUTE_WRITE = 1 << 17,
|
|
|
- STORAGE_COMPUTE_READ_WRITE = STORAGE_COMPUTE_READ | STORAGE_COMPUTE_WRITE,
|
|
|
- STORAGE_ALL_GRAPHICS = STORAGE_VERTEX_READ_WRITE | STORAGE_TESSELLATION_EVALUATION_READ_WRITE
|
|
|
- | STORAGE_TESSELLATION_CONTROL_READ_WRITE | STORAGE_GEOMETRY_READ_WRITE
|
|
|
- | STORAGE_FRAGMENT_READ_WRITE,
|
|
|
- STORAGE_ALL = STORAGE_ALL_GRAPHICS | STORAGE_COMPUTE_READ_WRITE,
|
|
|
- STORAGE_ALL_READ = STORAGE_VERTEX_READ | STORAGE_TESSELLATION_EVALUATION_READ | STORAGE_TESSELLATION_CONTROL_READ
|
|
|
- | STORAGE_GEOMETRY_READ | STORAGE_FRAGMENT_READ | STORAGE_COMPUTE_READ,
|
|
|
- STORAGE_ALL_WRITE = STORAGE_VERTEX_WRITE | STORAGE_TESSELLATION_EVALUATION_WRITE
|
|
|
- | STORAGE_TESSELLATION_CONTROL_WRITE | STORAGE_GEOMETRY_WRITE | STORAGE_FRAGMENT_WRITE
|
|
|
- | STORAGE_COMPUTE_WRITE,
|
|
|
-
|
|
|
- TEXTURE_VERTEX = 1 << 18,
|
|
|
- TEXTURE_TESSELLATION_EVALUATION = 1 << 19,
|
|
|
- TEXTURE_TESSELLATION_CONTROL = 1 << 20,
|
|
|
- TEXTURE_GEOMETRY = 1 << 21,
|
|
|
- TEXTURE_FRAGMENT = 1 << 22,
|
|
|
- TEXTURE_COMPUTE = 1 << 23,
|
|
|
- TEXTURE_ALL_GRAPHICS = TEXTURE_VERTEX | TEXTURE_TESSELLATION_EVALUATION | TEXTURE_TESSELLATION_CONTROL
|
|
|
- | TEXTURE_GEOMETRY | TEXTURE_FRAGMENT,
|
|
|
- TEXTURE_ALL = TEXTURE_ALL_GRAPHICS | TEXTURE_COMPUTE,
|
|
|
-
|
|
|
- INDEX = 1 << 24,
|
|
|
- VERTEX = 1 << 25,
|
|
|
-
|
|
|
- INDIRECT_COMPUTE = 1 << 26,
|
|
|
- INDIRECT_GRAPHICS = 1 << 27,
|
|
|
- INDIRECT_ALL = INDIRECT_COMPUTE | INDIRECT_GRAPHICS,
|
|
|
-
|
|
|
- FILL = 1 << 28,
|
|
|
- BUFFER_UPLOAD_SOURCE = 1 << 29,
|
|
|
- BUFFER_UPLOAD_DESTINATION = 1 << 30, ///< Destination of buffer upload.
|
|
|
- TEXTURE_UPLOAD_SOURCE = 1ull << 31ull, ///< Source for texture upload.
|
|
|
- QUERY_RESULT = 1ull << 32ull, ///< Destination to store query results.
|
|
|
- TRANSFER_ALL_READ = BUFFER_UPLOAD_SOURCE | TEXTURE_UPLOAD_SOURCE,
|
|
|
- TRANSFER_ALL_WRITE = FILL | BUFFER_UPLOAD_DESTINATION | QUERY_RESULT,
|
|
|
- TRANSFER_ALL = TRANSFER_ALL_READ | TRANSFER_ALL_WRITE,
|
|
|
+ UNIFORM_GEOMETRY = 1ull << 0ull,
|
|
|
+ UNIFORM_FRAGMENT = 1ull << 1ull,
|
|
|
+ UNIFORM_COMPUTE = 1ull << 2ull,
|
|
|
+ UNIFORM_TRACE_RAYS = 1ull << 3ull,
|
|
|
+
|
|
|
+ STORAGE_GEOMETRY_READ = 1ull << 4ull,
|
|
|
+ STORAGE_GEOMETRY_WRITE = 1ull << 5ull,
|
|
|
+ STORAGE_FRAGMENT_READ = 1ull << 6ull,
|
|
|
+ STORAGE_FRAGMENT_WRITE = 1ull << 7ull,
|
|
|
+ STORAGE_COMPUTE_READ = 1ull << 8ull,
|
|
|
+ STORAGE_COMPUTE_WRITE = 1ull << 9ull,
|
|
|
+ STORAGE_TRACE_RAYS_READ = 1ull << 10ull,
|
|
|
+ STORAGE_TRACE_RAYS_WRITE = 1ull << 11ull,
|
|
|
+
|
|
|
+ TEXTURE_GEOMETRY_READ = 1ull << 12ull,
|
|
|
+ TEXTURE_GEOMETRY_WRITE = 1ull << 13ull,
|
|
|
+ TEXTURE_FRAGMENT_READ = 1ull << 14ull,
|
|
|
+ TEXTURE_FRAGMENT_WRITE = 1ull << 15ull,
|
|
|
+ TEXTURE_COMPUTE_READ = 1ull << 16ull,
|
|
|
+ TEXTURE_COMPUTE_WRITE = 1ull << 17ull,
|
|
|
+ TEXTURE_TRACE_RAYS_READ = 1ull << 18ull,
|
|
|
+ TEXTURE_TRACE_RAYS_WRITE = 1ull << 19ull,
|
|
|
+
|
|
|
+ INDEX = 1ull << 20ull,
|
|
|
+ VERTEX = 1ull << 21ull,
|
|
|
+
|
|
|
+ INDIRECT_COMPUTE = 1ull << 22ll,
|
|
|
+ INDIRECT_DRAW = 1ull << 23ull,
|
|
|
+ INDIRECT_TRACE_RAYS = 1ull << 24ull,
|
|
|
+
|
|
|
+ TRANSFER_SOURCE = 1ull << 25ull,
|
|
|
+ TRANSFER_DESTINATION = 1ull << 26ull,
|
|
|
+
|
|
|
+ ACCELERATION_STRUCTURE_BUILD = 1ull << 27ull,
|
|
|
|
|
|
// Derived
|
|
|
- ALL_GRAPHICS =
|
|
|
- UNIFORM_ALL_GRAPHICS | STORAGE_ALL_GRAPHICS | TEXTURE_ALL_GRAPHICS | INDEX | VERTEX | INDIRECT_GRAPHICS,
|
|
|
- ALL_COMPUTE = UNIFORM_COMPUTE | STORAGE_COMPUTE_READ_WRITE | TEXTURE_COMPUTE | INDIRECT_COMPUTE,
|
|
|
- ALL_READ = UNIFORM_ALL | STORAGE_ALL_READ | TEXTURE_ALL | INDEX | VERTEX | INDIRECT_ALL | TRANSFER_ALL_READ,
|
|
|
- ALL_WRITE = STORAGE_ALL_WRITE | TRANSFER_ALL_WRITE,
|
|
|
+ ALL_UNIFORM = UNIFORM_GEOMETRY | UNIFORM_FRAGMENT | UNIFORM_COMPUTE | UNIFORM_TRACE_RAYS,
|
|
|
+ ALL_STORAGE = STORAGE_GEOMETRY_READ | STORAGE_GEOMETRY_WRITE | STORAGE_FRAGMENT_READ | STORAGE_FRAGMENT_WRITE
|
|
|
+ | STORAGE_COMPUTE_READ | STORAGE_COMPUTE_WRITE | STORAGE_TRACE_RAYS_READ | STORAGE_TRACE_RAYS_WRITE,
|
|
|
+ ALL_TEXTURE = TEXTURE_GEOMETRY_READ | TEXTURE_GEOMETRY_WRITE | TEXTURE_FRAGMENT_READ | TEXTURE_FRAGMENT_WRITE
|
|
|
+ | TEXTURE_COMPUTE_READ | TEXTURE_COMPUTE_WRITE | TEXTURE_TRACE_RAYS_READ | TEXTURE_TRACE_RAYS_WRITE,
|
|
|
+ ALL_INDIRECT = INDIRECT_COMPUTE | INDIRECT_DRAW | INDIRECT_TRACE_RAYS,
|
|
|
+ ALL_TRANSFER = TRANSFER_SOURCE | TRANSFER_DESTINATION,
|
|
|
+
|
|
|
+ ALL_GEOMETRY = UNIFORM_GEOMETRY | STORAGE_GEOMETRY_READ | STORAGE_GEOMETRY_WRITE | TEXTURE_GEOMETRY_READ
|
|
|
+ | TEXTURE_GEOMETRY_WRITE | INDEX | VERTEX,
|
|
|
+ ALL_FRAGMENT = UNIFORM_FRAGMENT | STORAGE_FRAGMENT_READ | STORAGE_FRAGMENT_WRITE | TEXTURE_FRAGMENT_READ
|
|
|
+ | TEXTURE_FRAGMENT_WRITE,
|
|
|
+ ALL_GRAPHICS = ALL_GEOMETRY | ALL_FRAGMENT | INDIRECT_DRAW,
|
|
|
+ ALL_COMPUTE = UNIFORM_COMPUTE | STORAGE_COMPUTE_READ | STORAGE_COMPUTE_WRITE | TEXTURE_COMPUTE_READ
|
|
|
+ | TEXTURE_COMPUTE_WRITE | INDIRECT_COMPUTE,
|
|
|
+ ALL_TRACE_RAYS = UNIFORM_TRACE_RAYS | STORAGE_TRACE_RAYS_READ | STORAGE_TRACE_RAYS_WRITE | TEXTURE_TRACE_RAYS_READ
|
|
|
+ | TEXTURE_TRACE_RAYS_WRITE | INDIRECT_TRACE_RAYS,
|
|
|
+
|
|
|
+ ALL_RAY_TRACING = ALL_TRACE_RAYS | ACCELERATION_STRUCTURE_BUILD,
|
|
|
+ ALL_READ = ALL_UNIFORM | STORAGE_GEOMETRY_READ | STORAGE_FRAGMENT_READ | STORAGE_COMPUTE_READ
|
|
|
+ | STORAGE_TRACE_RAYS_READ | TEXTURE_GEOMETRY_READ | TEXTURE_FRAGMENT_READ | TEXTURE_COMPUTE_READ
|
|
|
+ | TEXTURE_TRACE_RAYS_READ | INDEX | VERTEX | INDIRECT_COMPUTE | INDIRECT_DRAW | INDIRECT_TRACE_RAYS
|
|
|
+ | TRANSFER_SOURCE | ACCELERATION_STRUCTURE_BUILD,
|
|
|
+ ALL_WRITE = STORAGE_GEOMETRY_WRITE | STORAGE_FRAGMENT_WRITE | STORAGE_COMPUTE_WRITE | STORAGE_TRACE_RAYS_WRITE
|
|
|
+ | TEXTURE_GEOMETRY_WRITE | TEXTURE_FRAGMENT_WRITE | TEXTURE_COMPUTE_WRITE | TEXTURE_TRACE_RAYS_WRITE
|
|
|
+ | TRANSFER_DESTINATION,
|
|
|
};
|
|
|
ANKI_ENUM_ALLOW_NUMERIC_OPERATIONS(BufferUsageBit, inline)
|
|
|
|