blob: 9d13c5d6ce568a8e3a7e1f13d65ef8a5c05720cf [file] [log] [blame]
/*------------------------------------------------------------------------
* Vulkan Conformance Tests
* ------------------------
*
* Copyright (c) 2015 The Khronos Group Inc.
* Copyright (c) 2015 Intel Corporation
*
* 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 Dynamic State Tests
*//*--------------------------------------------------------------------*/
#include "vktDynamicStateTests.hpp"
#include "vktDynamicStateVPTests.hpp"
#include "vktDynamicStateRSTests.hpp"
#include "vktDynamicStateCBTests.hpp"
#include "vktDynamicStateDSTests.hpp"
#include "vktDynamicStateGeneralTests.hpp"
#include "vktDynamicStateComputeTests.hpp"
#include "vktDynamicStateInheritanceTests.hpp"
#include "vktTestGroupUtil.hpp"
namespace vkt
{
namespace DynamicState
{
namespace
{
void createChildren (tcu::TestCaseGroup* group, vk::PipelineConstructionType pipelineConstructionType)
{
tcu::TestContext& testCtx = group->getTestContext();
group->addChild(new DynamicStateVPTests (testCtx, pipelineConstructionType));
group->addChild(new DynamicStateRSTests (testCtx, pipelineConstructionType));
group->addChild(new DynamicStateCBTests (testCtx, pipelineConstructionType));
group->addChild(new DynamicStateDSTests (testCtx, pipelineConstructionType));
group->addChild(new DynamicStateGeneralTests (testCtx, pipelineConstructionType));
group->addChild(new DynamicStateInheritanceTests (testCtx, pipelineConstructionType));
if (pipelineConstructionType == vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC)
group->addChild(createDynamicStateComputeTests (testCtx));
}
static void cleanupGroup(tcu::TestCaseGroup*, vk::PipelineConstructionType)
{
// Destroy singleton objects.
cleanupDevice();
}
} // anonymous
tcu::TestCaseGroup* createTests (tcu::TestContext& testCtx)
{
de::MovePtr<tcu::TestCaseGroup> monolithicGroup (createTestGroup(testCtx, "monolithic", "Monolithic pipeline tests", createChildren, vk::PIPELINE_CONSTRUCTION_TYPE_MONOLITHIC, cleanupGroup));
de::MovePtr<tcu::TestCaseGroup> pipelineLibraryGroup (createTestGroup(testCtx, "pipeline_library", "Graphics pipeline library tests", createChildren, vk::PIPELINE_CONSTRUCTION_TYPE_LINK_TIME_OPTIMIZED_LIBRARY, cleanupGroup));
de::MovePtr<tcu::TestCaseGroup> fastLinkedLibraryGroup (createTestGroup(testCtx, "fast_linked_library", "Fast linked graphics pipeline library tests", createChildren, vk::PIPELINE_CONSTRUCTION_TYPE_FAST_LINKED_LIBRARY, cleanupGroup));
de::MovePtr<tcu::TestCaseGroup> mainGroup(new tcu::TestCaseGroup(testCtx, "dynamic_state", "Dynamic State Tests"));
mainGroup->addChild(monolithicGroup.release());
mainGroup->addChild(pipelineLibraryGroup.release());
mainGroup->addChild(fastLinkedLibraryGroup.release());
return mainGroup.release();
}
} // DynamicState
} // vkt