chromium/third_party/angle/src/libANGLE/renderer/vulkan/shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc

// GENERATED FILE - DO NOT EDIT.
// Generated by gen_vk_internal_shaders.py.
//
// 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.
//
// shaders/gen/BlitResolveStencilNoExport.comp.00000002.inc:
//   Pre-generated shader for the ANGLE Vulkan back-end.

#pragma once
constexpr uint8_t kBlitResolveStencilNoExport_comp_00000002[] =;

// Generated from:
//
// #version 450 core
//
// #extension GL_EXT_samplerless_texture_functions : require
//
// layout(local_size_x = 8, local_size_y = 8, local_size_z = 1)in;
//
// layout(push_constant)uniform PushConstants {
//
//             ivec2 offset;
//     vec2 stretch;
//     vec2 invSrcExtent;
//     int srcLayer;
//     int srcWidth;
//
//     ivec4 blitArea;
//     int destPitch;
//
//     bool flipX;
//     bool flipY;
//     bool rotateXY;
// } params;
//
// layout(set = 0, binding = 0)buffer dst
// {
//
//     uint destData[];
// };
//
// layout(set = 0, binding = 1)uniform utexture2DMS stencil;
//
// void main()
// {
//     ivec2 destSubImageCoords = ivec2(gl_GlobalInvocationID . x * 4, gl_GlobalInvocationID . y);
//     if(any(lessThanEqual(params . blitArea . zw, destSubImageCoords)))
//     {
//         return;
//     }
//
//     destSubImageCoords += params . blitArea . xy;
//             ivec2 srcImageCoords = ivec2(destSubImageCoords);
//
//     srcImageCoords -= params . offset;
//
//     if(params . flipX)
//         srcImageCoords . x = - srcImageCoords . x;
//     if(params . flipY)
//         srcImageCoords . y = - srcImageCoords . y;
//     if(params . rotateXY)
//         srcImageCoords . xy = srcImageCoords . yx;
//
//     int xDir = params . flipX ? - 1 : 1;
//
//     uint outStencils = 0;
//
//     for(int i = 0;i < 4;++ i)
//     {
//
//         if(srcImageCoords . x >= 0 && srcImageCoords . x < params . srcWidth)
//         {
//
//             uint stencilValue = texelFetch(stencil, srcImageCoords, 0). x;
//
//             outStencils |=(stencilValue & 0xFF)<<(i * 8);
//
//         }
//
//         srcImageCoords . x += xDir;
//     }
//
//     destData[gl_GlobalInvocationID . y * params . destPitch + gl_GlobalInvocationID . x]= outStencils;
// }