Hash :
cc5f7989
Author :
Date :
2020-11-19T07:59:01
Vulkan: Support gl_SampleMask with non-const index
Add support for access to gl_SampleMask or gl_SampleMaskIn
with non-constant index. Replace gl_SampleMask with
ANGLESampleMask and reassign ANGLESampleMask
to gl_SampleMask in the end.
Bug: angleproject:3588
Tests: dEQP-GLES31.functional.shaders.sample_variables.sample_mask.
discard_half_per_pixel.*
discard_half_per_sample.*
Change-Id: Ie668c3ccf4d40352574db57f5e43b2f17ef6d8b8
Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2477908
Commit-Queue: Mohan Maiya <m.maiya@samsung.com>
Reviewed-by: Shahbaz Youssefi <syoussefi@chromium.org>
//
// Copyright 2020 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.
//
// RunAtTheBeginningOfShader.cpp: Add code to be run at the beginning of the shader.
// void main() { body }
// =>
// void main()
// {
// codeToRun
// body
// }
//
#include "compiler/translator/tree_util/RunAtTheBeginningOfShader.h"
#include "compiler/translator/Compiler.h"
#include "compiler/translator/IntermNode.h"
#include "compiler/translator/StaticType.h"
#include "compiler/translator/SymbolTable.h"
#include "compiler/translator/tree_util/FindMain.h"
#include "compiler/translator/tree_util/IntermNode_util.h"
#include "compiler/translator/tree_util/IntermTraverse.h"
namespace sh
{
bool RunAtTheBeginningOfShader(TCompiler *compiler, TIntermBlock *root, TIntermNode *codeToRun)
{
TIntermFunctionDefinition *main = FindMain(root);
main->getBody()->insertStatement(0, codeToRun);
return compiler->validateAST(root);
}
} // namespace sh