66 lines
2.1 KiB
C++
66 lines
2.1 KiB
C++
// Copyright 2022 The SwiftShader Authors. All Rights Reserved.
|
|
//
|
|
// 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.
|
|
|
|
#ifndef sw_SwiftConfig_hpp
|
|
#define sw_SwiftConfig_hpp
|
|
|
|
#include <stdint.h>
|
|
|
|
#include "Reactor/Nucleus.hpp"
|
|
#include "marl/scheduler.h"
|
|
|
|
namespace sw {
|
|
struct Configuration
|
|
{
|
|
enum class AffinityPolicy : int
|
|
{
|
|
// A thread has affinity with any core in the affinity mask.
|
|
AnyOf = 0,
|
|
// A thread has affinity with a single core in the affinity mask.
|
|
OneOf = 1,
|
|
};
|
|
|
|
// -------- [Processor] --------
|
|
// Number of threads used by the scheduler. A thread count of 0 is
|
|
// interpreted as min(cpu_cores_available, 16).
|
|
uint32_t threadCount = 0;
|
|
|
|
// Core affinity and affinity policy used by the scheduler.
|
|
uint64_t affinityMask = 0xffffffffffffffff;
|
|
AffinityPolicy affinityPolicy = AffinityPolicy::AnyOf;
|
|
|
|
// -------- [Debug] --------
|
|
// Directory where ASM listings of JITted code will be emitted.
|
|
std::string asmEmitDir = "";
|
|
|
|
// -------- [Profiler] --------
|
|
// Whether SPIR-V profiling is enabled.
|
|
bool enableSpirvProfiling = false;
|
|
// Period controlling how often SPIR-V profiles are reported.
|
|
uint64_t spvProfilingReportPeriodMs = 1000;
|
|
// Directory where SPIR-V profile reports will be written.
|
|
std::string spvProfilingReportDir = "";
|
|
};
|
|
|
|
// Get the configuration as parsed from a configuration file.
|
|
const Configuration &getConfiguration();
|
|
|
|
// Get the scheduler configuration given a configuration.
|
|
marl::Scheduler::Config getSchedulerConfiguration(const Configuration &config);
|
|
|
|
// Get the debug configuration for Reactor given a configuration.
|
|
rr::DebugConfig getReactorDebugConfig(const Configuration &config);
|
|
} // namespace sw
|
|
|
|
#endif |