Commit 8f1b7a66 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Add DispatchUtilsVK

This class provides a set of compute-based internal utilities. Currently, buffer clear and copy are implemented. Other possibilities include more efficient mip map generation, or specialized texture operations. VertexArrayVk::updateIndexTranslation() is updated to convert the GL_UNSIGNED_BYTE index buffer to a GL_UNSIGNED_SHORT one using this class to avoid a CPU readback. The vk::Format class is augmented with a few flags (IsInt, IsUnsigned) to be able to select the appropriate shader based on the format (float, int or uint). Bug: angleproject:2958,angleproject:3003 Change-Id: Ie35519deb3c32a3da5ccf74080c70092c9287f0a Reviewed-on: https://chromium-review.googlesource.com/c/1336307 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent fdccaa3a
......@@ -43,6 +43,7 @@ Google Inc.
Corentin Wallez
Kai Ninomiya
Victor Costan
Shahbaz Youssefi
Adobe Systems Inc.
Alexandru Chiculita
......
......@@ -72,11 +72,13 @@
"Vulkan format:src/libANGLE/renderer/angle_format_map.json":
"be9f9bdbdf785dda05920146e8c55dbb",
"Vulkan format:src/libANGLE/renderer/vulkan/gen_vk_format_table.py":
"d97a76b5da4d964b8313d464f6dcbea2",
"c7a84b55fce18e37061397bd11e2c163",
"Vulkan format:src/libANGLE/renderer/vulkan/vk_format_map.json":
"0c14ee33bcec99ee02eb6b39da046bc0",
"84f988ff75f4d5b8f2a5d572ee8c51cc",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py":
"9a93f403b41bf6659f94e841d55b73b4",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp":
"0c8c050841543da0d7faca2559212aa8",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/FullScreenQuad.vert":
"1743adf55153edf91363fa7b4350d859",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/PushConstantColor.frag":
......
......@@ -51,8 +51,9 @@ angle::Result BufferVk::setData(const gl::Context *context,
// We could potentially use multiple backing buffers for different usages.
// For now keep a single buffer with all relevant usage flags.
const VkImageUsageFlags usageFlags =
(VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT);
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_SRC_BIT |
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT;
VkBufferCreateInfo createInfo = {};
createInfo.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
......@@ -63,7 +64,7 @@ angle::Result BufferVk::setData(const gl::Context *context,
createInfo.queueFamilyIndexCount = 0;
createInfo.pQueueFamilyIndices = nullptr;
// Assume host vislble/coherent memory available.
// Assume host visible/coherent memory available.
const VkMemoryPropertyFlags memoryPropertyFlags =
(VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT);
......
//
// Copyright 2018 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// DispatchUtilsVk.h:
// Defines the DispatchUtilsVk class, a helper for various internal dispatch utilities such as
// buffer clear and copy, texture mip map generation, etc.
//
// - Buffer clear: Implemented, but no current users
// - Buffer copy:
// * Used by VertexArrayVk::updateIndexTranslation() to convert a ubyte index array to ushort
// - Mipmap generation: Not yet implemented
//
#ifndef LIBANGLE_RENDERER_VULKAN_DISPATCHUTILSVK_H_
#define LIBANGLE_RENDERER_VULKAN_DISPATCHUTILSVK_H_
#include "libANGLE/renderer/vulkan/vk_cache_utils.h"
#include "libANGLE/renderer/vulkan/vk_helpers.h"
#include "libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h"
namespace rx
{
class BufferVk;
class RendererVk;
class DispatchUtilsVk : angle::NonCopyable
{
public:
DispatchUtilsVk();
~DispatchUtilsVk();
void destroy(VkDevice device);
struct ClearParameters
{
VkClearColorValue clearValue;
size_t offset;
size_t size;
};
struct CopyParameters
{
size_t destOffset;
size_t srcOffset;
size_t size;
};
angle::Result clearBuffer(vk::Context *context,
vk::BufferHelper *dest,
const ClearParameters &params);
angle::Result copyBuffer(vk::Context *context,
vk::BufferHelper *dest,
vk::BufferHelper *src,
const CopyParameters &params);
private:
struct ShaderParams
{
// Structure matching PushConstants in BufferUtils.comp
uint32_t destOffset = 0;
uint32_t size = 0;
uint32_t srcOffset = 0;
uint32_t padding = 0;
VkClearColorValue clearValue = {};
};
// Common function that creates the pipeline for the specified function, binds it and prepares
// the dispatch call. The possible values of `function` comes from
// vk::InternalShader::BufferUtils_comp defined in vk_internal_shaders_autogen.h
angle::Result setupProgram(vk::Context *context,
uint32_t function,
const VkDescriptorSet &descriptorSet,
const ShaderParams &params,
vk::CommandBuffer *commandBuffer);
// Functions implemented by the class:
enum class Function
{
BufferClear = 0,
BufferCopy = 1,
InvalidEnum = 2,
EnumCount = 2,
};
// Initializes descriptor set layout, pipeline layout and descriptor pool corresponding to given
// function, if not already initialized. Uses setSizes to create the layout. For example, if
// this array has two entries {STORAGE_TEXEL_BUFFER, 1} and {UNIFORM_TEXEL_BUFFER, 3}, then the
// created set layout would be binding 0 for storage texel buffer and bindings 1 through 3 for
// uniform texel buffer. All resources are put in set 0.
angle::Result ensureResourcesInitialized(vk::Context *context,
Function function,
VkDescriptorPoolSize *setSizes,
size_t setSizesCount);
// Initializers corresponding to functions, calling into ensureResourcesInitialized with the
// appropriate parameters.
angle::Result ensureBufferClearInitialized(vk::Context *context);
angle::Result ensureBufferCopyInitialized(vk::Context *context);
angle::PackedEnumMap<Function, vk::DescriptorSetLayoutPointerArray> mDescriptorSetLayouts;
angle::PackedEnumMap<Function, vk::BindingPointer<vk::PipelineLayout>> mPipelineLayouts;
angle::PackedEnumMap<Function, vk::DynamicDescriptorPool> mDescriptorPools;
vk::ShaderProgramHelper mPrograms[vk::InternalShader::BufferUtils_comp::kFlagsMask |
vk::InternalShader::BufferUtils_comp::kFunctionMask |
vk::InternalShader::BufferUtils_comp::kFormatMask];
};
} // namespace rx
#endif // LIBANGLE_RENDERER_VULKAN_DISPATCHUTILSVK_H_
......@@ -330,6 +330,8 @@ void RendererVk::onDestroy(vk::Context *context)
(void)finish(context);
}
mDispatchUtils.destroy(mDevice);
mPipelineLayoutCache.destroy(mDevice);
mDescriptorSetLayoutCache.destroy(mDevice);
......
......@@ -17,6 +17,7 @@
#include "libANGLE/BlobCache.h"
#include "libANGLE/Caps.h"
#include "libANGLE/renderer/vulkan/CommandGraph.h"
#include "libANGLE/renderer/vulkan/DispatchUtilsVk.h"
#include "libANGLE/renderer/vulkan/QueryVk.h"
#include "libANGLE/renderer/vulkan/vk_format_utils.h"
#include "libANGLE/renderer/vulkan/vk_helpers.h"
......@@ -160,8 +161,10 @@ class RendererVk : angle::NonCopyable
// Issues a new serial for linked shader modules. Used in the pipeline cache.
Serial issueShaderSerial();
vk::ShaderLibrary &getShaderLibrary() { return mShaderLibrary; }
angle::Result getFullScreenClearShaderProgram(vk::Context *context,
vk::ShaderProgramHelper **programOut);
DispatchUtilsVk *getDispatchUtils() { return &mDispatchUtils; }
const angle::FeaturesVk &getFeatures() const { return mFeatures; }
angle::Result getTimestamp(vk::Context *context, uint64_t *timestampOut);
......@@ -313,6 +316,7 @@ class RendererVk : angle::NonCopyable
// Internal shader library.
vk::ShaderLibrary mShaderLibrary;
vk::ShaderProgramHelper mFullScreenClearShaderProgram;
DispatchUtilsVk mDispatchUtils;
// The GpuEventQuery struct holds together a timestamp query and enough data to create a
// trace event based on that. Use traceGpuEvent to insert such queries. They will be readback
......
......@@ -23,13 +23,15 @@ namespace rx
{
namespace
{
constexpr size_t kDynamicVertexDataSize = 1024 * 1024;
constexpr size_t kDynamicIndexDataSize = 1024 * 8;
constexpr size_t kMaxVertexFormatAlignment = 4;
constexpr VkBufferUsageFlags kVertexBufferUsageFlags =
VK_BUFFER_USAGE_VERTEX_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
constexpr VkBufferUsageFlags kIndexBufferUsageFlags =
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
constexpr size_t kDynamicVertexDataSize = 1024 * 1024;
constexpr size_t kDynamicIndexDataSize = 1024 * 8;
constexpr size_t kMaxVertexFormatAlignment = 4;
constexpr VkBufferUsageFlags kVertexBufferUsageFlags = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT |
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
constexpr VkBufferUsageFlags kIndexBufferUsageFlags = VK_BUFFER_USAGE_INDEX_BUFFER_BIT |
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT |
VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
bool BindingIsAligned(const gl::VertexBinding &binding, unsigned componentSize)
{
......@@ -176,7 +178,6 @@ angle::Result VertexArrayVk::convertVertexBuffer(ContextVk *contextVk,
const gl::VertexBinding &binding,
size_t attribIndex)
{
// Needed before reading buffer or we could get stale data.
ANGLE_TRY(contextVk->getRenderer()->finish(contextVk));
......@@ -557,16 +558,60 @@ angle::Result VertexArrayVk::updateIndexTranslation(ContextVk *contextVk,
{
ASSERT(type != gl::DrawElementsType::InvalidEnum);
RendererVk *renderer = contextVk->getRenderer();
gl::Buffer *glBuffer = mState.getElementArrayBuffer();
if (!glBuffer)
{
ANGLE_TRY(streamIndexData(contextVk, type, indexCount, indices, &mDynamicIndexData));
}
else if (renderer->getFormat(angle::FormatID::R16_UINT).vkSupportsStorageBuffer)
{
BufferVk *bufferVk = vk::GetImpl(glBuffer);
ASSERT(type == gl::DrawElementsType::UnsignedByte);
intptr_t offsetIntoSrcData = reinterpret_cast<intptr_t>(indices);
size_t srcDataSize = static_cast<size_t>(bufferVk->getSize()) - offsetIntoSrcData;
mTranslatedByteIndexData.releaseRetainedBuffers(renderer);
ANGLE_TRY(mTranslatedByteIndexData.allocate(contextVk, sizeof(GLushort) * srcDataSize,
nullptr, nullptr,
&mCurrentElementArrayBufferOffset, nullptr));
mCurrentElementArrayBuffer = mTranslatedByteIndexData.getCurrentBuffer();
vk::BufferHelper *dest = mTranslatedByteIndexData.getCurrentBuffer();
vk::BufferHelper *src = &bufferVk->getBuffer();
ANGLE_TRY(src->initBufferView(contextVk, renderer->getFormat(angle::FormatID::R8_UINT)));
ANGLE_TRY(dest->initBufferView(contextVk, renderer->getFormat(angle::FormatID::R16_UINT)));
// Copy relevant section of the source into destination at allocated offset. Note that the
// offset returned by allocate() above is in bytes, while our allocated array is of
// GLushorts.
DispatchUtilsVk::CopyParameters params = {};
params.destOffset =
static_cast<size_t>(mCurrentElementArrayBufferOffset) / sizeof(GLushort);
params.srcOffset = offsetIntoSrcData;
params.size = srcDataSize;
// Note: this is a copy, which implicitly converts between formats. Once support for
// primitive restart is added, a specialized shader is likely needed to special case 0xFF ->
// 0xFFFF.
ANGLE_TRY(renderer->getDispatchUtils()->copyBuffer(contextVk, dest, src, params));
}
else
{
// If it's not possible to convert the buffer with compute, opt for a CPU read back for now.
// TODO(syoussefi): R8G8B8A8_UINT is required to have storage texel buffer support, so a
// specialized shader code can be made to read two ubyte indices and output them in R and B
// (or A and G based on endianness?) with 0 on the other channels. If specialized, we might
// as well support the ubyte to ushort case with correct handling of primitive restart.
// http://anglebug.com/3003
// Needed before reading buffer or we could get stale data.
ANGLE_TRY(contextVk->getRenderer()->finish(contextVk));
ANGLE_TRY(renderer->finish(contextVk));
ASSERT(type == gl::DrawElementsType::UnsignedByte);
// Unsigned bytes don't have direct support in Vulkan so we have to expand the
......
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000000[] = {
0x07230203,0x00010000,0x00080007,0x0000003d,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,
0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000009,
0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,
0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00080005,0x00000009,0x475f6c67,
0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00060005,0x00000010,0x68737550,
0x736e6f43,0x746e6174,0x00000073,0x00060006,0x00000010,0x00000000,0x74736564,0x7366664f,
0x00007465,0x00050006,0x00000010,0x00000001,0x657a6973,0x00000000,0x00060006,0x00000010,
0x00000002,0x4f637273,0x65736666,0x00000074,0x00050006,0x00000010,0x00000003,0x64646170,
0x00676e69,0x00060006,0x00000010,0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,
0x00000012,0x61726170,0x0000736d,0x00050005,0x0000001e,0x74736564,0x65646e49,0x00000078,
0x00050005,0x00000026,0x49637273,0x7865646e,0x00000000,0x00050005,0x0000002f,0x56637273,
0x65756c61,0x00000000,0x00040005,0x00000036,0x74736564,0x00000000,0x00040047,0x00000009,
0x0000000b,0x0000001c,0x00050048,0x00000010,0x00000000,0x00000023,0x00000000,0x00050048,
0x00000010,0x00000001,0x00000023,0x00000004,0x00050048,0x00000010,0x00000002,0x00000023,
0x00000008,0x00050048,0x00000010,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000010,
0x00000004,0x00000023,0x00000010,0x00030047,0x00000010,0x00000002,0x00040047,0x00000036,
0x00000022,0x00000000,0x00040047,0x00000036,0x00000021,0x00000000,0x00030047,0x00000036,
0x00000019,0x00040047,0x0000003c,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,0x00040017,0x00000007,
0x00000006,0x00000003,0x00040020,0x00000008,0x00000001,0x00000007,0x0004003b,0x00000008,
0x00000009,0x00000001,0x0004002b,0x00000006,0x0000000a,0x00000000,0x00040020,0x0000000b,
0x00000001,0x00000006,0x00030016,0x0000000e,0x00000020,0x00040017,0x0000000f,0x0000000e,
0x00000004,0x0007001e,0x00000010,0x00000006,0x00000006,0x00000006,0x00000006,0x0000000f,
0x00040020,0x00000011,0x00000009,0x00000010,0x0004003b,0x00000011,0x00000012,0x00000009,
0x00040015,0x00000013,0x00000020,0x00000001,0x0004002b,0x00000013,0x00000014,0x00000001,
0x00040020,0x00000015,0x00000009,0x00000006,0x00020014,0x00000018,0x00040020,0x0000001d,
0x00000007,0x00000013,0x0004002b,0x00000013,0x0000001f,0x00000000,0x0004002b,0x00000013,
0x00000027,0x00000002,0x00040020,0x0000002e,0x00000007,0x0000000f,0x0004002b,0x00000013,
0x00000030,0x00000004,0x00040020,0x00000031,0x00000009,0x0000000f,0x00090019,0x00000034,
0x0000000e,0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,0x00000001,0x00040020,
0x00000035,0x00000000,0x00000034,0x0004003b,0x00000035,0x00000036,0x00000000,0x0004002b,
0x00000006,0x0000003a,0x00000040,0x0004002b,0x00000006,0x0000003b,0x00000001,0x0006002c,
0x00000007,0x0000003c,0x0000003a,0x0000003b,0x0000003b,0x00050036,0x00000002,0x00000004,
0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000001d,0x0000001e,0x00000007,
0x0004003b,0x0000001d,0x00000026,0x00000007,0x0004003b,0x0000002e,0x0000002f,0x00000007,
0x00050041,0x0000000b,0x0000000c,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000000d,
0x0000000c,0x00050041,0x00000015,0x00000016,0x00000012,0x00000014,0x0004003d,0x00000006,
0x00000017,0x00000016,0x000500ae,0x00000018,0x00000019,0x0000000d,0x00000017,0x000300f7,
0x0000001b,0x00000000,0x000400fa,0x00000019,0x0000001a,0x0000001b,0x000200f8,0x0000001a,
0x000100fd,0x000200f8,0x0000001b,0x00050041,0x00000015,0x00000020,0x00000012,0x0000001f,
0x0004003d,0x00000006,0x00000021,0x00000020,0x00050041,0x0000000b,0x00000022,0x00000009,
0x0000000a,0x0004003d,0x00000006,0x00000023,0x00000022,0x00050080,0x00000006,0x00000024,
0x00000021,0x00000023,0x0004007c,0x00000013,0x00000025,0x00000024,0x0003003e,0x0000001e,
0x00000025,0x00050041,0x00000015,0x00000028,0x00000012,0x00000027,0x0004003d,0x00000006,
0x00000029,0x00000028,0x00050041,0x0000000b,0x0000002a,0x00000009,0x0000000a,0x0004003d,
0x00000006,0x0000002b,0x0000002a,0x00050080,0x00000006,0x0000002c,0x00000029,0x0000002b,
0x0004007c,0x00000013,0x0000002d,0x0000002c,0x0003003e,0x00000026,0x0000002d,0x00050041,
0x00000031,0x00000032,0x00000012,0x00000030,0x0004003d,0x0000000f,0x00000033,0x00000032,
0x0003003e,0x0000002f,0x00000033,0x0004003d,0x00000034,0x00000037,0x00000036,0x0004003d,
0x00000013,0x00000038,0x0000001e,0x0004003d,0x0000000f,0x00000039,0x0000002f,0x00040063,
0x00000037,0x00000038,0x00000039,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32f)uniform writeonly imageBuffer dest;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
vec4 clearValue;
} params;
void main()
{
if(gl_GlobalInvocationID . x >= params . size)
return;
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
vec4 srcValue = params . clearValue;
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000001[] = {
0x07230203,0x00010000,0x00080007,0x00000033,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,
0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000015,
0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,
0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x74736564,
0x65646e49,0x00000078,0x00060005,0x0000000c,0x68737550,0x736e6f43,0x746e6174,0x00000073,
0x00060006,0x0000000c,0x00000000,0x74736564,0x7366664f,0x00007465,0x00050006,0x0000000c,
0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000c,0x00000002,0x4f637273,0x65736666,
0x00000074,0x00050006,0x0000000c,0x00000003,0x64646170,0x00676e69,0x00060006,0x0000000c,
0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,0x0000000e,0x61726170,0x0000736d,
0x00080005,0x00000015,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,
0x00050005,0x0000001c,0x49637273,0x7865646e,0x00000000,0x00050005,0x00000025,0x56637273,
0x65756c61,0x00000000,0x00040005,0x0000002c,0x74736564,0x00000000,0x00050048,0x0000000c,
0x00000000,0x00000023,0x00000000,0x00050048,0x0000000c,0x00000001,0x00000023,0x00000004,
0x00050048,0x0000000c,0x00000002,0x00000023,0x00000008,0x00050048,0x0000000c,0x00000003,
0x00000023,0x0000000c,0x00050048,0x0000000c,0x00000004,0x00000023,0x00000010,0x00030047,
0x0000000c,0x00000002,0x00040047,0x00000015,0x0000000b,0x0000001c,0x00040047,0x0000002c,
0x00000022,0x00000000,0x00040047,0x0000002c,0x00000021,0x00000000,0x00030047,0x0000002c,
0x00000019,0x00040047,0x00000032,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,
0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x00030016,0x0000000a,
0x00000020,0x00040017,0x0000000b,0x0000000a,0x00000004,0x0007001e,0x0000000c,0x00000009,
0x00000009,0x00000009,0x00000009,0x0000000b,0x00040020,0x0000000d,0x00000009,0x0000000c,
0x0004003b,0x0000000d,0x0000000e,0x00000009,0x0004002b,0x00000006,0x0000000f,0x00000000,
0x00040020,0x00000010,0x00000009,0x00000009,0x00040017,0x00000013,0x00000009,0x00000003,
0x00040020,0x00000014,0x00000001,0x00000013,0x0004003b,0x00000014,0x00000015,0x00000001,
0x0004002b,0x00000009,0x00000016,0x00000000,0x00040020,0x00000017,0x00000001,0x00000009,
0x0004002b,0x00000006,0x0000001d,0x00000002,0x00040020,0x00000024,0x00000007,0x0000000b,
0x0004002b,0x00000006,0x00000026,0x00000004,0x00040020,0x00000027,0x00000009,0x0000000b,
0x00090019,0x0000002a,0x0000000a,0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,
0x00000001,0x00040020,0x0000002b,0x00000000,0x0000002a,0x0004003b,0x0000002b,0x0000002c,
0x00000000,0x0004002b,0x00000009,0x00000030,0x00000040,0x0004002b,0x00000009,0x00000031,
0x00000001,0x0006002c,0x00000013,0x00000032,0x00000030,0x00000031,0x00000031,0x00050036,
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,
0x00000008,0x00000007,0x0004003b,0x00000007,0x0000001c,0x00000007,0x0004003b,0x00000024,
0x00000025,0x00000007,0x00050041,0x00000010,0x00000011,0x0000000e,0x0000000f,0x0004003d,
0x00000009,0x00000012,0x00000011,0x00050041,0x00000017,0x00000018,0x00000015,0x00000016,
0x0004003d,0x00000009,0x00000019,0x00000018,0x00050080,0x00000009,0x0000001a,0x00000012,
0x00000019,0x0004007c,0x00000006,0x0000001b,0x0000001a,0x0003003e,0x00000008,0x0000001b,
0x00050041,0x00000010,0x0000001e,0x0000000e,0x0000001d,0x0004003d,0x00000009,0x0000001f,
0x0000001e,0x00050041,0x00000017,0x00000020,0x00000015,0x00000016,0x0004003d,0x00000009,
0x00000021,0x00000020,0x00050080,0x00000009,0x00000022,0x0000001f,0x00000021,0x0004007c,
0x00000006,0x00000023,0x00000022,0x0003003e,0x0000001c,0x00000023,0x00050041,0x00000027,
0x00000028,0x0000000e,0x00000026,0x0004003d,0x0000000b,0x00000029,0x00000028,0x0003003e,
0x00000025,0x00000029,0x0004003d,0x0000002a,0x0000002d,0x0000002c,0x0004003d,0x00000006,
0x0000002e,0x00000008,0x0004003d,0x0000000b,0x0000002f,0x00000025,0x00040063,0x0000002d,
0x0000002e,0x0000002f,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32f)uniform writeonly imageBuffer dest;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
vec4 clearValue;
} params;
void main()
{
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
vec4 srcValue = params . clearValue;
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000002[] = {
0x07230203,0x00010000,0x00080007,0x00000041,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002e,0x00020011,0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,
0x00000000,0x00000009,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,
0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00080005,
0x00000009,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00060005,
0x00000010,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,0x00000010,0x00000000,
0x74736564,0x7366664f,0x00007465,0x00050006,0x00000010,0x00000001,0x657a6973,0x00000000,
0x00060006,0x00000010,0x00000002,0x4f637273,0x65736666,0x00000074,0x00050006,0x00000010,
0x00000003,0x64646170,0x00676e69,0x00060006,0x00000010,0x00000004,0x61656c63,0x6c615672,
0x00006575,0x00040005,0x00000012,0x61726170,0x0000736d,0x00050005,0x0000001e,0x74736564,
0x65646e49,0x00000078,0x00050005,0x00000026,0x49637273,0x7865646e,0x00000000,0x00050005,
0x0000002f,0x56637273,0x65756c61,0x00000000,0x00030005,0x00000033,0x00637273,0x00040005,
0x0000003a,0x74736564,0x00000000,0x00040047,0x00000009,0x0000000b,0x0000001c,0x00050048,
0x00000010,0x00000000,0x00000023,0x00000000,0x00050048,0x00000010,0x00000001,0x00000023,
0x00000004,0x00050048,0x00000010,0x00000002,0x00000023,0x00000008,0x00050048,0x00000010,
0x00000003,0x00000023,0x0000000c,0x00050048,0x00000010,0x00000004,0x00000023,0x00000010,
0x00030047,0x00000010,0x00000002,0x00040047,0x00000033,0x00000022,0x00000000,0x00040047,
0x00000033,0x00000021,0x00000001,0x00040047,0x0000003a,0x00000022,0x00000000,0x00040047,
0x0000003a,0x00000021,0x00000000,0x00030047,0x0000003a,0x00000019,0x00040047,0x00000040,
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
0x00000006,0x00000020,0x00000000,0x00040017,0x00000007,0x00000006,0x00000003,0x00040020,
0x00000008,0x00000001,0x00000007,0x0004003b,0x00000008,0x00000009,0x00000001,0x0004002b,
0x00000006,0x0000000a,0x00000000,0x00040020,0x0000000b,0x00000001,0x00000006,0x00030016,
0x0000000e,0x00000020,0x00040017,0x0000000f,0x0000000e,0x00000004,0x0007001e,0x00000010,
0x00000006,0x00000006,0x00000006,0x00000006,0x0000000f,0x00040020,0x00000011,0x00000009,
0x00000010,0x0004003b,0x00000011,0x00000012,0x00000009,0x00040015,0x00000013,0x00000020,
0x00000001,0x0004002b,0x00000013,0x00000014,0x00000001,0x00040020,0x00000015,0x00000009,
0x00000006,0x00020014,0x00000018,0x00040020,0x0000001d,0x00000007,0x00000013,0x0004002b,
0x00000013,0x0000001f,0x00000000,0x0004002b,0x00000013,0x00000027,0x00000002,0x00040020,
0x0000002e,0x00000007,0x0000000f,0x00090019,0x00000030,0x0000000e,0x00000005,0x00000000,
0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x00000031,0x00000030,0x00040020,
0x00000032,0x00000000,0x00000031,0x0004003b,0x00000032,0x00000033,0x00000000,0x00090019,
0x00000038,0x0000000e,0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,0x00000001,
0x00040020,0x00000039,0x00000000,0x00000038,0x0004003b,0x00000039,0x0000003a,0x00000000,
0x0004002b,0x00000006,0x0000003e,0x00000040,0x0004002b,0x00000006,0x0000003f,0x00000001,
0x0006002c,0x00000007,0x00000040,0x0000003e,0x0000003f,0x0000003f,0x00050036,0x00000002,
0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000001d,0x0000001e,
0x00000007,0x0004003b,0x0000001d,0x00000026,0x00000007,0x0004003b,0x0000002e,0x0000002f,
0x00000007,0x00050041,0x0000000b,0x0000000c,0x00000009,0x0000000a,0x0004003d,0x00000006,
0x0000000d,0x0000000c,0x00050041,0x00000015,0x00000016,0x00000012,0x00000014,0x0004003d,
0x00000006,0x00000017,0x00000016,0x000500ae,0x00000018,0x00000019,0x0000000d,0x00000017,
0x000300f7,0x0000001b,0x00000000,0x000400fa,0x00000019,0x0000001a,0x0000001b,0x000200f8,
0x0000001a,0x000100fd,0x000200f8,0x0000001b,0x00050041,0x00000015,0x00000020,0x00000012,
0x0000001f,0x0004003d,0x00000006,0x00000021,0x00000020,0x00050041,0x0000000b,0x00000022,
0x00000009,0x0000000a,0x0004003d,0x00000006,0x00000023,0x00000022,0x00050080,0x00000006,
0x00000024,0x00000021,0x00000023,0x0004007c,0x00000013,0x00000025,0x00000024,0x0003003e,
0x0000001e,0x00000025,0x00050041,0x00000015,0x00000028,0x00000012,0x00000027,0x0004003d,
0x00000006,0x00000029,0x00000028,0x00050041,0x0000000b,0x0000002a,0x00000009,0x0000000a,
0x0004003d,0x00000006,0x0000002b,0x0000002a,0x00050080,0x00000006,0x0000002c,0x00000029,
0x0000002b,0x0004007c,0x00000013,0x0000002d,0x0000002c,0x0003003e,0x00000026,0x0000002d,
0x0004003d,0x00000031,0x00000034,0x00000033,0x0004003d,0x00000013,0x00000035,0x00000026,
0x00040064,0x00000030,0x00000036,0x00000034,0x0005005f,0x0000000f,0x00000037,0x00000036,
0x00000035,0x0003003e,0x0000002f,0x00000037,0x0004003d,0x00000038,0x0000003b,0x0000003a,
0x0004003d,0x00000013,0x0000003c,0x0000001e,0x0004003d,0x0000000f,0x0000003d,0x0000002f,
0x00040063,0x0000003b,0x0000003c,0x0000003d,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32f)uniform writeonly imageBuffer dest;
layout(set = 0, binding = 1)uniform samplerBuffer src;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
vec4 clearValue;
} params;
void main()
{
if(gl_GlobalInvocationID . x >= params . size)
return;
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
vec4 srcValue = texelFetch(src, srcIndex);
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000003[] = {
0x07230203,0x00010000,0x00080007,0x00000037,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002e,0x00020011,0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,
0x00000000,0x00000015,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,
0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,
0x00000008,0x74736564,0x65646e49,0x00000078,0x00060005,0x0000000c,0x68737550,0x736e6f43,
0x746e6174,0x00000073,0x00060006,0x0000000c,0x00000000,0x74736564,0x7366664f,0x00007465,
0x00050006,0x0000000c,0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000c,0x00000002,
0x4f637273,0x65736666,0x00000074,0x00050006,0x0000000c,0x00000003,0x64646170,0x00676e69,
0x00060006,0x0000000c,0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,0x0000000e,
0x61726170,0x0000736d,0x00080005,0x00000015,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
0x496e6f69,0x00000044,0x00050005,0x0000001c,0x49637273,0x7865646e,0x00000000,0x00050005,
0x00000025,0x56637273,0x65756c61,0x00000000,0x00030005,0x00000029,0x00637273,0x00040005,
0x00000030,0x74736564,0x00000000,0x00050048,0x0000000c,0x00000000,0x00000023,0x00000000,
0x00050048,0x0000000c,0x00000001,0x00000023,0x00000004,0x00050048,0x0000000c,0x00000002,
0x00000023,0x00000008,0x00050048,0x0000000c,0x00000003,0x00000023,0x0000000c,0x00050048,
0x0000000c,0x00000004,0x00000023,0x00000010,0x00030047,0x0000000c,0x00000002,0x00040047,
0x00000015,0x0000000b,0x0000001c,0x00040047,0x00000029,0x00000022,0x00000000,0x00040047,
0x00000029,0x00000021,0x00000001,0x00040047,0x00000030,0x00000022,0x00000000,0x00040047,
0x00000030,0x00000021,0x00000000,0x00030047,0x00000030,0x00000019,0x00040047,0x00000036,
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,
0x00000009,0x00000020,0x00000000,0x00030016,0x0000000a,0x00000020,0x00040017,0x0000000b,
0x0000000a,0x00000004,0x0007001e,0x0000000c,0x00000009,0x00000009,0x00000009,0x00000009,
0x0000000b,0x00040020,0x0000000d,0x00000009,0x0000000c,0x0004003b,0x0000000d,0x0000000e,
0x00000009,0x0004002b,0x00000006,0x0000000f,0x00000000,0x00040020,0x00000010,0x00000009,
0x00000009,0x00040017,0x00000013,0x00000009,0x00000003,0x00040020,0x00000014,0x00000001,
0x00000013,0x0004003b,0x00000014,0x00000015,0x00000001,0x0004002b,0x00000009,0x00000016,
0x00000000,0x00040020,0x00000017,0x00000001,0x00000009,0x0004002b,0x00000006,0x0000001d,
0x00000002,0x00040020,0x00000024,0x00000007,0x0000000b,0x00090019,0x00000026,0x0000000a,
0x00000005,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000,0x0003001b,0x00000027,
0x00000026,0x00040020,0x00000028,0x00000000,0x00000027,0x0004003b,0x00000028,0x00000029,
0x00000000,0x00090019,0x0000002e,0x0000000a,0x00000005,0x00000000,0x00000000,0x00000000,
0x00000002,0x00000001,0x00040020,0x0000002f,0x00000000,0x0000002e,0x0004003b,0x0000002f,
0x00000030,0x00000000,0x0004002b,0x00000009,0x00000034,0x00000040,0x0004002b,0x00000009,
0x00000035,0x00000001,0x0006002c,0x00000013,0x00000036,0x00000034,0x00000035,0x00000035,
0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,
0x00000007,0x00000008,0x00000007,0x0004003b,0x00000007,0x0000001c,0x00000007,0x0004003b,
0x00000024,0x00000025,0x00000007,0x00050041,0x00000010,0x00000011,0x0000000e,0x0000000f,
0x0004003d,0x00000009,0x00000012,0x00000011,0x00050041,0x00000017,0x00000018,0x00000015,
0x00000016,0x0004003d,0x00000009,0x00000019,0x00000018,0x00050080,0x00000009,0x0000001a,
0x00000012,0x00000019,0x0004007c,0x00000006,0x0000001b,0x0000001a,0x0003003e,0x00000008,
0x0000001b,0x00050041,0x00000010,0x0000001e,0x0000000e,0x0000001d,0x0004003d,0x00000009,
0x0000001f,0x0000001e,0x00050041,0x00000017,0x00000020,0x00000015,0x00000016,0x0004003d,
0x00000009,0x00000021,0x00000020,0x00050080,0x00000009,0x00000022,0x0000001f,0x00000021,
0x0004007c,0x00000006,0x00000023,0x00000022,0x0003003e,0x0000001c,0x00000023,0x0004003d,
0x00000027,0x0000002a,0x00000029,0x0004003d,0x00000006,0x0000002b,0x0000001c,0x00040064,
0x00000026,0x0000002c,0x0000002a,0x0005005f,0x0000000b,0x0000002d,0x0000002c,0x0000002b,
0x0003003e,0x00000025,0x0000002d,0x0004003d,0x0000002e,0x00000031,0x00000030,0x0004003d,
0x00000006,0x00000032,0x00000008,0x0004003d,0x0000000b,0x00000033,0x00000025,0x00040063,
0x00000031,0x00000032,0x00000033,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32f)uniform writeonly imageBuffer dest;
layout(set = 0, binding = 1)uniform samplerBuffer src;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
vec4 clearValue;
} params;
void main()
{
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
vec4 srcValue = texelFetch(src, srcIndex);
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000004[] = {
0x07230203,0x00010000,0x00080007,0x0000003c,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,
0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000009,
0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,
0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00080005,0x00000009,0x475f6c67,
0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00060005,0x00000010,0x68737550,
0x736e6f43,0x746e6174,0x00000073,0x00060006,0x00000010,0x00000000,0x74736564,0x7366664f,
0x00007465,0x00050006,0x00000010,0x00000001,0x657a6973,0x00000000,0x00060006,0x00000010,
0x00000002,0x4f637273,0x65736666,0x00000074,0x00050006,0x00000010,0x00000003,0x64646170,
0x00676e69,0x00060006,0x00000010,0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,
0x00000012,0x61726170,0x0000736d,0x00050005,0x0000001d,0x74736564,0x65646e49,0x00000078,
0x00050005,0x00000025,0x49637273,0x7865646e,0x00000000,0x00050005,0x0000002e,0x56637273,
0x65756c61,0x00000000,0x00040005,0x00000035,0x74736564,0x00000000,0x00040047,0x00000009,
0x0000000b,0x0000001c,0x00050048,0x00000010,0x00000000,0x00000023,0x00000000,0x00050048,
0x00000010,0x00000001,0x00000023,0x00000004,0x00050048,0x00000010,0x00000002,0x00000023,
0x00000008,0x00050048,0x00000010,0x00000003,0x00000023,0x0000000c,0x00050048,0x00000010,
0x00000004,0x00000023,0x00000010,0x00030047,0x00000010,0x00000002,0x00040047,0x00000035,
0x00000022,0x00000000,0x00040047,0x00000035,0x00000021,0x00000000,0x00030047,0x00000035,
0x00000019,0x00040047,0x0000003b,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,0x00040017,0x00000007,
0x00000006,0x00000003,0x00040020,0x00000008,0x00000001,0x00000007,0x0004003b,0x00000008,
0x00000009,0x00000001,0x0004002b,0x00000006,0x0000000a,0x00000000,0x00040020,0x0000000b,
0x00000001,0x00000006,0x00040015,0x0000000e,0x00000020,0x00000001,0x00040017,0x0000000f,
0x0000000e,0x00000004,0x0007001e,0x00000010,0x00000006,0x00000006,0x00000006,0x00000006,
0x0000000f,0x00040020,0x00000011,0x00000009,0x00000010,0x0004003b,0x00000011,0x00000012,
0x00000009,0x0004002b,0x0000000e,0x00000013,0x00000001,0x00040020,0x00000014,0x00000009,
0x00000006,0x00020014,0x00000017,0x00040020,0x0000001c,0x00000007,0x0000000e,0x0004002b,
0x0000000e,0x0000001e,0x00000000,0x0004002b,0x0000000e,0x00000026,0x00000002,0x00040020,
0x0000002d,0x00000007,0x0000000f,0x0004002b,0x0000000e,0x0000002f,0x00000004,0x00040020,
0x00000030,0x00000009,0x0000000f,0x00090019,0x00000033,0x0000000e,0x00000005,0x00000000,
0x00000000,0x00000000,0x00000002,0x00000015,0x00040020,0x00000034,0x00000000,0x00000033,
0x0004003b,0x00000034,0x00000035,0x00000000,0x0004002b,0x00000006,0x00000039,0x00000040,
0x0004002b,0x00000006,0x0000003a,0x00000001,0x0006002c,0x00000007,0x0000003b,0x00000039,
0x0000003a,0x0000003a,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
0x00000005,0x0004003b,0x0000001c,0x0000001d,0x00000007,0x0004003b,0x0000001c,0x00000025,
0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x00050041,0x0000000b,0x0000000c,
0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000000d,0x0000000c,0x00050041,0x00000014,
0x00000015,0x00000012,0x00000013,0x0004003d,0x00000006,0x00000016,0x00000015,0x000500ae,
0x00000017,0x00000018,0x0000000d,0x00000016,0x000300f7,0x0000001a,0x00000000,0x000400fa,
0x00000018,0x00000019,0x0000001a,0x000200f8,0x00000019,0x000100fd,0x000200f8,0x0000001a,
0x00050041,0x00000014,0x0000001f,0x00000012,0x0000001e,0x0004003d,0x00000006,0x00000020,
0x0000001f,0x00050041,0x0000000b,0x00000021,0x00000009,0x0000000a,0x0004003d,0x00000006,
0x00000022,0x00000021,0x00050080,0x00000006,0x00000023,0x00000020,0x00000022,0x0004007c,
0x0000000e,0x00000024,0x00000023,0x0003003e,0x0000001d,0x00000024,0x00050041,0x00000014,
0x00000027,0x00000012,0x00000026,0x0004003d,0x00000006,0x00000028,0x00000027,0x00050041,
0x0000000b,0x00000029,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000002a,0x00000029,
0x00050080,0x00000006,0x0000002b,0x00000028,0x0000002a,0x0004007c,0x0000000e,0x0000002c,
0x0000002b,0x0003003e,0x00000025,0x0000002c,0x00050041,0x00000030,0x00000031,0x00000012,
0x0000002f,0x0004003d,0x0000000f,0x00000032,0x00000031,0x0003003e,0x0000002e,0x00000032,
0x0004003d,0x00000033,0x00000036,0x00000035,0x0004003d,0x0000000e,0x00000037,0x0000001d,
0x0004003d,0x0000000f,0x00000038,0x0000002e,0x00040063,0x00000036,0x00000037,0x00000038,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32i)uniform writeonly iimageBuffer dest;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
ivec4 clearValue;
} params;
void main()
{
if(gl_GlobalInvocationID . x >= params . size)
return;
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
ivec4 srcValue = params . clearValue;
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000005[] = {
0x07230203,0x00010000,0x00080007,0x00000032,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,
0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000014,
0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,
0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x74736564,
0x65646e49,0x00000078,0x00060005,0x0000000b,0x68737550,0x736e6f43,0x746e6174,0x00000073,
0x00060006,0x0000000b,0x00000000,0x74736564,0x7366664f,0x00007465,0x00050006,0x0000000b,
0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000b,0x00000002,0x4f637273,0x65736666,
0x00000074,0x00050006,0x0000000b,0x00000003,0x64646170,0x00676e69,0x00060006,0x0000000b,
0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,0x0000000d,0x61726170,0x0000736d,
0x00080005,0x00000014,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,
0x00050005,0x0000001b,0x49637273,0x7865646e,0x00000000,0x00050005,0x00000024,0x56637273,
0x65756c61,0x00000000,0x00040005,0x0000002b,0x74736564,0x00000000,0x00050048,0x0000000b,
0x00000000,0x00000023,0x00000000,0x00050048,0x0000000b,0x00000001,0x00000023,0x00000004,
0x00050048,0x0000000b,0x00000002,0x00000023,0x00000008,0x00050048,0x0000000b,0x00000003,
0x00000023,0x0000000c,0x00050048,0x0000000b,0x00000004,0x00000023,0x00000010,0x00030047,
0x0000000b,0x00000002,0x00040047,0x00000014,0x0000000b,0x0000001c,0x00040047,0x0000002b,
0x00000022,0x00000000,0x00040047,0x0000002b,0x00000021,0x00000000,0x00030047,0x0000002b,
0x00000019,0x00040047,0x00000031,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,
0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,
0x00000006,0x00000004,0x0007001e,0x0000000b,0x00000009,0x00000009,0x00000009,0x00000009,
0x0000000a,0x00040020,0x0000000c,0x00000009,0x0000000b,0x0004003b,0x0000000c,0x0000000d,
0x00000009,0x0004002b,0x00000006,0x0000000e,0x00000000,0x00040020,0x0000000f,0x00000009,
0x00000009,0x00040017,0x00000012,0x00000009,0x00000003,0x00040020,0x00000013,0x00000001,
0x00000012,0x0004003b,0x00000013,0x00000014,0x00000001,0x0004002b,0x00000009,0x00000015,
0x00000000,0x00040020,0x00000016,0x00000001,0x00000009,0x0004002b,0x00000006,0x0000001c,
0x00000002,0x00040020,0x00000023,0x00000007,0x0000000a,0x0004002b,0x00000006,0x00000025,
0x00000004,0x00040020,0x00000026,0x00000009,0x0000000a,0x00090019,0x00000029,0x00000006,
0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,0x00000015,0x00040020,0x0000002a,
0x00000000,0x00000029,0x0004003b,0x0000002a,0x0000002b,0x00000000,0x0004002b,0x00000009,
0x0000002f,0x00000040,0x0004002b,0x00000009,0x00000030,0x00000001,0x0006002c,0x00000012,
0x00000031,0x0000002f,0x00000030,0x00000030,0x00050036,0x00000002,0x00000004,0x00000000,
0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b,
0x00000007,0x0000001b,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,0x00050041,
0x0000000f,0x00000010,0x0000000d,0x0000000e,0x0004003d,0x00000009,0x00000011,0x00000010,
0x00050041,0x00000016,0x00000017,0x00000014,0x00000015,0x0004003d,0x00000009,0x00000018,
0x00000017,0x00050080,0x00000009,0x00000019,0x00000011,0x00000018,0x0004007c,0x00000006,
0x0000001a,0x00000019,0x0003003e,0x00000008,0x0000001a,0x00050041,0x0000000f,0x0000001d,
0x0000000d,0x0000001c,0x0004003d,0x00000009,0x0000001e,0x0000001d,0x00050041,0x00000016,
0x0000001f,0x00000014,0x00000015,0x0004003d,0x00000009,0x00000020,0x0000001f,0x00050080,
0x00000009,0x00000021,0x0000001e,0x00000020,0x0004007c,0x00000006,0x00000022,0x00000021,
0x0003003e,0x0000001b,0x00000022,0x00050041,0x00000026,0x00000027,0x0000000d,0x00000025,
0x0004003d,0x0000000a,0x00000028,0x00000027,0x0003003e,0x00000024,0x00000028,0x0004003d,
0x00000029,0x0000002c,0x0000002b,0x0004003d,0x00000006,0x0000002d,0x00000008,0x0004003d,
0x0000000a,0x0000002e,0x00000024,0x00040063,0x0000002c,0x0000002d,0x0000002e,0x000100fd,
0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32i)uniform writeonly iimageBuffer dest;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
ivec4 clearValue;
} params;
void main()
{
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
ivec4 srcValue = params . clearValue;
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000006[] = {
0x07230203,0x00010000,0x00080007,0x00000040,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002e,0x00020011,0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,
0x00000000,0x00000009,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,
0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00080005,
0x00000009,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00060005,
0x00000010,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,0x00000010,0x00000000,
0x74736564,0x7366664f,0x00007465,0x00050006,0x00000010,0x00000001,0x657a6973,0x00000000,
0x00060006,0x00000010,0x00000002,0x4f637273,0x65736666,0x00000074,0x00050006,0x00000010,
0x00000003,0x64646170,0x00676e69,0x00060006,0x00000010,0x00000004,0x61656c63,0x6c615672,
0x00006575,0x00040005,0x00000012,0x61726170,0x0000736d,0x00050005,0x0000001d,0x74736564,
0x65646e49,0x00000078,0x00050005,0x00000025,0x49637273,0x7865646e,0x00000000,0x00050005,
0x0000002e,0x56637273,0x65756c61,0x00000000,0x00030005,0x00000032,0x00637273,0x00040005,
0x00000039,0x74736564,0x00000000,0x00040047,0x00000009,0x0000000b,0x0000001c,0x00050048,
0x00000010,0x00000000,0x00000023,0x00000000,0x00050048,0x00000010,0x00000001,0x00000023,
0x00000004,0x00050048,0x00000010,0x00000002,0x00000023,0x00000008,0x00050048,0x00000010,
0x00000003,0x00000023,0x0000000c,0x00050048,0x00000010,0x00000004,0x00000023,0x00000010,
0x00030047,0x00000010,0x00000002,0x00040047,0x00000032,0x00000022,0x00000000,0x00040047,
0x00000032,0x00000021,0x00000001,0x00040047,0x00000039,0x00000022,0x00000000,0x00040047,
0x00000039,0x00000021,0x00000000,0x00030047,0x00000039,0x00000019,0x00040047,0x0000003f,
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
0x00000006,0x00000020,0x00000000,0x00040017,0x00000007,0x00000006,0x00000003,0x00040020,
0x00000008,0x00000001,0x00000007,0x0004003b,0x00000008,0x00000009,0x00000001,0x0004002b,
0x00000006,0x0000000a,0x00000000,0x00040020,0x0000000b,0x00000001,0x00000006,0x00040015,
0x0000000e,0x00000020,0x00000001,0x00040017,0x0000000f,0x0000000e,0x00000004,0x0007001e,
0x00000010,0x00000006,0x00000006,0x00000006,0x00000006,0x0000000f,0x00040020,0x00000011,
0x00000009,0x00000010,0x0004003b,0x00000011,0x00000012,0x00000009,0x0004002b,0x0000000e,
0x00000013,0x00000001,0x00040020,0x00000014,0x00000009,0x00000006,0x00020014,0x00000017,
0x00040020,0x0000001c,0x00000007,0x0000000e,0x0004002b,0x0000000e,0x0000001e,0x00000000,
0x0004002b,0x0000000e,0x00000026,0x00000002,0x00040020,0x0000002d,0x00000007,0x0000000f,
0x00090019,0x0000002f,0x0000000e,0x00000005,0x00000000,0x00000000,0x00000000,0x00000001,
0x00000000,0x0003001b,0x00000030,0x0000002f,0x00040020,0x00000031,0x00000000,0x00000030,
0x0004003b,0x00000031,0x00000032,0x00000000,0x00090019,0x00000037,0x0000000e,0x00000005,
0x00000000,0x00000000,0x00000000,0x00000002,0x00000015,0x00040020,0x00000038,0x00000000,
0x00000037,0x0004003b,0x00000038,0x00000039,0x00000000,0x0004002b,0x00000006,0x0000003d,
0x00000040,0x0004002b,0x00000006,0x0000003e,0x00000001,0x0006002c,0x00000007,0x0000003f,
0x0000003d,0x0000003e,0x0000003e,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
0x000200f8,0x00000005,0x0004003b,0x0000001c,0x0000001d,0x00000007,0x0004003b,0x0000001c,
0x00000025,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x00050041,0x0000000b,
0x0000000c,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000000d,0x0000000c,0x00050041,
0x00000014,0x00000015,0x00000012,0x00000013,0x0004003d,0x00000006,0x00000016,0x00000015,
0x000500ae,0x00000017,0x00000018,0x0000000d,0x00000016,0x000300f7,0x0000001a,0x00000000,
0x000400fa,0x00000018,0x00000019,0x0000001a,0x000200f8,0x00000019,0x000100fd,0x000200f8,
0x0000001a,0x00050041,0x00000014,0x0000001f,0x00000012,0x0000001e,0x0004003d,0x00000006,
0x00000020,0x0000001f,0x00050041,0x0000000b,0x00000021,0x00000009,0x0000000a,0x0004003d,
0x00000006,0x00000022,0x00000021,0x00050080,0x00000006,0x00000023,0x00000020,0x00000022,
0x0004007c,0x0000000e,0x00000024,0x00000023,0x0003003e,0x0000001d,0x00000024,0x00050041,
0x00000014,0x00000027,0x00000012,0x00000026,0x0004003d,0x00000006,0x00000028,0x00000027,
0x00050041,0x0000000b,0x00000029,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000002a,
0x00000029,0x00050080,0x00000006,0x0000002b,0x00000028,0x0000002a,0x0004007c,0x0000000e,
0x0000002c,0x0000002b,0x0003003e,0x00000025,0x0000002c,0x0004003d,0x00000030,0x00000033,
0x00000032,0x0004003d,0x0000000e,0x00000034,0x00000025,0x00040064,0x0000002f,0x00000035,
0x00000033,0x0005005f,0x0000000f,0x00000036,0x00000035,0x00000034,0x0003003e,0x0000002e,
0x00000036,0x0004003d,0x00000037,0x0000003a,0x00000039,0x0004003d,0x0000000e,0x0000003b,
0x0000001d,0x0004003d,0x0000000f,0x0000003c,0x0000002e,0x00040063,0x0000003a,0x0000003b,
0x0000003c,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32i)uniform writeonly iimageBuffer dest;
layout(set = 0, binding = 1)uniform isamplerBuffer src;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
ivec4 clearValue;
} params;
void main()
{
if(gl_GlobalInvocationID . x >= params . size)
return;
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
ivec4 srcValue = texelFetch(src, srcIndex);
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000007[] = {
0x07230203,0x00010000,0x00080007,0x00000036,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002e,0x00020011,0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,
0x00000000,0x00000014,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,
0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,
0x00000008,0x74736564,0x65646e49,0x00000078,0x00060005,0x0000000b,0x68737550,0x736e6f43,
0x746e6174,0x00000073,0x00060006,0x0000000b,0x00000000,0x74736564,0x7366664f,0x00007465,
0x00050006,0x0000000b,0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000b,0x00000002,
0x4f637273,0x65736666,0x00000074,0x00050006,0x0000000b,0x00000003,0x64646170,0x00676e69,
0x00060006,0x0000000b,0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,0x0000000d,
0x61726170,0x0000736d,0x00080005,0x00000014,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
0x496e6f69,0x00000044,0x00050005,0x0000001b,0x49637273,0x7865646e,0x00000000,0x00050005,
0x00000024,0x56637273,0x65756c61,0x00000000,0x00030005,0x00000028,0x00637273,0x00040005,
0x0000002f,0x74736564,0x00000000,0x00050048,0x0000000b,0x00000000,0x00000023,0x00000000,
0x00050048,0x0000000b,0x00000001,0x00000023,0x00000004,0x00050048,0x0000000b,0x00000002,
0x00000023,0x00000008,0x00050048,0x0000000b,0x00000003,0x00000023,0x0000000c,0x00050048,
0x0000000b,0x00000004,0x00000023,0x00000010,0x00030047,0x0000000b,0x00000002,0x00040047,
0x00000014,0x0000000b,0x0000001c,0x00040047,0x00000028,0x00000022,0x00000000,0x00040047,
0x00000028,0x00000021,0x00000001,0x00040047,0x0000002f,0x00000022,0x00000000,0x00040047,
0x0000002f,0x00000021,0x00000000,0x00030047,0x0000002f,0x00000019,0x00040047,0x00000035,
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,
0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,0x00000006,0x00000004,0x0007001e,
0x0000000b,0x00000009,0x00000009,0x00000009,0x00000009,0x0000000a,0x00040020,0x0000000c,
0x00000009,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000009,0x0004002b,0x00000006,
0x0000000e,0x00000000,0x00040020,0x0000000f,0x00000009,0x00000009,0x00040017,0x00000012,
0x00000009,0x00000003,0x00040020,0x00000013,0x00000001,0x00000012,0x0004003b,0x00000013,
0x00000014,0x00000001,0x0004002b,0x00000009,0x00000015,0x00000000,0x00040020,0x00000016,
0x00000001,0x00000009,0x0004002b,0x00000006,0x0000001c,0x00000002,0x00040020,0x00000023,
0x00000007,0x0000000a,0x00090019,0x00000025,0x00000006,0x00000005,0x00000000,0x00000000,
0x00000000,0x00000001,0x00000000,0x0003001b,0x00000026,0x00000025,0x00040020,0x00000027,
0x00000000,0x00000026,0x0004003b,0x00000027,0x00000028,0x00000000,0x00090019,0x0000002d,
0x00000006,0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,0x00000015,0x00040020,
0x0000002e,0x00000000,0x0000002d,0x0004003b,0x0000002e,0x0000002f,0x00000000,0x0004002b,
0x00000009,0x00000033,0x00000040,0x0004002b,0x00000009,0x00000034,0x00000001,0x0006002c,
0x00000012,0x00000035,0x00000033,0x00000034,0x00000034,0x00050036,0x00000002,0x00000004,
0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,
0x0004003b,0x00000007,0x0000001b,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,
0x00050041,0x0000000f,0x00000010,0x0000000d,0x0000000e,0x0004003d,0x00000009,0x00000011,
0x00000010,0x00050041,0x00000016,0x00000017,0x00000014,0x00000015,0x0004003d,0x00000009,
0x00000018,0x00000017,0x00050080,0x00000009,0x00000019,0x00000011,0x00000018,0x0004007c,
0x00000006,0x0000001a,0x00000019,0x0003003e,0x00000008,0x0000001a,0x00050041,0x0000000f,
0x0000001d,0x0000000d,0x0000001c,0x0004003d,0x00000009,0x0000001e,0x0000001d,0x00050041,
0x00000016,0x0000001f,0x00000014,0x00000015,0x0004003d,0x00000009,0x00000020,0x0000001f,
0x00050080,0x00000009,0x00000021,0x0000001e,0x00000020,0x0004007c,0x00000006,0x00000022,
0x00000021,0x0003003e,0x0000001b,0x00000022,0x0004003d,0x00000026,0x00000029,0x00000028,
0x0004003d,0x00000006,0x0000002a,0x0000001b,0x00040064,0x00000025,0x0000002b,0x00000029,
0x0005005f,0x0000000a,0x0000002c,0x0000002b,0x0000002a,0x0003003e,0x00000024,0x0000002c,
0x0004003d,0x0000002d,0x00000030,0x0000002f,0x0004003d,0x00000006,0x00000031,0x00000008,
0x0004003d,0x0000000a,0x00000032,0x00000024,0x00040063,0x00000030,0x00000031,0x00000032,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32i)uniform writeonly iimageBuffer dest;
layout(set = 0, binding = 1)uniform isamplerBuffer src;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
ivec4 clearValue;
} params;
void main()
{
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
ivec4 srcValue = texelFetch(src, srcIndex);
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000008[] = {
0x07230203,0x00010000,0x00080007,0x0000003c,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,
0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000009,
0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,
0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00080005,0x00000009,0x475f6c67,
0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00060005,0x0000000f,0x68737550,
0x736e6f43,0x746e6174,0x00000073,0x00060006,0x0000000f,0x00000000,0x74736564,0x7366664f,
0x00007465,0x00050006,0x0000000f,0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000f,
0x00000002,0x4f637273,0x65736666,0x00000074,0x00050006,0x0000000f,0x00000003,0x64646170,
0x00676e69,0x00060006,0x0000000f,0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,
0x00000011,0x61726170,0x0000736d,0x00050005,0x0000001d,0x74736564,0x65646e49,0x00000078,
0x00050005,0x00000025,0x49637273,0x7865646e,0x00000000,0x00050005,0x0000002e,0x56637273,
0x65756c61,0x00000000,0x00040005,0x00000035,0x74736564,0x00000000,0x00040047,0x00000009,
0x0000000b,0x0000001c,0x00050048,0x0000000f,0x00000000,0x00000023,0x00000000,0x00050048,
0x0000000f,0x00000001,0x00000023,0x00000004,0x00050048,0x0000000f,0x00000002,0x00000023,
0x00000008,0x00050048,0x0000000f,0x00000003,0x00000023,0x0000000c,0x00050048,0x0000000f,
0x00000004,0x00000023,0x00000010,0x00030047,0x0000000f,0x00000002,0x00040047,0x00000035,
0x00000022,0x00000000,0x00040047,0x00000035,0x00000021,0x00000000,0x00030047,0x00000035,
0x00000019,0x00040047,0x0000003b,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000000,0x00040017,0x00000007,
0x00000006,0x00000003,0x00040020,0x00000008,0x00000001,0x00000007,0x0004003b,0x00000008,
0x00000009,0x00000001,0x0004002b,0x00000006,0x0000000a,0x00000000,0x00040020,0x0000000b,
0x00000001,0x00000006,0x00040017,0x0000000e,0x00000006,0x00000004,0x0007001e,0x0000000f,
0x00000006,0x00000006,0x00000006,0x00000006,0x0000000e,0x00040020,0x00000010,0x00000009,
0x0000000f,0x0004003b,0x00000010,0x00000011,0x00000009,0x00040015,0x00000012,0x00000020,
0x00000001,0x0004002b,0x00000012,0x00000013,0x00000001,0x00040020,0x00000014,0x00000009,
0x00000006,0x00020014,0x00000017,0x00040020,0x0000001c,0x00000007,0x00000012,0x0004002b,
0x00000012,0x0000001e,0x00000000,0x0004002b,0x00000012,0x00000026,0x00000002,0x00040020,
0x0000002d,0x00000007,0x0000000e,0x0004002b,0x00000012,0x0000002f,0x00000004,0x00040020,
0x00000030,0x00000009,0x0000000e,0x00090019,0x00000033,0x00000006,0x00000005,0x00000000,
0x00000000,0x00000000,0x00000002,0x0000001e,0x00040020,0x00000034,0x00000000,0x00000033,
0x0004003b,0x00000034,0x00000035,0x00000000,0x0004002b,0x00000006,0x00000039,0x00000040,
0x0004002b,0x00000006,0x0000003a,0x00000001,0x0006002c,0x00000007,0x0000003b,0x00000039,
0x0000003a,0x0000003a,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
0x00000005,0x0004003b,0x0000001c,0x0000001d,0x00000007,0x0004003b,0x0000001c,0x00000025,
0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x00050041,0x0000000b,0x0000000c,
0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000000d,0x0000000c,0x00050041,0x00000014,
0x00000015,0x00000011,0x00000013,0x0004003d,0x00000006,0x00000016,0x00000015,0x000500ae,
0x00000017,0x00000018,0x0000000d,0x00000016,0x000300f7,0x0000001a,0x00000000,0x000400fa,
0x00000018,0x00000019,0x0000001a,0x000200f8,0x00000019,0x000100fd,0x000200f8,0x0000001a,
0x00050041,0x00000014,0x0000001f,0x00000011,0x0000001e,0x0004003d,0x00000006,0x00000020,
0x0000001f,0x00050041,0x0000000b,0x00000021,0x00000009,0x0000000a,0x0004003d,0x00000006,
0x00000022,0x00000021,0x00050080,0x00000006,0x00000023,0x00000020,0x00000022,0x0004007c,
0x00000012,0x00000024,0x00000023,0x0003003e,0x0000001d,0x00000024,0x00050041,0x00000014,
0x00000027,0x00000011,0x00000026,0x0004003d,0x00000006,0x00000028,0x00000027,0x00050041,
0x0000000b,0x00000029,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000002a,0x00000029,
0x00050080,0x00000006,0x0000002b,0x00000028,0x0000002a,0x0004007c,0x00000012,0x0000002c,
0x0000002b,0x0003003e,0x00000025,0x0000002c,0x00050041,0x00000030,0x00000031,0x00000011,
0x0000002f,0x0004003d,0x0000000e,0x00000032,0x00000031,0x0003003e,0x0000002e,0x00000032,
0x0004003d,0x00000033,0x00000036,0x00000035,0x0004003d,0x00000012,0x00000037,0x0000001d,
0x0004003d,0x0000000e,0x00000038,0x0000002e,0x00040063,0x00000036,0x00000037,0x00000038,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32ui)uniform writeonly uimageBuffer dest;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
uvec4 clearValue;
} params;
void main()
{
if(gl_GlobalInvocationID . x >= params . size)
return;
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
uvec4 srcValue = params . clearValue;
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_00000009[] = {
0x07230203,0x00010000,0x00080007,0x00000032,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,
0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x00000014,
0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,0x00030003,0x00000002,
0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,0x00000008,0x74736564,
0x65646e49,0x00000078,0x00060005,0x0000000b,0x68737550,0x736e6f43,0x746e6174,0x00000073,
0x00060006,0x0000000b,0x00000000,0x74736564,0x7366664f,0x00007465,0x00050006,0x0000000b,
0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000b,0x00000002,0x4f637273,0x65736666,
0x00000074,0x00050006,0x0000000b,0x00000003,0x64646170,0x00676e69,0x00060006,0x0000000b,
0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,0x0000000d,0x61726170,0x0000736d,
0x00080005,0x00000014,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,
0x00050005,0x0000001b,0x49637273,0x7865646e,0x00000000,0x00050005,0x00000024,0x56637273,
0x65756c61,0x00000000,0x00040005,0x0000002b,0x74736564,0x00000000,0x00050048,0x0000000b,
0x00000000,0x00000023,0x00000000,0x00050048,0x0000000b,0x00000001,0x00000023,0x00000004,
0x00050048,0x0000000b,0x00000002,0x00000023,0x00000008,0x00050048,0x0000000b,0x00000003,
0x00000023,0x0000000c,0x00050048,0x0000000b,0x00000004,0x00000023,0x00000010,0x00030047,
0x0000000b,0x00000002,0x00040047,0x00000014,0x0000000b,0x0000001c,0x00040047,0x0000002b,
0x00000022,0x00000000,0x00040047,0x0000002b,0x00000021,0x00000000,0x00030047,0x0000002b,
0x00000019,0x00040047,0x00000031,0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,
0x00000003,0x00000002,0x00040015,0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,
0x00000007,0x00000006,0x00040015,0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,
0x00000009,0x00000004,0x0007001e,0x0000000b,0x00000009,0x00000009,0x00000009,0x00000009,
0x0000000a,0x00040020,0x0000000c,0x00000009,0x0000000b,0x0004003b,0x0000000c,0x0000000d,
0x00000009,0x0004002b,0x00000006,0x0000000e,0x00000000,0x00040020,0x0000000f,0x00000009,
0x00000009,0x00040017,0x00000012,0x00000009,0x00000003,0x00040020,0x00000013,0x00000001,
0x00000012,0x0004003b,0x00000013,0x00000014,0x00000001,0x0004002b,0x00000009,0x00000015,
0x00000000,0x00040020,0x00000016,0x00000001,0x00000009,0x0004002b,0x00000006,0x0000001c,
0x00000002,0x00040020,0x00000023,0x00000007,0x0000000a,0x0004002b,0x00000006,0x00000025,
0x00000004,0x00040020,0x00000026,0x00000009,0x0000000a,0x00090019,0x00000029,0x00000009,
0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,0x0000001e,0x00040020,0x0000002a,
0x00000000,0x00000029,0x0004003b,0x0000002a,0x0000002b,0x00000000,0x0004002b,0x00000009,
0x0000002f,0x00000040,0x0004002b,0x00000009,0x00000030,0x00000001,0x0006002c,0x00000012,
0x00000031,0x0000002f,0x00000030,0x00000030,0x00050036,0x00000002,0x00000004,0x00000000,
0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,0x0004003b,
0x00000007,0x0000001b,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,0x00050041,
0x0000000f,0x00000010,0x0000000d,0x0000000e,0x0004003d,0x00000009,0x00000011,0x00000010,
0x00050041,0x00000016,0x00000017,0x00000014,0x00000015,0x0004003d,0x00000009,0x00000018,
0x00000017,0x00050080,0x00000009,0x00000019,0x00000011,0x00000018,0x0004007c,0x00000006,
0x0000001a,0x00000019,0x0003003e,0x00000008,0x0000001a,0x00050041,0x0000000f,0x0000001d,
0x0000000d,0x0000001c,0x0004003d,0x00000009,0x0000001e,0x0000001d,0x00050041,0x00000016,
0x0000001f,0x00000014,0x00000015,0x0004003d,0x00000009,0x00000020,0x0000001f,0x00050080,
0x00000009,0x00000021,0x0000001e,0x00000020,0x0004007c,0x00000006,0x00000022,0x00000021,
0x0003003e,0x0000001b,0x00000022,0x00050041,0x00000026,0x00000027,0x0000000d,0x00000025,
0x0004003d,0x0000000a,0x00000028,0x00000027,0x0003003e,0x00000024,0x00000028,0x0004003d,
0x00000029,0x0000002c,0x0000002b,0x0004003d,0x00000006,0x0000002d,0x00000008,0x0004003d,
0x0000000a,0x0000002e,0x00000024,0x00040063,0x0000002c,0x0000002d,0x0000002e,0x000100fd,
0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32ui)uniform writeonly uimageBuffer dest;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
uvec4 clearValue;
} params;
void main()
{
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
uvec4 srcValue = params . clearValue;
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_0000000A[] = {
0x07230203,0x00010000,0x00080007,0x00000040,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002e,0x00020011,0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,
0x00000000,0x00000009,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,
0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00080005,
0x00000009,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,0x496e6f69,0x00000044,0x00060005,
0x0000000f,0x68737550,0x736e6f43,0x746e6174,0x00000073,0x00060006,0x0000000f,0x00000000,
0x74736564,0x7366664f,0x00007465,0x00050006,0x0000000f,0x00000001,0x657a6973,0x00000000,
0x00060006,0x0000000f,0x00000002,0x4f637273,0x65736666,0x00000074,0x00050006,0x0000000f,
0x00000003,0x64646170,0x00676e69,0x00060006,0x0000000f,0x00000004,0x61656c63,0x6c615672,
0x00006575,0x00040005,0x00000011,0x61726170,0x0000736d,0x00050005,0x0000001d,0x74736564,
0x65646e49,0x00000078,0x00050005,0x00000025,0x49637273,0x7865646e,0x00000000,0x00050005,
0x0000002e,0x56637273,0x65756c61,0x00000000,0x00030005,0x00000032,0x00637273,0x00040005,
0x00000039,0x74736564,0x00000000,0x00040047,0x00000009,0x0000000b,0x0000001c,0x00050048,
0x0000000f,0x00000000,0x00000023,0x00000000,0x00050048,0x0000000f,0x00000001,0x00000023,
0x00000004,0x00050048,0x0000000f,0x00000002,0x00000023,0x00000008,0x00050048,0x0000000f,
0x00000003,0x00000023,0x0000000c,0x00050048,0x0000000f,0x00000004,0x00000023,0x00000010,
0x00030047,0x0000000f,0x00000002,0x00040047,0x00000032,0x00000022,0x00000000,0x00040047,
0x00000032,0x00000021,0x00000001,0x00040047,0x00000039,0x00000022,0x00000000,0x00040047,
0x00000039,0x00000021,0x00000000,0x00030047,0x00000039,0x00000019,0x00040047,0x0000003f,
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
0x00000006,0x00000020,0x00000000,0x00040017,0x00000007,0x00000006,0x00000003,0x00040020,
0x00000008,0x00000001,0x00000007,0x0004003b,0x00000008,0x00000009,0x00000001,0x0004002b,
0x00000006,0x0000000a,0x00000000,0x00040020,0x0000000b,0x00000001,0x00000006,0x00040017,
0x0000000e,0x00000006,0x00000004,0x0007001e,0x0000000f,0x00000006,0x00000006,0x00000006,
0x00000006,0x0000000e,0x00040020,0x00000010,0x00000009,0x0000000f,0x0004003b,0x00000010,
0x00000011,0x00000009,0x00040015,0x00000012,0x00000020,0x00000001,0x0004002b,0x00000012,
0x00000013,0x00000001,0x00040020,0x00000014,0x00000009,0x00000006,0x00020014,0x00000017,
0x00040020,0x0000001c,0x00000007,0x00000012,0x0004002b,0x00000012,0x0000001e,0x00000000,
0x0004002b,0x00000012,0x00000026,0x00000002,0x00040020,0x0000002d,0x00000007,0x0000000e,
0x00090019,0x0000002f,0x00000006,0x00000005,0x00000000,0x00000000,0x00000000,0x00000001,
0x00000000,0x0003001b,0x00000030,0x0000002f,0x00040020,0x00000031,0x00000000,0x00000030,
0x0004003b,0x00000031,0x00000032,0x00000000,0x00090019,0x00000037,0x00000006,0x00000005,
0x00000000,0x00000000,0x00000000,0x00000002,0x0000001e,0x00040020,0x00000038,0x00000000,
0x00000037,0x0004003b,0x00000038,0x00000039,0x00000000,0x0004002b,0x00000006,0x0000003d,
0x00000040,0x0004002b,0x00000006,0x0000003e,0x00000001,0x0006002c,0x00000007,0x0000003f,
0x0000003d,0x0000003e,0x0000003e,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,
0x000200f8,0x00000005,0x0004003b,0x0000001c,0x0000001d,0x00000007,0x0004003b,0x0000001c,
0x00000025,0x00000007,0x0004003b,0x0000002d,0x0000002e,0x00000007,0x00050041,0x0000000b,
0x0000000c,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000000d,0x0000000c,0x00050041,
0x00000014,0x00000015,0x00000011,0x00000013,0x0004003d,0x00000006,0x00000016,0x00000015,
0x000500ae,0x00000017,0x00000018,0x0000000d,0x00000016,0x000300f7,0x0000001a,0x00000000,
0x000400fa,0x00000018,0x00000019,0x0000001a,0x000200f8,0x00000019,0x000100fd,0x000200f8,
0x0000001a,0x00050041,0x00000014,0x0000001f,0x00000011,0x0000001e,0x0004003d,0x00000006,
0x00000020,0x0000001f,0x00050041,0x0000000b,0x00000021,0x00000009,0x0000000a,0x0004003d,
0x00000006,0x00000022,0x00000021,0x00050080,0x00000006,0x00000023,0x00000020,0x00000022,
0x0004007c,0x00000012,0x00000024,0x00000023,0x0003003e,0x0000001d,0x00000024,0x00050041,
0x00000014,0x00000027,0x00000011,0x00000026,0x0004003d,0x00000006,0x00000028,0x00000027,
0x00050041,0x0000000b,0x00000029,0x00000009,0x0000000a,0x0004003d,0x00000006,0x0000002a,
0x00000029,0x00050080,0x00000006,0x0000002b,0x00000028,0x0000002a,0x0004007c,0x00000012,
0x0000002c,0x0000002b,0x0003003e,0x00000025,0x0000002c,0x0004003d,0x00000030,0x00000033,
0x00000032,0x0004003d,0x00000012,0x00000034,0x00000025,0x00040064,0x0000002f,0x00000035,
0x00000033,0x0005005f,0x0000000e,0x00000036,0x00000035,0x00000034,0x0003003e,0x0000002e,
0x00000036,0x0004003d,0x00000037,0x0000003a,0x00000039,0x0004003d,0x00000012,0x0000003b,
0x0000001d,0x0004003d,0x0000000e,0x0000003c,0x0000002e,0x00040063,0x0000003a,0x0000003b,
0x0000003c,0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32ui)uniform writeonly uimageBuffer dest;
layout(set = 0, binding = 1)uniform usamplerBuffer src;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
uvec4 clearValue;
} params;
void main()
{
if(gl_GlobalInvocationID . x >= params . size)
return;
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
uvec4 srcValue = texelFetch(src, srcIndex);
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
// 7.10.2904
#pragma once
const uint32_t kBufferUtils_comp_0000000B[] = {
0x07230203,0x00010000,0x00080007,0x00000036,0x00000000,0x00020011,0x00000001,0x00020011,
0x0000002e,0x00020011,0x0000002f,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,
0x00000000,0x0003000e,0x00000000,0x00000001,0x0006000f,0x00000005,0x00000004,0x6e69616d,
0x00000000,0x00000014,0x00060010,0x00000004,0x00000011,0x00000040,0x00000001,0x00000001,
0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,0x00000000,0x00050005,
0x00000008,0x74736564,0x65646e49,0x00000078,0x00060005,0x0000000b,0x68737550,0x736e6f43,
0x746e6174,0x00000073,0x00060006,0x0000000b,0x00000000,0x74736564,0x7366664f,0x00007465,
0x00050006,0x0000000b,0x00000001,0x657a6973,0x00000000,0x00060006,0x0000000b,0x00000002,
0x4f637273,0x65736666,0x00000074,0x00050006,0x0000000b,0x00000003,0x64646170,0x00676e69,
0x00060006,0x0000000b,0x00000004,0x61656c63,0x6c615672,0x00006575,0x00040005,0x0000000d,
0x61726170,0x0000736d,0x00080005,0x00000014,0x475f6c67,0x61626f6c,0x766e496c,0x7461636f,
0x496e6f69,0x00000044,0x00050005,0x0000001b,0x49637273,0x7865646e,0x00000000,0x00050005,
0x00000024,0x56637273,0x65756c61,0x00000000,0x00030005,0x00000028,0x00637273,0x00040005,
0x0000002f,0x74736564,0x00000000,0x00050048,0x0000000b,0x00000000,0x00000023,0x00000000,
0x00050048,0x0000000b,0x00000001,0x00000023,0x00000004,0x00050048,0x0000000b,0x00000002,
0x00000023,0x00000008,0x00050048,0x0000000b,0x00000003,0x00000023,0x0000000c,0x00050048,
0x0000000b,0x00000004,0x00000023,0x00000010,0x00030047,0x0000000b,0x00000002,0x00040047,
0x00000014,0x0000000b,0x0000001c,0x00040047,0x00000028,0x00000022,0x00000000,0x00040047,
0x00000028,0x00000021,0x00000001,0x00040047,0x0000002f,0x00000022,0x00000000,0x00040047,
0x0000002f,0x00000021,0x00000000,0x00030047,0x0000002f,0x00000019,0x00040047,0x00000035,
0x0000000b,0x00000019,0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00040015,
0x00000006,0x00000020,0x00000001,0x00040020,0x00000007,0x00000007,0x00000006,0x00040015,
0x00000009,0x00000020,0x00000000,0x00040017,0x0000000a,0x00000009,0x00000004,0x0007001e,
0x0000000b,0x00000009,0x00000009,0x00000009,0x00000009,0x0000000a,0x00040020,0x0000000c,
0x00000009,0x0000000b,0x0004003b,0x0000000c,0x0000000d,0x00000009,0x0004002b,0x00000006,
0x0000000e,0x00000000,0x00040020,0x0000000f,0x00000009,0x00000009,0x00040017,0x00000012,
0x00000009,0x00000003,0x00040020,0x00000013,0x00000001,0x00000012,0x0004003b,0x00000013,
0x00000014,0x00000001,0x0004002b,0x00000009,0x00000015,0x00000000,0x00040020,0x00000016,
0x00000001,0x00000009,0x0004002b,0x00000006,0x0000001c,0x00000002,0x00040020,0x00000023,
0x00000007,0x0000000a,0x00090019,0x00000025,0x00000009,0x00000005,0x00000000,0x00000000,
0x00000000,0x00000001,0x00000000,0x0003001b,0x00000026,0x00000025,0x00040020,0x00000027,
0x00000000,0x00000026,0x0004003b,0x00000027,0x00000028,0x00000000,0x00090019,0x0000002d,
0x00000009,0x00000005,0x00000000,0x00000000,0x00000000,0x00000002,0x0000001e,0x00040020,
0x0000002e,0x00000000,0x0000002d,0x0004003b,0x0000002e,0x0000002f,0x00000000,0x0004002b,
0x00000009,0x00000033,0x00000040,0x0004002b,0x00000009,0x00000034,0x00000001,0x0006002c,
0x00000012,0x00000035,0x00000033,0x00000034,0x00000034,0x00050036,0x00000002,0x00000004,
0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x00000007,0x00000008,0x00000007,
0x0004003b,0x00000007,0x0000001b,0x00000007,0x0004003b,0x00000023,0x00000024,0x00000007,
0x00050041,0x0000000f,0x00000010,0x0000000d,0x0000000e,0x0004003d,0x00000009,0x00000011,
0x00000010,0x00050041,0x00000016,0x00000017,0x00000014,0x00000015,0x0004003d,0x00000009,
0x00000018,0x00000017,0x00050080,0x00000009,0x00000019,0x00000011,0x00000018,0x0004007c,
0x00000006,0x0000001a,0x00000019,0x0003003e,0x00000008,0x0000001a,0x00050041,0x0000000f,
0x0000001d,0x0000000d,0x0000001c,0x0004003d,0x00000009,0x0000001e,0x0000001d,0x00050041,
0x00000016,0x0000001f,0x00000014,0x00000015,0x0004003d,0x00000009,0x00000020,0x0000001f,
0x00050080,0x00000009,0x00000021,0x0000001e,0x00000020,0x0004007c,0x00000006,0x00000022,
0x00000021,0x0003003e,0x0000001b,0x00000022,0x0004003d,0x00000026,0x00000029,0x00000028,
0x0004003d,0x00000006,0x0000002a,0x0000001b,0x00040064,0x00000025,0x0000002b,0x00000029,
0x0005005f,0x0000000a,0x0000002c,0x0000002b,0x0000002a,0x0003003e,0x00000024,0x0000002c,
0x0004003d,0x0000002d,0x00000030,0x0000002f,0x0004003d,0x00000006,0x00000031,0x00000008,
0x0004003d,0x0000000a,0x00000032,0x00000024,0x00040063,0x00000030,0x00000031,0x00000032,
0x000100fd,0x00010038
};
#if 0 // Generated from:
#version 450 core
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1)in;
layout(set = 0, binding = 0, rgba32ui)uniform writeonly uimageBuffer dest;
layout(set = 0, binding = 1)uniform usamplerBuffer src;
layout(push_constant)uniform PushConstants
{
uint destOffset;
uint size;
uint srcOffset;
uint padding;
uvec4 clearValue;
} params;
void main()
{
int destIndex = int(params . destOffset . x + gl_GlobalInvocationID . x);
int srcIndex = int(params . srcOffset . x + gl_GlobalInvocationID . x);
uvec4 srcValue = texelFetch(src, srcIndex);
imageStore(dest, destIndex, srcValue);
}
#endif // Preprocessed code
//
// Copyright 2018 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// BufferUtils.comp: various utilities such as clear and copy.
//
// The following defines tweak the functionality, and a different shader is built based on these.
//
// - Flags:
// * IsAligned: if true, assumes the workgroup size divides the buffer size, so there is no
// need for bound checking
// - Format:
// * IsFloat
// * IsInt
// * IsUint
// - Function:
// * IsClear: the buffer will be cleared
// * IsCopy: a buffer will be copied to another
//
#version 450 core
layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
#if IsFloat
#define ADD_TYPE_PREFIX(type) type
#define BUFFER_FORMAT rgba32f
#define GVEC4 vec4
#elif IsInt
#define ADD_TYPE_PREFIX(type) i ## type
#define BUFFER_FORMAT rgba32i
#define GVEC4 ivec4
#elif IsUint
#define ADD_TYPE_PREFIX(type) u ## type
#define BUFFER_FORMAT rgba32ui
#define GVEC4 uvec4
#else
#error "Not all formats are accounted for"
#endif
#define BUFFER_WRITE_TYPE ADD_TYPE_PREFIX(imageBuffer)
#define BUFFER_READ_TYPE ADD_TYPE_PREFIX(samplerBuffer)
layout (set = 0, binding = 0, BUFFER_FORMAT) uniform writeonly BUFFER_WRITE_TYPE dest;
#if IsCopy
layout (set = 0, binding = 1) uniform BUFFER_READ_TYPE src;
#endif // IsCopy
layout (push_constant) uniform PushConstants
{
// destOffset: used in all cases
uint destOffset;
// size: used if !IsAligned
uint size;
// srcOffset: used if IsCopy
uint srcOffset;
uint padding;
// clearValue: used if IsClear
GVEC4 clearValue;
} params;
void main()
{
#if !IsAligned
if (gl_GlobalInvocationID.x >= params.size)
return;
#endif // IsAligned
int destIndex = int(params.destOffset.x + gl_GlobalInvocationID.x);
int srcIndex = int(params.srcOffset.x + gl_GlobalInvocationID.x);
#if IsClear
GVEC4 srcValue = params.clearValue;
#elif IsCopy
GVEC4 srcValue = texelFetch(src, srcIndex);
#else
#error "Not all functions are accounted for"
#endif // Function
imageStore(dest, destIndex, srcValue);
}
{
"Description": [
"Copyright 2018 The ANGLE Project Authors. All rights reserved.",
"Use of this source code is governed by a BSD-style license that can be",
"found in the LICENSE file.",
"",
"BufferUtils.comp.json: Build parameters for BufferUtils.comp."
],
"Flags": [
"IsAligned"
],
"Format": [
"IsFloat",
"IsInt",
"IsUint"
],
"Function": [
"IsClear",
"IsCopy"
]
}
......@@ -120,7 +120,10 @@ Format::Format()
textureInitializerFunction(nullptr),
textureLoadFunctions(),
vertexLoadRequiresConversion(false),
vkBufferFormatIsPacked(false)
vkBufferFormatIsPacked(false),
vkSupportsStorageBuffer(false),
vkFormatIsInt(false),
vkFormatIsUnsigned(false)
{}
void Format::initTextureFallback(RendererVk *renderer,
......@@ -196,6 +199,9 @@ void FormatTable::initialize(RendererVk *renderer,
continue;
}
format.vkSupportsStorageBuffer = renderer->hasBufferFormatFeatureBits(
format.vkBufferFormat, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT);
gl::TextureCaps textureCaps;
FillTextureFormatCaps(renderer, format.vkTextureFormat, &textureCaps);
outTextureCapsMap->set(formatID, textureCaps);
......
......@@ -77,6 +77,9 @@ struct Format final : private angle::NonCopyable
bool vertexLoadRequiresConversion;
bool vkBufferFormatIsPacked;
bool vkSupportsStorageBuffer;
bool vkFormatIsInt;
bool vkFormatIsUnsigned;
};
bool operator==(const Format &lhs, const Format &rhs);
......
......@@ -21,7 +21,8 @@ namespace vk
namespace
{
constexpr VkBufferUsageFlags kLineLoopDynamicBufferUsage =
(VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT);
VK_BUFFER_USAGE_INDEX_BUFFER_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT |
VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT;
constexpr int kLineLoopDynamicBufferMinSize = 1024 * 1024;
// This is an arbitrary max. We can change this later if necessary.
......@@ -890,6 +891,7 @@ BufferHelper::BufferHelper()
mMemoryPropertyFlags{},
mSize(0),
mMappedMemory(nullptr),
mViewFormat(nullptr),
mCurrentWriteAccess(0),
mCurrentReadAccess(0)
{}
......@@ -909,7 +911,8 @@ angle::Result BufferHelper::init(Context *context,
void BufferHelper::destroy(VkDevice device)
{
unmap(device);
mSize = 0;
mSize = 0;
mViewFormat = nullptr;
mBuffer.destroy(device);
mBufferView.destroy(device);
......@@ -919,7 +922,8 @@ void BufferHelper::destroy(VkDevice device)
void BufferHelper::release(RendererVk *renderer)
{
unmap(renderer->getDevice());
mSize = 0;
mSize = 0;
mViewFormat = nullptr;
renderer->releaseObject(getStoredQueueSerial(), &mBuffer);
renderer->releaseObject(getStoredQueueSerial(), &mBufferView);
......@@ -980,9 +984,14 @@ angle::Result BufferHelper::copyFromBuffer(Context *context,
angle::Result BufferHelper::initBufferView(Context *context, const Format &format)
{
ASSERT(!mBufferView.valid());
ASSERT(format.valid());
if (mBufferView.valid())
{
ASSERT(mViewFormat->vkBufferFormat == format.vkBufferFormat);
return angle::Result::Continue();
}
VkBufferViewCreateInfo viewCreateInfo = {};
viewCreateInfo.sType = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO;
viewCreateInfo.buffer = mBuffer.getHandle();
......@@ -991,6 +1000,7 @@ angle::Result BufferHelper::initBufferView(Context *context, const Format &forma
viewCreateInfo.range = mSize;
ANGLE_VK_TRY(context, mBufferView.init(context->getDevice(), viewCreateInfo));
mViewFormat = &format;
return angle::Result::Continue();
}
......
......@@ -400,17 +400,19 @@ class BufferHelper final : public RecordableGraphResource
const Buffer &buffer,
const VkBufferCopy &copyRegion);
angle::Result getBufferView(Context *context, const Format &format, BufferView **bufferViewOut)
{
// Note: currently only one view is allowed. If needs be, multiple views can be created
// based on format.
if (!mBufferView.valid())
{
ANGLE_TRY(initBufferView(context, format));
}
// Note: currently only one view is allowed. If needs be, multiple views can be created
// based on format.
angle::Result initBufferView(Context *context, const Format &format);
*bufferViewOut = &mBufferView;
return angle::Result::Continue();
const BufferView &getBufferView() const
{
ASSERT(mBufferView.valid());
return mBufferView;
}
const Format &getViewFormat() const
{
ASSERT(mViewFormat);
return *mViewFormat;
}
angle::Result map(Context *context, uint8_t **ptrOut)
......@@ -432,7 +434,6 @@ class BufferHelper final : public RecordableGraphResource
private:
angle::Result mapImpl(Context *context);
angle::Result initBufferView(Context *context, const Format &format);
// Vulkan objects.
Buffer mBuffer;
......@@ -443,6 +444,7 @@ class BufferHelper final : public RecordableGraphResource
VkMemoryPropertyFlags mMemoryPropertyFlags;
VkDeviceSize mSize;
uint8_t *mMappedMemory;
const Format *mViewFormat;
// For memory barriers.
VkFlags mCurrentWriteAccess;
......
......@@ -16,6 +16,18 @@ namespace vk
{
namespace
{
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000002.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000003.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000004.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000005.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000006.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000007.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000008.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000009.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000A.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.0000000B.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/FullScreenQuad.vert.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/PushConstantColor.frag.00000000.inc"
......@@ -26,6 +38,20 @@ struct ShaderBlob
size_t codeSize;
};
constexpr ShaderBlob kBufferUtils_comp_shaders[] = {
{kBufferUtils_comp_00000000, sizeof(kBufferUtils_comp_00000000)},
{kBufferUtils_comp_00000001, sizeof(kBufferUtils_comp_00000001)},
{kBufferUtils_comp_00000002, sizeof(kBufferUtils_comp_00000002)},
{kBufferUtils_comp_00000003, sizeof(kBufferUtils_comp_00000003)},
{kBufferUtils_comp_00000004, sizeof(kBufferUtils_comp_00000004)},
{kBufferUtils_comp_00000005, sizeof(kBufferUtils_comp_00000005)},
{kBufferUtils_comp_00000006, sizeof(kBufferUtils_comp_00000006)},
{kBufferUtils_comp_00000007, sizeof(kBufferUtils_comp_00000007)},
{kBufferUtils_comp_00000008, sizeof(kBufferUtils_comp_00000008)},
{kBufferUtils_comp_00000009, sizeof(kBufferUtils_comp_00000009)},
{kBufferUtils_comp_0000000A, sizeof(kBufferUtils_comp_0000000A)},
{kBufferUtils_comp_0000000B, sizeof(kBufferUtils_comp_0000000B)},
};
constexpr ShaderBlob kFullScreenQuad_vert_shaders[] = {
{kFullScreenQuad_vert_00000000, sizeof(kFullScreenQuad_vert_00000000)},
};
......@@ -63,6 +89,10 @@ ShaderLibrary::~ShaderLibrary() {}
void ShaderLibrary::destroy(VkDevice device)
{
for (RefCounted<ShaderAndSerial> &shader : mBufferUtils_comp_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mFullScreenQuad_vert_shaders)
{
shader.get().destroy(device);
......@@ -73,6 +103,14 @@ void ShaderLibrary::destroy(VkDevice device)
}
}
angle::Result ShaderLibrary::getBufferUtils_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
{
return GetShader(context, mBufferUtils_comp_shaders, kBufferUtils_comp_shaders,
ArraySize(kBufferUtils_comp_shaders), shaderFlags, shaderOut);
}
angle::Result ShaderLibrary::getFullScreenQuad_vert(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
......
......@@ -9,6 +9,18 @@
# List of generated shaders for inclusion in ANGLE's build process.
angle_vulkan_internal_shaders = [
"shaders/gen/BufferUtils.comp.00000000.inc",
"shaders/gen/BufferUtils.comp.00000001.inc",
"shaders/gen/BufferUtils.comp.00000002.inc",
"shaders/gen/BufferUtils.comp.00000003.inc",
"shaders/gen/BufferUtils.comp.00000004.inc",
"shaders/gen/BufferUtils.comp.00000005.inc",
"shaders/gen/BufferUtils.comp.00000006.inc",
"shaders/gen/BufferUtils.comp.00000007.inc",
"shaders/gen/BufferUtils.comp.00000008.inc",
"shaders/gen/BufferUtils.comp.00000009.inc",
"shaders/gen/BufferUtils.comp.0000000A.inc",
"shaders/gen/BufferUtils.comp.0000000B.inc",
"shaders/gen/FullScreenQuad.vert.00000000.inc",
"shaders/gen/PushConstantColor.frag.00000000.inc",
]
......@@ -19,6 +19,28 @@ namespace vk
{
namespace InternalShader
{
namespace BufferUtils_comp
{
enum flags
{
kIsAligned = 0x00000001,
kFlagsMask = 0x00000001,
};
enum Function
{
kIsClear = 0x00000000,
kIsCopy = 0x00000002,
kFunctionMask = 0x00000002,
};
enum Format
{
kIsFloat = 0x00000000,
kIsInt = 0x00000004,
kIsUint = 0x00000008,
kFormatMask = 0x0000000C,
};
} // namespace BufferUtils_comp
namespace FullScreenQuad_vert
{} // namespace FullScreenQuad_vert
......@@ -35,6 +57,9 @@ class ShaderLibrary final : angle::NonCopyable
void destroy(VkDevice device);
angle::Result getBufferUtils_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
angle::Result getFullScreenQuad_vert(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
......@@ -43,6 +68,10 @@ class ShaderLibrary final : angle::NonCopyable
RefCounted<ShaderAndSerial> **shaderOut);
private:
RefCounted<ShaderAndSerial>
mBufferUtils_comp_shaders[InternalShader::BufferUtils_comp::kFlagsMask |
InternalShader::BufferUtils_comp::kFunctionMask |
InternalShader::BufferUtils_comp::kFormatMask];
RefCounted<ShaderAndSerial> mFullScreenQuad_vert_shaders[1];
RefCounted<ShaderAndSerial> mPushConstantColor_frag_shaders[1];
};
......
......@@ -1250,6 +1250,9 @@ void GarbageObject::destroy(VkDevice device)
case HandleType::Buffer:
vkDestroyBuffer(device, reinterpret_cast<VkBuffer>(mHandle), nullptr);
break;
case HandleType::BufferView:
vkDestroyBufferView(device, reinterpret_cast<VkBufferView>(mHandle), nullptr);
break;
case HandleType::Image:
vkDestroyImage(device, reinterpret_cast<VkImage>(mHandle), nullptr);
break;
......
......@@ -400,6 +400,12 @@ class CommandBuffer : public WrappedObject<CommandBuffer, VkCommandBuffer>
firstInstance);
}
void dispatch(uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ)
{
ASSERT(valid());
vkCmdDispatch(mHandle, groupCountX, groupCountY, groupCountZ);
}
void bindPipeline(VkPipelineBindPoint pipelineBindPoint, const Pipeline &pipeline);
void bindVertexBuffers(uint32_t firstBinding,
uint32_t bindingCount,
......
......@@ -703,6 +703,8 @@ libangle_vulkan_sources = [
"src/libANGLE/renderer/vulkan/ContextVk.h",
"src/libANGLE/renderer/vulkan/DeviceVk.cpp",
"src/libANGLE/renderer/vulkan/DeviceVk.h",
"src/libANGLE/renderer/vulkan/DispatchUtilsVk.cpp",
"src/libANGLE/renderer/vulkan/DispatchUtilsVk.h",
"src/libANGLE/renderer/vulkan/DisplayVk.cpp",
"src/libANGLE/renderer/vulkan/DisplayVk.h",
"src/libANGLE/renderer/vulkan/FenceNVVk.cpp",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment