Hash :
7df7fc7f
Author :
Date :
2021-06-20T00:05:28
Tests: Add support for --renderdoc This change adds support for a new flag namely `--renderdoc` to end2end and deqp tests. With this flag, each test automatically starts and ends a frame capture in renderdoc, working around an issue where renderdoc refuses to capture a test frame that doesn't start or end with a swap. With end2end tests, the capture starts before test set up, and ends after test tear down. With deqp tests, it starts before init, ends and restarts after each test iteration and ends after deinit. Bug: angleproject:6072 Change-Id: Ib41b816aff121bf922d9147044cc363c33a62181 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2971835 Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org> Reviewed-by: Cody Northrop <cnorthrop@google.com> Reviewed-by: Jamie Madill <jmadill@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
/*-------------------------------------------------------------------------
* drawElements Quality Program Tester Core
* ----------------------------------------
*
* Copyright 2014 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/ /*!
* \file
* \brief Generic main().
*/ /*--------------------------------------------------------------------*/
#ifndef TCU_RANDOM_ORDER_EXECUTOR_H_
#define TCU_RANDOM_ORDER_EXECUTOR_H_
#include "deUniquePtr.hpp"
#include "tcuTestHierarchyIterator.hpp"
#include "tests/test_utils/RenderDoc.h"
namespace tcu
{
class RandomOrderExecutor
{
public:
RandomOrderExecutor(TestPackageRoot &root, TestContext &testCtx, bool enableRenderDocCapture);
~RandomOrderExecutor(void);
TestStatus execute(const std::string &path);
private:
void pruneStack(size_t newStackSize);
TestCase *seekToCase(const std::string &path);
TestStatus executeInner(TestCase *testCase, const std::string &casePath);
struct NodeStackEntry
{
TestNode *node;
std::vector<TestNode *> children;
NodeStackEntry(void) : node(DE_NULL) {}
NodeStackEntry(TestNode *node_) : node(node_) {}
};
TestContext &m_testCtx;
DefaultHierarchyInflater m_inflater;
std::vector<NodeStackEntry> m_nodeStack;
de::MovePtr<TestCaseExecutor> m_caseExecutor;
RenderDoc mRenderDoc;
};
} // namespace tcu
#endif // TCU_RANDOM_ORDER_EXECUTOR_H_