mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 01:35:20 +08:00
Enahnce kernel debug ULTs
Mock ProgramWithKernelDebugging ULTs. This change is neccessary to ensure independence from binary format after incoming switching to zebinary format. Signed-off-by: Kacper Nowak <kacper.nowak@intel.com> Related-To: NEO-6646
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0420df780d
commit
83b84b3491
@@ -15,12 +15,12 @@
|
||||
#include "shared/test/common/helpers/test_files.h"
|
||||
#include "shared/test/common/mocks/mock_device.h"
|
||||
#include "shared/test/common/mocks/mock_elf.h"
|
||||
#include "shared/test/unit_test/device_binary_format/elf/elf_tests_data.h"
|
||||
#include "shared/test/unit_test/device_binary_format/patchtokens_tests.h"
|
||||
#include "shared/test/unit_test/helpers/gtest_helpers.h"
|
||||
|
||||
#include "opencl/test/unit_test/mocks/mock_cl_device.h"
|
||||
#include "opencl/test/unit_test/mocks/mock_program.h"
|
||||
#include "opencl/test/unit_test/test_files/patch_list.h"
|
||||
|
||||
#include "compiler_options.h"
|
||||
#include "gtest/gtest.h"
|
||||
@@ -29,52 +29,6 @@
|
||||
|
||||
using namespace NEO;
|
||||
|
||||
enum class enabledIrFormat {
|
||||
NONE,
|
||||
ENABLE_SPIRV,
|
||||
ENABLE_LLVM
|
||||
};
|
||||
|
||||
template <enabledIrFormat irFormat = enabledIrFormat::NONE>
|
||||
struct MockElfBinaryPatchtokens {
|
||||
MockElfBinaryPatchtokens(const HardwareInfo &hwInfo) : MockElfBinaryPatchtokens(std::string{}, hwInfo){};
|
||||
MockElfBinaryPatchtokens(const std::string &buildOptions, const HardwareInfo &hwInfo) {
|
||||
mockDevBinaryHeader.Device = hwInfo.platform.eRenderCoreFamily;
|
||||
mockDevBinaryHeader.GPUPointerSizeInBytes = sizeof(void *);
|
||||
mockDevBinaryHeader.Version = iOpenCL::CURRENT_ICBE_VERSION;
|
||||
constexpr size_t mockDevBinaryDataSize = sizeof(mockDevBinaryHeader) + mockDataSize;
|
||||
constexpr size_t mockSpirvBinaryDataSize = sizeof(spirvMagic) + mockDataSize;
|
||||
constexpr size_t mockLlvmBinaryDataSize = sizeof(llvmBcMagic) + mockDataSize;
|
||||
|
||||
char mockDevBinaryData[mockDevBinaryDataSize];
|
||||
memcpy_s(mockDevBinaryData, mockDevBinaryDataSize, &mockDevBinaryHeader, sizeof(mockDevBinaryHeader));
|
||||
memset(mockDevBinaryData + sizeof(mockDevBinaryHeader), '\x01', mockDataSize);
|
||||
|
||||
char mockSpirvBinaryData[mockSpirvBinaryDataSize];
|
||||
memcpy_s(mockSpirvBinaryData, mockSpirvBinaryDataSize, spirvMagic.data(), spirvMagic.size());
|
||||
memset(mockSpirvBinaryData + spirvMagic.size(), '\x02', mockDataSize);
|
||||
|
||||
char mockLlvmBinaryData[mockLlvmBinaryDataSize];
|
||||
memcpy_s(mockLlvmBinaryData, mockLlvmBinaryDataSize, llvmBcMagic.data(), llvmBcMagic.size());
|
||||
memset(mockLlvmBinaryData + llvmBcMagic.size(), '\x03', mockDataSize);
|
||||
|
||||
Elf::ElfEncoder<Elf::EI_CLASS_64> enc;
|
||||
enc.getElfFileHeader().identity = Elf::ElfFileHeaderIdentity(Elf::EI_CLASS_64);
|
||||
enc.getElfFileHeader().type = NEO::Elf::ET_OPENCL_EXECUTABLE;
|
||||
enc.appendSection(Elf::SHT_OPENCL_DEV_BINARY, Elf::SectionNamesOpenCl::deviceBinary, ArrayRef<const uint8_t>::fromAny(mockDevBinaryData, mockDevBinaryDataSize));
|
||||
if (irFormat == enabledIrFormat::ENABLE_SPIRV)
|
||||
enc.appendSection(Elf::SHT_OPENCL_SPIRV, Elf::SectionNamesOpenCl::spirvObject, ArrayRef<const uint8_t>::fromAny(mockSpirvBinaryData, mockSpirvBinaryDataSize));
|
||||
else if (irFormat == enabledIrFormat::ENABLE_LLVM)
|
||||
enc.appendSection(Elf::SHT_OPENCL_LLVM_BINARY, Elf::SectionNamesOpenCl::llvmObject, ArrayRef<const uint8_t>::fromAny(mockLlvmBinaryData, mockLlvmBinaryDataSize));
|
||||
if (false == buildOptions.empty())
|
||||
enc.appendSection(Elf::SHT_OPENCL_OPTIONS, Elf::SectionNamesOpenCl::buildOptions, ArrayRef<const uint8_t>::fromAny(buildOptions.data(), buildOptions.size()));
|
||||
storage = enc.encode();
|
||||
}
|
||||
static constexpr size_t mockDataSize = 0x10;
|
||||
SProgramBinaryHeader mockDevBinaryHeader = SProgramBinaryHeader{MAGIC_CL, 0, 0, 0, 0, 0, 0};
|
||||
std::vector<uint8_t> storage;
|
||||
};
|
||||
|
||||
class ProcessElfBinaryTests : public ::testing::Test {
|
||||
public:
|
||||
void SetUp() override {
|
||||
|
||||
Reference in New Issue
Block a user