Commit de70a713 by Shahbaz Youssefi Committed by Commit Bot

Vulkan: Rename Resolve* shaders to BlitResolve

In preparation for adding blit functionality. Bug: angleproject:3200 Change-Id: I77b6b6cbe90b26ee23c25edebaa2b130f3c2987a Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/1641626 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: 's avatarTim Van Patten <timvp@google.com> Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
parent 2dd40a44
......@@ -193,6 +193,34 @@
"ba26e079062affec8cd72d48f5c91d21",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/gen_vk_internal_shaders.py":
"3089dcc7ffff60a8803595fd44278f6e",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc":
"f950115a4273ad8e5f24ceb09aa36bdb",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc":
"8c853bb076d55b2e1094dd4b29014626",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000002.inc":
"2cfa7b5415d8b3d89e4bd592086b0baa",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000003.inc":
"32fb163e85b7c61d1fb1b20c00d73d33",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000004.inc":
"f857610fb8b06bb8fd1bf8e0e2a71373",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000005.inc":
"5c9b2fea10b85f92d15de0300502b60c",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000006.inc":
"4b023a0f9a34b041d60d311ffee1006f",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000007.inc":
"37a43a2caaac3290d34c12dc49a6c9cf",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000008.inc":
"9bf352a58405b89729f55169b52dd130",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc":
"954cad0e948e0dcf49cd0a7bb0a12093",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc":
"eba4cde12dfd8859bc5ac6277380cc4c",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc":
"c4c3746af07355763ef3cd854faa8311",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc":
"c6306a1ba9936d5de5e3b0c5f7453c2c",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc":
"e3830b19e45e8516513c9fa23edd9e5b",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000000.inc":
"df5fdc47f0950e3eae3d9491e9c84af7",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/BufferUtils.comp.00000001.inc":
......@@ -337,34 +365,10 @@
"084c1b02964cf2baefcc733b7f4e4786",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc":
"6a2e5e10e686370f3350a96cda2441a0",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000000.inc":
"84fa20e6ba68fb79779a722267a1ad91",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000001.inc":
"83d7ac2143f0cf2c4aee30c19460b83e",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000002.inc":
"0ad619b74d9656525192fe1256ebf9a7",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000003.inc":
"08fb6f2d172844ed477ea9543de4100d",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000004.inc":
"9aa55cb9940e64b7b95d8cbdefdff423",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000005.inc":
"05335cdf088745d86888aecba393bca5",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000006.inc":
"d58c013c101739e4872fa3344a134aaa",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000007.inc":
"53203083fc6c9ca36d6d39c41fc0fee9",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000008.inc":
"bb20b6b10d20c8f38ac434f61cd38312",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000009.inc":
"9345a1e02ad4adfb2abcc9bc72270a2e",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.0000000A.inc":
"940cd724621b6c71c92c2f0ce86a15f2",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.0000000B.inc":
"285e1051de156004be9d0aeaf71d8ac9",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ResolveStencilNoExport.comp.00000000.inc":
"46e731194edd3eca95a8aeade5fea543",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/gen/ResolveStencilNoExport.comp.00000001.inc":
"5f9bbc046387b04be58dbd71988abfc2",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BlitResolve.frag":
"bfdf89388c48f0fb9dd4761c525ce7da",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BlitResolveStencilNoExport.comp":
"bfa9fc38b63aa9c9127f0c4a0fd2ae05",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/BufferUtils.comp":
"0c8c050841543da0d7faca2559212aa8",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ConvertIndex.comp":
......@@ -377,14 +381,10 @@
"7f562c60e5df018b0087ecb8642ac821",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ImageCopy.frag":
"20c83ade1efb48a802dc34ca838a2be6",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/Resolve.frag":
"3994385f9b857445423dc7abd2707554",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/shaders/src/ResolveStencilNoExport.comp":
"645d157257fd8b5315ed56cc12bc94b9",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.cpp":
"bb91c9011878e1603c26e4e915cabcd0",
"4df7fd7369f513162c85a1e6dc1c13c4",
"Vulkan internal shader programs:src/libANGLE/renderer/vulkan/vk_internal_shaders_autogen.h":
"1e4e242530c906e74a6f288d98298780",
"d16caa0d290c34f0a8bf5d95d7220e8b",
"Vulkan internal shader programs:tools/glslang/glslang_validator.exe.sha1":
"9f1f0fc61116a657e065c40f9296e5ab",
"Vulkan internal shader programs:tools/glslang/glslang_validator.sha1":
......
......@@ -893,7 +893,7 @@ angle::Result FramebufferVk::resolve(ContextVk *contextVk,
return angle::Result::Continue;
}
UtilsVk::ResolveParameters params;
UtilsVk::BlitResolveParameters params;
params.srcOffset[0] = srcOffset[0];
params.srcOffset[1] = srcOffset[1];
params.srcExtents[0] = srcFramebufferDimensions.width;
......@@ -919,8 +919,8 @@ angle::Result FramebufferVk::resolve(ContextVk *contextVk,
}
else
{
ANGLE_TRY(utilsVk.colorResolve(contextVk, this, &readRenderTarget->getImage(),
readRenderTarget->getFetchImageView(), params));
ANGLE_TRY(utilsVk.colorBlitResolve(contextVk, this, &readRenderTarget->getImage(),
readRenderTarget->getFetchImageView(), params));
}
}
......@@ -967,15 +967,15 @@ angle::Result FramebufferVk::resolve(ContextVk *contextVk,
vk::ImageView *stencil =
resolveStencilBuffer && hasShaderStencilExport ? &stencilView.get() : nullptr;
ANGLE_TRY(utilsVk.depthStencilResolve(contextVk, this, depthStencilImage, depth,
stencil, params));
ANGLE_TRY(utilsVk.depthStencilBlitResolve(contextVk, this, depthStencilImage, depth,
stencil, params));
}
// If shader stencil export is not present, resolve stencil through a different path.
if (resolveStencilBuffer && !hasShaderStencilExport)
{
ANGLE_TRY(utilsVk.stencilResolveNoShaderExport(contextVk, this, depthStencilImage,
&stencilView.get(), params));
ANGLE_TRY(utilsVk.stencilBlitResolveNoShaderExport(contextVk, this, depthStencilImage,
&stencilView.get(), params));
}
vk::ImageView depthViewObject = depthView.release();
......@@ -989,7 +989,7 @@ angle::Result FramebufferVk::resolve(ContextVk *contextVk,
}
angle::Result FramebufferVk::resolveColorWithCommand(ContextVk *contextVk,
const UtilsVk::ResolveParameters &params,
const UtilsVk::BlitResolveParameters &params,
vk::ImageHelper *srcImage)
{
if (srcImage->isLayoutChangeNecessary(vk::ImageLayout::TransferSrc))
......
......@@ -200,7 +200,7 @@ class FramebufferVk : public FramebufferImpl
// Resolve color with vkCmdResolveImage
angle::Result resolveColorWithCommand(ContextVk *contextVk,
const UtilsVk::ResolveParameters &params,
const UtilsVk::BlitResolveParameters &params,
vk::ImageHelper *srcImage);
WindowSurfaceVk *mBackbuffer;
......
......@@ -84,7 +84,7 @@ class UtilsVk : angle::NonCopyable
uint8_t stencilClearValue;
};
struct ResolveParameters
struct BlitResolveParameters
{
// |srcOffset| and |dstOffset| define the transformation from source to destination.
int srcOffset[2];
......@@ -127,22 +127,22 @@ class UtilsVk : angle::NonCopyable
angle::Result clearFramebuffer(ContextVk *contextVk,
FramebufferVk *framebuffer,
const ClearFramebufferParameters &params);
angle::Result colorResolve(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcView,
const ResolveParameters &params);
angle::Result depthStencilResolve(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcDepthView,
const vk::ImageView *srcStencilView,
const ResolveParameters &params);
angle::Result stencilResolveNoShaderExport(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcStencilView,
const ResolveParameters &params);
angle::Result colorBlitResolve(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcView,
const BlitResolveParameters &params);
angle::Result depthStencilBlitResolve(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcDepthView,
const vk::ImageView *srcStencilView,
const BlitResolveParameters &params);
angle::Result stencilBlitResolveNoShaderExport(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcStencilView,
const BlitResolveParameters &params);
angle::Result copyImage(ContextVk *contextVk,
vk::ImageHelper *dest,
......@@ -212,9 +212,9 @@ class UtilsVk : angle::NonCopyable
uint32_t destDefaultChannelsMask = 0;
};
struct ResolveShaderParams
struct BlitResolveShaderParams
{
// Structure matching PushConstants in Resolve.frag
// Structure matching PushConstants in BlitResolve.frag
int32_t srcExtent[2] = {};
int32_t srcOffset[2] = {};
int32_t destOffset[2] = {};
......@@ -226,9 +226,9 @@ class UtilsVk : angle::NonCopyable
uint32_t flipY = 0;
};
struct ResolveStencilNoExportShaderParams
struct BlitResolveStencilNoExportShaderParams
{
// Structure matching PushConstants in ResolveStencilNoExport.comp
// Structure matching PushConstants in BlitResolveStencilNoExport.comp
int32_t srcExtent[2] = {};
int32_t srcOffset[2] = {};
int32_t srcLayer = 0;
......@@ -242,16 +242,16 @@ class UtilsVk : angle::NonCopyable
enum class Function
{
// Functions implemented in graphics
ImageClear = 0,
ImageCopy = 1,
Resolve = 2,
ImageClear = 0,
ImageCopy = 1,
BlitResolve = 2,
// Functions implemented in compute
ComputeStartIndex = 3, // Special value to separate draw and dispatch functions.
BufferClear = 3,
ConvertIndexBuffer = 4,
ConvertVertexBuffer = 5,
ResolveStencilNoExport = 6,
ComputeStartIndex = 3, // Special value to separate draw and dispatch functions.
BufferClear = 3,
ConvertIndexBuffer = 4,
ConvertVertexBuffer = 5,
BlitResolveStencilNoExport = 6,
InvalidEnum = 7,
EnumCount = 7,
......@@ -291,8 +291,8 @@ class UtilsVk : angle::NonCopyable
angle::Result ensureConvertVertexResourcesInitialized(ContextVk *context);
angle::Result ensureImageClearResourcesInitialized(ContextVk *context);
angle::Result ensureImageCopyResourcesInitialized(ContextVk *context);
angle::Result ensureResolveResourcesInitialized(ContextVk *context);
angle::Result ensureResolveStencilNoExportResourcesInitialized(ContextVk *context);
angle::Result ensureBlitResolveResourcesInitialized(ContextVk *context);
angle::Result ensureBlitResolveStencilNoExportResourcesInitialized(ContextVk *context);
angle::Result startRenderPass(ContextVk *contextVk,
vk::ImageHelper *image,
......@@ -301,14 +301,14 @@ class UtilsVk : angle::NonCopyable
const gl::Rectangle &renderArea,
vk::CommandBuffer **commandBufferOut);
// Resolves either color or depth/stencil, based on which view is given.
angle::Result resolveImpl(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcColorView,
const vk::ImageView *srcDepthView,
const vk::ImageView *srcStencilView,
const ResolveParameters &params);
// Blit/resolves either color or depth/stencil, based on which view is given.
angle::Result blitResolveImpl(ContextVk *contextVk,
FramebufferVk *framebuffer,
vk::ImageHelper *src,
const vk::ImageView *srcColorView,
const vk::ImageView *srcDepthView,
const vk::ImageView *srcStencilView,
const BlitResolveParameters &params);
angle::PackedEnumMap<Function, vk::DescriptorSetLayoutPointerArray> mDescriptorSetLayouts;
angle::PackedEnumMap<Function, vk::BindingPointer<vk::PipelineLayout>> mPipelineLayouts;
......@@ -332,10 +332,10 @@ class UtilsVk : angle::NonCopyable
vk::ShaderProgramHelper mImageCopyPrograms[vk::InternalShader::ImageCopy_frag::kFlagsMask |
vk::InternalShader::ImageCopy_frag::kSrcFormatMask |
vk::InternalShader::ImageCopy_frag::kDestFormatMask];
vk::ShaderProgramHelper mResolvePrograms[vk::InternalShader::Resolve_frag::kFlagsMask |
vk::InternalShader::Resolve_frag::kResolveMask];
vk::ShaderProgramHelper mResolveStencilNoExportPrograms
[vk::InternalShader::ResolveStencilNoExport_comp::kFlagsMask];
vk::ShaderProgramHelper mBlitResolvePrograms[vk::InternalShader::BlitResolve_frag::kFlagsMask |
vk::InternalShader::BlitResolve_frag::kBlitMask];
vk::ShaderProgramHelper mBlitResolveStencilNoExportPrograms
[vk::InternalShader::BlitResolveStencilNoExport_comp::kFlagsMask];
};
} // namespace rx
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000000[] = {
const uint32_t kBlitResolve_frag_00000000[] = {
0x07230203,0x00010000,0x00080007,0x000000bd,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000e000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000007f,0x00000087,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000001[] = {
const uint32_t kBlitResolve_frag_00000001[] = {
0x07230203,0x00010000,0x00080007,0x000000c4,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000e000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000086,0x0000008e,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000002[] = {
const uint32_t kBlitResolve_frag_00000002[] = {
0x07230203,0x00010000,0x00080007,0x000000b9,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000e000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000007b,0x00000083,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000003[] = {
const uint32_t kBlitResolve_frag_00000003[] = {
0x07230203,0x00010000,0x00080007,0x000000c0,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000e000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000082,0x0000008a,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000004[] = {
const uint32_t kBlitResolve_frag_00000004[] = {
0x07230203,0x00010000,0x00080007,0x000000b9,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000e000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000007b,0x00000083,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000005[] = {
const uint32_t kBlitResolve_frag_00000005[] = {
0x07230203,0x00010000,0x00080007,0x000000c0,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000e000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000082,0x0000008a,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000006[] = {
const uint32_t kBlitResolve_frag_00000006[] = {
0x07230203,0x00010000,0x00080007,0x0000005c,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x0000005a,0x00030010,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000007[] = {
const uint32_t kBlitResolve_frag_00000007[] = {
0x07230203,0x00010000,0x00080007,0x00000064,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0007000f,0x00000004,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00000062,0x00030010,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000008[] = {
const uint32_t kBlitResolve_frag_00000008[] = {
0x07230203,0x00010000,0x00080007,0x0000005d,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_00000009[] = {
const uint32_t kBlitResolve_frag_00000009[] = {
0x07230203,0x00010000,0x00080007,0x00000065,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_0000000A[] = {
const uint32_t kBlitResolve_frag_0000000A[] = {
0x07230203,0x00010000,0x00080007,0x0000006d,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
......
// 7.12.3226
#pragma once
const uint32_t kResolve_frag_0000000B[] = {
const uint32_t kBlitResolve_frag_0000000B[] = {
0x07230203,0x00010000,0x00080007,0x0000007a,0x00000000,0x00020011,0x00000001,0x00020011,
0x00001395,0x0009000a,0x5f565053,0x5f545845,0x64616873,0x735f7265,0x636e6574,0x655f6c69,
0x726f7078,0x00000074,0x0006000b,0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,
......
// 7.12.3226
#pragma once
const uint32_t kResolveStencilNoExport_comp_00000000[] = {
const uint32_t kBlitResolveStencilNoExport_comp_00000000[] = {
0x07230203,0x00010000,0x00080007,0x0000009f,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00060010,0x00000004,
......
// 7.12.3226
#pragma once
const uint32_t kResolveStencilNoExport_comp_00000001[] = {
const uint32_t kBlitResolveStencilNoExport_comp_00000001[] = {
0x07230203,0x00010000,0x00080007,0x000000a6,0x00000000,0x00020011,0x00000001,0x0006000b,
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x0006000f,0x00000005,0x00000004,0x6e69616d,0x00000000,0x0000000d,0x00060010,0x00000004,
......
......@@ -3,42 +3,42 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Resolve.frag: Resolve multisampled color or depth/stencil images.
// BlitResolve.frag: Resolve multisampled color or depth/stencil images.
#version 450 core
#define MAKE_SRC_RESOURCE(prefix, type) prefix ## type
#if ResolveColorFloat
#if BlitColorFloat
#define IsResolveColor 1
#define IsBlitColor 1
#define COLOR_SRC_RESOURCE(type) type
#define ColorType vec4
#elif ResolveColorInt
#elif BlitColorInt
#define IsResolveColor 1
#define IsBlitColor 1
#define COLOR_SRC_RESOURCE(type) MAKE_SRC_RESOURCE(i, type)
#define ColorType ivec4
#elif ResolveColorUint
#elif BlitColorUint
#define IsResolveColor 1
#define IsBlitColor 1
#define COLOR_SRC_RESOURCE(type) MAKE_SRC_RESOURCE(u, type)
#define ColorType uvec4
#elif ResolveDepth
#elif BlitDepth
#define IsResolveDepth 1
#define IsBlitDepth 1
#elif ResolveStencil
#elif BlitStencil
#define IsResolveStencil 1
#define IsBlitStencil 1
#elif ResolveDepthStencil
#elif BlitDepthStencil
#define IsResolveDepth 1
#define IsResolveStencil 1
#define IsBlitDepth 1
#define IsBlitStencil 1
#else
......@@ -46,12 +46,12 @@
#endif
#if IsResolveColor && (IsResolveDepth || IsResolveStencil)
#if IsBlitColor && (IsBlitDepth || IsBlitStencil)
#error "The shader doesn't resolve color and depth/stencil at the same time."
#endif
#extension GL_EXT_samplerless_texture_functions : require
#if IsResolveStencil
#if IsBlitStencil
#extension GL_ARB_shader_stencil_export : require
#endif
......@@ -84,7 +84,7 @@ layout(push_constant) uniform PushConstants {
bool flipY;
} params;
#if IsResolveColor
#if IsBlitColor
layout(set = 0, binding = 0) uniform COLOR_SRC_RESOURCE(SRC_RESOURCE_NAME) color;
layout(location = 0) out ColorType colorOut0;
......@@ -96,10 +96,10 @@ layout(location = 5) out ColorType colorOut5;
layout(location = 6) out ColorType colorOut6;
layout(location = 7) out ColorType colorOut7;
#endif
#if IsResolveDepth
#if IsBlitDepth
layout(set = 0, binding = 0) uniform DEPTH_SRC_RESOURCE(SRC_RESOURCE_NAME) depth;
#endif
#if IsResolveStencil
#if IsBlitStencil
layout(set = 0, binding = 1) uniform STENCIL_SRC_RESOURCE(SRC_RESOURCE_NAME) stencil;
#endif
......@@ -121,7 +121,7 @@ void main()
bool isWithinSrcBounds = any(lessThanEqual(ivec2(0), srcImageCoords)) &&
any(lessThan(srcImageCoords, params.srcExtent));
#if IsResolveColor
#if IsBlitColor
ColorType colorValue = ColorType(0, 0, 0, 1);
if (isWithinSrcBounds)
{
......@@ -170,12 +170,12 @@ void main()
{
colorOut7 = colorValue;
}
#endif // IsResolveColor
#endif // IsBlitColor
// Note: always resolve depth/stencil using sample 0. GLES3 gives us freedom in choosing how
// to resolve depth/stencil images.
#if IsResolveDepth
#if IsBlitDepth
float depthValue = 0;
if (isWithinSrcBounds)
{
......@@ -183,9 +183,9 @@ void main()
}
gl_FragDepth = depthValue;
#endif // IsResolveDepth
#endif // IsBlitDepth
#if IsResolveStencil
#if IsBlitStencil
uint stencilValue = 0;
if (isWithinSrcBounds)
{
......@@ -194,5 +194,5 @@ void main()
}
gl_FragStencilRefARB = int(stencilValue);
#endif // IsResolveStencil
#endif // IsBlitStencil
}
......@@ -4,17 +4,17 @@
"Use of this source code is governed by a BSD-style license that can be",
"found in the LICENSE file.",
"",
"Resolve.frag.json: Build parameters for Resolve.frag."
"BlitResolve.frag.json: Build parameters for BlitResolve.frag."
],
"Flags": [
"SrcIsArray"
],
"Resolve": [
"ResolveColorFloat",
"ResolveColorInt",
"ResolveColorUint",
"ResolveDepth",
"ResolveStencil",
"ResolveDepthStencil"
"Blit": [
"BlitColorFloat",
"BlitColorInt",
"BlitColorUint",
"BlitDepth",
"BlitStencil",
"BlitDepthStencil"
]
}
......@@ -3,7 +3,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// ResolveStencilNoExport.comp: Resolve multisampled stencil images into a buffer. This is used
// BlitResolveStencilNoExport.comp: Resolve multisampled stencil images into a buffer. This is used
// where VK_EXT_shader_stencil_export is not available, to output the resolved stencil into a
// temporary buffer, which is then copied into the stencil aspect of the final image.
......
......@@ -4,7 +4,7 @@
"Use of this source code is governed by a BSD-style license that can be",
"found in the LICENSE file.",
"",
"ResolveStencilNoExport.frag.comp: Build parameters for ResolveStencilNoExport.comp."
"BlitResolveStencilNoExport.frag.comp: Build parameters for BlitResolveStencilNoExport.comp."
],
"Flags": [
"SrcIsArray"
......
......@@ -16,6 +16,20 @@ namespace vk
{
namespace
{
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000002.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000003.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000004.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000005.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000006.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000007.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000008.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.00000009.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000A.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolve.frag.0000000B.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc"
#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"
......@@ -88,20 +102,6 @@ namespace
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000013.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000014.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ImageCopy.frag.00000015.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000001.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000002.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000003.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000004.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000005.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000006.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000007.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000008.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.00000009.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.0000000A.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/Resolve.frag.0000000B.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ResolveStencilNoExport.comp.00000000.inc"
#include "libANGLE/renderer/vulkan/shaders/gen/ResolveStencilNoExport.comp.00000001.inc"
// This is SPIR-V binary blob and the size.
struct ShaderBlob
......@@ -110,6 +110,24 @@ struct ShaderBlob
size_t codeSize;
};
constexpr ShaderBlob kBlitResolve_frag_shaders[] = {
{kBlitResolve_frag_00000000, sizeof(kBlitResolve_frag_00000000)},
{kBlitResolve_frag_00000001, sizeof(kBlitResolve_frag_00000001)},
{kBlitResolve_frag_00000002, sizeof(kBlitResolve_frag_00000002)},
{kBlitResolve_frag_00000003, sizeof(kBlitResolve_frag_00000003)},
{kBlitResolve_frag_00000004, sizeof(kBlitResolve_frag_00000004)},
{kBlitResolve_frag_00000005, sizeof(kBlitResolve_frag_00000005)},
{kBlitResolve_frag_00000006, sizeof(kBlitResolve_frag_00000006)},
{kBlitResolve_frag_00000007, sizeof(kBlitResolve_frag_00000007)},
{kBlitResolve_frag_00000008, sizeof(kBlitResolve_frag_00000008)},
{kBlitResolve_frag_00000009, sizeof(kBlitResolve_frag_00000009)},
{kBlitResolve_frag_0000000A, sizeof(kBlitResolve_frag_0000000A)},
{kBlitResolve_frag_0000000B, sizeof(kBlitResolve_frag_0000000B)},
};
constexpr ShaderBlob kBlitResolveStencilNoExport_comp_shaders[] = {
{kBlitResolveStencilNoExport_comp_00000000, sizeof(kBlitResolveStencilNoExport_comp_00000000)},
{kBlitResolveStencilNoExport_comp_00000001, sizeof(kBlitResolveStencilNoExport_comp_00000001)},
};
constexpr ShaderBlob kBufferUtils_comp_shaders[] = {
{kBufferUtils_comp_00000000, sizeof(kBufferUtils_comp_00000000)},
{kBufferUtils_comp_00000001, sizeof(kBufferUtils_comp_00000001)},
......@@ -198,24 +216,6 @@ constexpr ShaderBlob kImageCopy_frag_shaders[] = {
{kImageCopy_frag_00000014, sizeof(kImageCopy_frag_00000014)},
{kImageCopy_frag_00000015, sizeof(kImageCopy_frag_00000015)},
};
constexpr ShaderBlob kResolve_frag_shaders[] = {
{kResolve_frag_00000000, sizeof(kResolve_frag_00000000)},
{kResolve_frag_00000001, sizeof(kResolve_frag_00000001)},
{kResolve_frag_00000002, sizeof(kResolve_frag_00000002)},
{kResolve_frag_00000003, sizeof(kResolve_frag_00000003)},
{kResolve_frag_00000004, sizeof(kResolve_frag_00000004)},
{kResolve_frag_00000005, sizeof(kResolve_frag_00000005)},
{kResolve_frag_00000006, sizeof(kResolve_frag_00000006)},
{kResolve_frag_00000007, sizeof(kResolve_frag_00000007)},
{kResolve_frag_00000008, sizeof(kResolve_frag_00000008)},
{kResolve_frag_00000009, sizeof(kResolve_frag_00000009)},
{kResolve_frag_0000000A, sizeof(kResolve_frag_0000000A)},
{kResolve_frag_0000000B, sizeof(kResolve_frag_0000000B)},
};
constexpr ShaderBlob kResolveStencilNoExport_comp_shaders[] = {
{kResolveStencilNoExport_comp_00000000, sizeof(kResolveStencilNoExport_comp_00000000)},
{kResolveStencilNoExport_comp_00000001, sizeof(kResolveStencilNoExport_comp_00000001)},
};
angle::Result GetShader(Context *context,
RefCounted<ShaderAndSerial> *shaders,
......@@ -247,40 +247,58 @@ ShaderLibrary::~ShaderLibrary() {}
void ShaderLibrary::destroy(VkDevice device)
{
for (RefCounted<ShaderAndSerial> &shader : mBufferUtils_comp_shaders)
for (RefCounted<ShaderAndSerial> &shader : mBlitResolve_frag_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mConvertIndex_comp_shaders)
for (RefCounted<ShaderAndSerial> &shader : mBlitResolveStencilNoExport_comp_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mConvertVertex_comp_shaders)
for (RefCounted<ShaderAndSerial> &shader : mBufferUtils_comp_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mFullScreenQuad_vert_shaders)
for (RefCounted<ShaderAndSerial> &shader : mConvertIndex_comp_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mImageClear_frag_shaders)
for (RefCounted<ShaderAndSerial> &shader : mConvertVertex_comp_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mImageCopy_frag_shaders)
for (RefCounted<ShaderAndSerial> &shader : mFullScreenQuad_vert_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mResolve_frag_shaders)
for (RefCounted<ShaderAndSerial> &shader : mImageClear_frag_shaders)
{
shader.get().destroy(device);
}
for (RefCounted<ShaderAndSerial> &shader : mResolveStencilNoExport_comp_shaders)
for (RefCounted<ShaderAndSerial> &shader : mImageCopy_frag_shaders)
{
shader.get().destroy(device);
}
}
angle::Result ShaderLibrary::getBlitResolve_frag(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
{
return GetShader(context, mBlitResolve_frag_shaders, kBlitResolve_frag_shaders,
ArraySize(kBlitResolve_frag_shaders), shaderFlags, shaderOut);
}
angle::Result ShaderLibrary::getBlitResolveStencilNoExport_comp(
Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
{
return GetShader(context, mBlitResolveStencilNoExport_comp_shaders,
kBlitResolveStencilNoExport_comp_shaders,
ArraySize(kBlitResolveStencilNoExport_comp_shaders), shaderFlags, shaderOut);
}
angle::Result ShaderLibrary::getBufferUtils_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
......@@ -329,22 +347,5 @@ angle::Result ShaderLibrary::getImageCopy_frag(Context *context,
ArraySize(kImageCopy_frag_shaders), shaderFlags, shaderOut);
}
angle::Result ShaderLibrary::getResolve_frag(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
{
return GetShader(context, mResolve_frag_shaders, kResolve_frag_shaders,
ArraySize(kResolve_frag_shaders), shaderFlags, shaderOut);
}
angle::Result ShaderLibrary::getResolveStencilNoExport_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut)
{
return GetShader(context, mResolveStencilNoExport_comp_shaders,
kResolveStencilNoExport_comp_shaders,
ArraySize(kResolveStencilNoExport_comp_shaders), shaderFlags, shaderOut);
}
} // namespace vk
} // namespace rx
......@@ -9,6 +9,20 @@
# List of generated shaders for inclusion in ANGLE's build process.
angle_vulkan_internal_shaders = [
"shaders/gen/BlitResolve.frag.00000000.inc",
"shaders/gen/BlitResolve.frag.00000001.inc",
"shaders/gen/BlitResolve.frag.00000002.inc",
"shaders/gen/BlitResolve.frag.00000003.inc",
"shaders/gen/BlitResolve.frag.00000004.inc",
"shaders/gen/BlitResolve.frag.00000005.inc",
"shaders/gen/BlitResolve.frag.00000006.inc",
"shaders/gen/BlitResolve.frag.00000007.inc",
"shaders/gen/BlitResolve.frag.00000008.inc",
"shaders/gen/BlitResolve.frag.00000009.inc",
"shaders/gen/BlitResolve.frag.0000000A.inc",
"shaders/gen/BlitResolve.frag.0000000B.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000000.inc",
"shaders/gen/BlitResolveStencilNoExport.comp.00000001.inc",
"shaders/gen/BufferUtils.comp.00000000.inc",
"shaders/gen/BufferUtils.comp.00000001.inc",
"shaders/gen/BufferUtils.comp.00000002.inc",
......@@ -81,18 +95,4 @@ angle_vulkan_internal_shaders = [
"shaders/gen/ImageCopy.frag.00000013.inc",
"shaders/gen/ImageCopy.frag.00000014.inc",
"shaders/gen/ImageCopy.frag.00000015.inc",
"shaders/gen/Resolve.frag.00000000.inc",
"shaders/gen/Resolve.frag.00000001.inc",
"shaders/gen/Resolve.frag.00000002.inc",
"shaders/gen/Resolve.frag.00000003.inc",
"shaders/gen/Resolve.frag.00000004.inc",
"shaders/gen/Resolve.frag.00000005.inc",
"shaders/gen/Resolve.frag.00000006.inc",
"shaders/gen/Resolve.frag.00000007.inc",
"shaders/gen/Resolve.frag.00000008.inc",
"shaders/gen/Resolve.frag.00000009.inc",
"shaders/gen/Resolve.frag.0000000A.inc",
"shaders/gen/Resolve.frag.0000000B.inc",
"shaders/gen/ResolveStencilNoExport.comp.00000000.inc",
"shaders/gen/ResolveStencilNoExport.comp.00000001.inc",
]
......@@ -19,6 +19,34 @@ namespace vk
{
namespace InternalShader
{
namespace BlitResolve_frag
{
enum flags
{
kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001,
};
enum Blit
{
kBlitColorFloat = 0x00000000,
kBlitColorInt = 0x00000002,
kBlitColorUint = 0x00000004,
kBlitDepth = 0x00000006,
kBlitStencil = 0x00000008,
kBlitDepthStencil = 0x0000000A,
kBlitMask = 0x0000000E,
};
} // namespace BlitResolve_frag
namespace BlitResolveStencilNoExport_comp
{
enum flags
{
kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001,
};
} // namespace BlitResolveStencilNoExport_comp
namespace BufferUtils_comp
{
enum flags
......@@ -114,34 +142,6 @@ enum DestFormat
};
} // namespace ImageCopy_frag
namespace Resolve_frag
{
enum flags
{
kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001,
};
enum Resolve
{
kResolveColorFloat = 0x00000000,
kResolveColorInt = 0x00000002,
kResolveColorUint = 0x00000004,
kResolveDepth = 0x00000006,
kResolveStencil = 0x00000008,
kResolveDepthStencil = 0x0000000A,
kResolveMask = 0x0000000E,
};
} // namespace Resolve_frag
namespace ResolveStencilNoExport_comp
{
enum flags
{
kSrcIsArray = 0x00000001,
kFlagsMask = 0x00000001,
};
} // namespace ResolveStencilNoExport_comp
} // namespace InternalShader
class ShaderLibrary final : angle::NonCopyable
......@@ -152,6 +152,12 @@ class ShaderLibrary final : angle::NonCopyable
void destroy(VkDevice device);
angle::Result getBlitResolve_frag(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
angle::Result getBlitResolveStencilNoExport_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
angle::Result getBufferUtils_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
......@@ -170,15 +176,14 @@ class ShaderLibrary final : angle::NonCopyable
angle::Result getImageCopy_frag(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
angle::Result getResolve_frag(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
angle::Result getResolveStencilNoExport_comp(Context *context,
uint32_t shaderFlags,
RefCounted<ShaderAndSerial> **shaderOut);
private:
RefCounted<ShaderAndSerial>
mBlitResolve_frag_shaders[InternalShader::BlitResolve_frag::kFlagsMask |
InternalShader::BlitResolve_frag::kBlitMask];
RefCounted<ShaderAndSerial> mBlitResolveStencilNoExport_comp_shaders
[InternalShader::BlitResolveStencilNoExport_comp::kFlagsMask];
RefCounted<ShaderAndSerial>
mBufferUtils_comp_shaders[InternalShader::BufferUtils_comp::kFlagsMask |
InternalShader::BufferUtils_comp::kFunctionMask |
InternalShader::BufferUtils_comp::kFormatMask];
......@@ -194,10 +199,6 @@ class ShaderLibrary final : angle::NonCopyable
mImageCopy_frag_shaders[InternalShader::ImageCopy_frag::kFlagsMask |
InternalShader::ImageCopy_frag::kSrcFormatMask |
InternalShader::ImageCopy_frag::kDestFormatMask];
RefCounted<ShaderAndSerial> mResolve_frag_shaders[InternalShader::Resolve_frag::kFlagsMask |
InternalShader::Resolve_frag::kResolveMask];
RefCounted<ShaderAndSerial> mResolveStencilNoExport_comp_shaders
[InternalShader::ResolveStencilNoExport_comp::kFlagsMask];
};
} // namespace vk
} // namespace rx
......
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