2018-06-13 02:33:03 +08:00
|
|
|
/*
|
2019-03-26 18:59:46 +08:00
|
|
|
* Copyright (C) 2018-2019 Intel Corporation
|
2018-06-13 02:33:03 +08:00
|
|
|
*
|
2018-09-18 15:11:08 +08:00
|
|
|
* SPDX-License-Identifier: MIT
|
2018-06-13 02:33:03 +08:00
|
|
|
*
|
|
|
|
*/
|
2018-09-18 15:11:08 +08:00
|
|
|
|
2018-06-13 02:33:03 +08:00
|
|
|
#pragma once
|
2018-07-02 00:44:29 +08:00
|
|
|
#include <memory>
|
2018-06-13 02:33:03 +08:00
|
|
|
#include <string>
|
|
|
|
|
2019-03-26 18:59:46 +08:00
|
|
|
namespace NEO {
|
2018-06-13 02:33:03 +08:00
|
|
|
|
|
|
|
struct MultiDispatchInfo;
|
|
|
|
class SettingsReader;
|
|
|
|
|
|
|
|
class AubSubCaptureManager {
|
|
|
|
public:
|
|
|
|
enum class SubCaptureMode {
|
|
|
|
Off = 0, //subcapture off
|
|
|
|
Filter, //subcapture kernel specified by filter (static regkey)
|
|
|
|
Toggle //toggle subcapture on/off (dynamic regkey)
|
|
|
|
} subCaptureMode = SubCaptureMode::Off;
|
|
|
|
|
|
|
|
struct SubCaptureFilter {
|
|
|
|
std::string dumpKernelName = "";
|
2018-07-26 17:35:13 +08:00
|
|
|
uint32_t dumpNamedKernelStartIdx = 0;
|
|
|
|
uint32_t dumpNamedKernelEndIdx = static_cast<uint32_t>(-1);
|
2018-06-13 02:33:03 +08:00
|
|
|
uint32_t dumpKernelStartIdx = 0;
|
|
|
|
uint32_t dumpKernelEndIdx = static_cast<uint32_t>(-1);
|
|
|
|
} subCaptureFilter;
|
|
|
|
|
|
|
|
inline bool isSubCaptureMode() const {
|
|
|
|
return subCaptureMode > SubCaptureMode::Off;
|
|
|
|
}
|
2018-07-09 17:31:36 +08:00
|
|
|
|
2018-06-13 02:33:03 +08:00
|
|
|
inline bool isSubCaptureEnabled() const {
|
|
|
|
return subCaptureIsActive || subCaptureWasActive;
|
|
|
|
}
|
2018-07-09 17:31:36 +08:00
|
|
|
inline void disableSubCapture() {
|
|
|
|
subCaptureIsActive = subCaptureWasActive = false;
|
|
|
|
};
|
|
|
|
|
|
|
|
bool activateSubCapture(const MultiDispatchInfo &dispatchInfo);
|
2018-06-13 02:33:03 +08:00
|
|
|
|
2018-07-09 17:31:36 +08:00
|
|
|
const std::string &getSubCaptureFileName(const MultiDispatchInfo &dispatchInfo);
|
2018-06-13 02:33:03 +08:00
|
|
|
|
2018-07-09 17:31:36 +08:00
|
|
|
AubSubCaptureManager(const std::string &fileName);
|
2018-07-02 00:44:29 +08:00
|
|
|
virtual ~AubSubCaptureManager();
|
2018-06-13 02:33:03 +08:00
|
|
|
|
|
|
|
protected:
|
|
|
|
MOCKABLE_VIRTUAL bool isSubCaptureToggleActive() const;
|
2018-07-26 17:35:13 +08:00
|
|
|
bool isSubCaptureFilterActive(const MultiDispatchInfo &dispatchInfo);
|
2018-07-09 17:31:36 +08:00
|
|
|
MOCKABLE_VIRTUAL std::string getExternalFileName() const;
|
|
|
|
MOCKABLE_VIRTUAL std::string generateFilterFileName() const;
|
|
|
|
MOCKABLE_VIRTUAL std::string generateToggleFileName(const MultiDispatchInfo &dispatchInfo) const;
|
2018-07-26 17:35:13 +08:00
|
|
|
bool isKernelIndexInSubCaptureRange(uint32_t kernelIdx, uint32_t rangeStartIdx, uint32_t rangeEndIdx) const;
|
2018-06-13 02:33:03 +08:00
|
|
|
void setDebugManagerFlags() const;
|
|
|
|
|
|
|
|
bool subCaptureIsActive = false;
|
|
|
|
bool subCaptureWasActive = false;
|
|
|
|
uint32_t kernelCurrentIdx = 0;
|
2018-07-26 17:35:13 +08:00
|
|
|
uint32_t kernelNameMatchesNum = 0;
|
2018-07-09 17:31:36 +08:00
|
|
|
bool useExternalFileName = true;
|
|
|
|
std::string initialFileName;
|
|
|
|
std::string currentFileName;
|
2018-07-02 00:44:29 +08:00
|
|
|
std::unique_ptr<SettingsReader> settingsReader;
|
2018-06-13 02:33:03 +08:00
|
|
|
};
|
2019-03-26 18:59:46 +08:00
|
|
|
} // namespace NEO
|