mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-05 09:09:04 +08:00
Refactor debugger code
- helper sets all SbaAddresses for debugger in EncodeStateBaseAddress<GfxFamily>::setSbaAddressesForDebugger() - change DebuggerL0::captureStateBaseAddress() to take LinearStream - move getSbaTrackingCommandsSize() to Debugger class Related-To: NEO-6845 Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
f3bcbfb305
commit
5911515ed0
@@ -234,7 +234,7 @@ struct EncodeStateBaseAddress {
|
||||
using STATE_BASE_ADDRESS = typename GfxFamily::STATE_BASE_ADDRESS;
|
||||
static void encode(CommandContainer &container, STATE_BASE_ADDRESS &sbaCmd, bool multiOsContextCapable);
|
||||
static void encode(CommandContainer &container, STATE_BASE_ADDRESS &sbaCmd, uint32_t statelessMocsIndex, bool useGlobalAtomics, bool multiOsContextCapable);
|
||||
static void setIohAddressForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd);
|
||||
static void setSbaAddressesForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd);
|
||||
static size_t getRequiredSizeForStateBaseAddress(Device &device, CommandContainer &container);
|
||||
};
|
||||
|
||||
|
||||
@@ -338,8 +338,13 @@ inline void EncodeComputeMode<Family>::adjustPipelineSelect(CommandContainer &co
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeStateBaseAddress<Family>::setIohAddressForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
void EncodeStateBaseAddress<Family>::setSbaAddressesForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
sbaAddress.IndirectObjectBaseAddress = sbaCmd.getIndirectObjectBaseAddress();
|
||||
sbaAddress.BindlessSurfaceStateBaseAddress = sbaCmd.getBindlessSurfaceStateBaseAddress();
|
||||
sbaAddress.DynamicStateBaseAddress = sbaCmd.getDynamicStateBaseAddress();
|
||||
sbaAddress.GeneralStateBaseAddress = sbaCmd.getGeneralStateBaseAddress();
|
||||
sbaAddress.InstructionBaseAddress = sbaCmd.getInstructionBaseAddress();
|
||||
sbaAddress.SurfaceStateBaseAddress = sbaCmd.getSurfaceStateBaseAddress();
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
|
||||
@@ -445,7 +445,13 @@ void EncodeDispatchKernel<Family>::encodeThreadData(WALKER_TYPE &walkerCmd,
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
void EncodeStateBaseAddress<Family>::setIohAddressForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
void EncodeStateBaseAddress<Family>::setSbaAddressesForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
sbaAddress.BindlessSurfaceStateBaseAddress = sbaCmd.getBindlessSurfaceStateBaseAddress();
|
||||
sbaAddress.DynamicStateBaseAddress = sbaCmd.getDynamicStateBaseAddress();
|
||||
sbaAddress.GeneralStateBaseAddress = sbaCmd.getGeneralStateBaseAddress();
|
||||
sbaAddress.InstructionBaseAddress = sbaCmd.getInstructionBaseAddress();
|
||||
sbaAddress.SurfaceStateBaseAddress = sbaCmd.getSurfaceStateBaseAddress();
|
||||
sbaAddress.IndirectObjectBaseAddress = 0;
|
||||
}
|
||||
|
||||
template <typename Family>
|
||||
|
||||
@@ -788,7 +788,7 @@ template <typename GfxFamily>
|
||||
size_t CommandStreamReceiverHw<GfxFamily>::getRequiredCmdStreamSize(const DispatchFlags &dispatchFlags, Device &device) {
|
||||
size_t size = getRequiredCmdSizeForPreamble(device);
|
||||
size += getRequiredStateBaseAddressSize(device);
|
||||
if (!this->isStateSipSent || device.isDebuggerActive()) {
|
||||
if (!this->isStateSipSent || device.getDebugger()) {
|
||||
size += PreemptionHelper::getRequiredStateSipCmdSize<GfxFamily>(device, isRcs());
|
||||
}
|
||||
size += MemorySynchronizationCommands<GfxFamily>::getSizeForSinglePipeControl();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Intel Corporation
|
||||
* Copyright (C) 2020-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -9,7 +9,7 @@
|
||||
#include <memory>
|
||||
namespace NEO {
|
||||
struct HardwareInfo;
|
||||
class CommandContainer;
|
||||
class LinearStream;
|
||||
class IndirectHeap;
|
||||
struct DebugData;
|
||||
class GraphicsAllocation;
|
||||
@@ -17,6 +17,7 @@ class GraphicsAllocation;
|
||||
class Debugger {
|
||||
public:
|
||||
struct SbaAddresses {
|
||||
constexpr static size_t trackedAddressCount = 6;
|
||||
uint64_t GeneralStateBaseAddress = 0;
|
||||
uint64_t SurfaceStateBaseAddress = 0;
|
||||
uint64_t DynamicStateBaseAddress = 0;
|
||||
@@ -29,7 +30,9 @@ class Debugger {
|
||||
static std::unique_ptr<Debugger> create(HardwareInfo *hwInfo);
|
||||
virtual ~Debugger() = default;
|
||||
bool isLegacy() const { return isLegacyMode; }
|
||||
virtual void captureStateBaseAddress(CommandContainer &container, SbaAddresses sba) = 0;
|
||||
virtual void captureStateBaseAddress(NEO::LinearStream &cmdStream, SbaAddresses sba) = 0;
|
||||
virtual size_t getSbaTrackingCommandsSize(size_t trackedAddressCount) = 0;
|
||||
|
||||
void *getDebugSurfaceReservedSurfaceState(IndirectHeap &ssh);
|
||||
|
||||
inline static bool isDebugEnabled(bool internalUsage) {
|
||||
@@ -39,4 +42,6 @@ class Debugger {
|
||||
protected:
|
||||
bool isLegacyMode = true;
|
||||
};
|
||||
|
||||
static_assert(std::is_standard_layout<Debugger::SbaAddresses>::value);
|
||||
} // namespace NEO
|
||||
@@ -43,6 +43,15 @@ void EncodeComputeMode<Family>::programComputeModeCommand(LinearStream &csr, Sta
|
||||
const HardwareInfo &hwInfo) {
|
||||
}
|
||||
|
||||
template <>
|
||||
void EncodeStateBaseAddress<Family>::setSbaAddressesForDebugger(NEO::Debugger::SbaAddresses &sbaAddress, const STATE_BASE_ADDRESS &sbaCmd) {
|
||||
sbaAddress.IndirectObjectBaseAddress = sbaCmd.getIndirectObjectBaseAddress();
|
||||
sbaAddress.DynamicStateBaseAddress = sbaCmd.getDynamicStateBaseAddress();
|
||||
sbaAddress.GeneralStateBaseAddress = sbaCmd.getGeneralStateBaseAddress();
|
||||
sbaAddress.InstructionBaseAddress = sbaCmd.getInstructionBaseAddress();
|
||||
sbaAddress.SurfaceStateBaseAddress = sbaCmd.getSurfaceStateBaseAddress();
|
||||
}
|
||||
|
||||
template struct EncodeDispatchKernel<Family>;
|
||||
template struct EncodeStates<Family>;
|
||||
template struct EncodeMath<Family>;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -54,7 +54,8 @@ void PreambleHelper<BDWFamily>::programPipelineSelect(LinearStream *pCommandStre
|
||||
|
||||
template <>
|
||||
size_t PreambleHelper<BDWFamily>::getAdditionalCommandsSize(const Device &device) {
|
||||
return getKernelDebuggingCommandsSize(device.isDebuggerActive());
|
||||
bool debuggingEnabled = device.getDebugger() != nullptr || device.isDebuggerActive();
|
||||
return getKernelDebuggingCommandsSize(debuggingEnabled);
|
||||
}
|
||||
|
||||
template struct PreambleHelper<BDWFamily>;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
@@ -41,7 +41,10 @@ class SourceLevelDebugger : public Debugger {
|
||||
MOCKABLE_VIRTUAL bool notifyKernelDebugData(const DebugData *debugData, const std::string &name, const void *isa, size_t isaSize) const;
|
||||
MOCKABLE_VIRTUAL bool initialize(bool useLocalMemory);
|
||||
|
||||
void captureStateBaseAddress(CommandContainer &container, SbaAddresses sba) override{};
|
||||
void captureStateBaseAddress(NEO::LinearStream &cmdStream, SbaAddresses sba) override{};
|
||||
size_t getSbaTrackingCommandsSize(size_t trackedAddressCount) override {
|
||||
return 0;
|
||||
}
|
||||
|
||||
protected:
|
||||
class SourceLevelDebuggerInterface;
|
||||
|
||||
Reference in New Issue
Block a user