blob: 9abd4829cdf5797b30ab3811d3ed53d24adbfc86 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#pragma once
#include <memory>
#include "flutter/fml/macros.h"
#include "flutter/fml/time/time_delta.h"
#include "flutter/testing/testing.h"
#include "impeller/core/device_buffer.h"
#include "impeller/geometry/scalar.h"
#include "impeller/playground/playground.h"
namespace impeller {
class ComputePlaygroundTest
: public Playground,
public ::testing::TestWithParam<PlaygroundBackend> {
public:
ComputePlaygroundTest();
virtual ~ComputePlaygroundTest();
void SetUp() override;
void TearDown() override;
// |Playground|
std::unique_ptr<fml::Mapping> OpenAssetAsMapping(
std::string asset_name) const override;
std::shared_ptr<RuntimeStage> OpenAssetAsRuntimeStage(
const char* asset_name) const;
// |Playground|
std::string GetWindowTitle() const override;
template <typename T>
std::shared_ptr<DeviceBuffer> CreateHostVisibleDeviceBuffer(
std::shared_ptr<Context> context,
const std::string& label) {
DeviceBufferDescriptor desc;
desc.storage_mode = StorageMode::kHostVisible;
desc.size = sizeof(T);
auto buffer = context->GetResourceAllocator()->CreateBuffer(desc);
buffer->SetLabel(label);
return buffer;
}
private:
fml::TimeDelta start_time_;
FML_DISALLOW_COPY_AND_ASSIGN(ComputePlaygroundTest);
};
#define INSTANTIATE_COMPUTE_SUITE(playground) \
INSTANTIATE_TEST_SUITE_P( \
Compute, playground, \
::testing::Values(PlaygroundBackend::kMetal, \
PlaygroundBackend::kVulkan), \
[](const ::testing::TestParamInfo<ComputePlaygroundTest::ParamType>& \
info) { return PlaygroundBackendToString(info.param); });
} // namespace impeller