3 changed files with 87 additions and 0 deletions
-
2src/video_core/CMakeLists.txt
-
58src/video_core/renderer_opengl/gl_shader_decompiler.cpp
-
27src/video_core/renderer_opengl/gl_shader_decompiler.h
@ -0,0 +1,58 @@ |
|||
// Copyright 2018 yuzu Emulator Project
|
|||
// Licensed under GPLv2 or any later version
|
|||
// Refer to the license.txt file included.
|
|||
|
|||
#include <string>
|
|||
#include <queue>
|
|||
#include "common/assert.h"
|
|||
#include "common/common_types.h"
|
|||
#include "video_core/renderer_opengl/gl_shader_decompiler.h"
|
|||
|
|||
namespace Maxwell3D { |
|||
namespace Shader { |
|||
namespace Decompiler { |
|||
|
|||
constexpr u32 PROGRAM_END = MAX_PROGRAM_CODE_LENGTH; |
|||
|
|||
class Impl { |
|||
public: |
|||
Impl(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code, |
|||
const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data, u32 main_offset, |
|||
const std::function<std::string(u32)>& inputreg_getter, |
|||
const std::function<std::string(u32)>& outputreg_getter, bool sanitize_mul, |
|||
const std::string& emit_cb, const std::string& setemit_cb) |
|||
: program_code(program_code), swizzle_data(swizzle_data), main_offset(main_offset), |
|||
inputreg_getter(inputreg_getter), outputreg_getter(outputreg_getter), |
|||
sanitize_mul(sanitize_mul), emit_cb(emit_cb), setemit_cb(setemit_cb) {} |
|||
|
|||
std::string Decompile() { |
|||
UNIMPLEMENTED(); |
|||
return {}; |
|||
} |
|||
|
|||
private: |
|||
const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code; |
|||
const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data; |
|||
u32 main_offset; |
|||
const std::function<std::string(u32)>& inputreg_getter; |
|||
const std::function<std::string(u32)>& outputreg_getter; |
|||
bool sanitize_mul; |
|||
const std::string& emit_cb; |
|||
const std::string& setemit_cb; |
|||
}; |
|||
|
|||
std::string DecompileProgram(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code, |
|||
const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data, |
|||
u32 main_offset, |
|||
const std::function<std::string(u32)>& inputreg_getter, |
|||
const std::function<std::string(u32)>& outputreg_getter, |
|||
bool sanitize_mul, const std::string& emit_cb, |
|||
const std::string& setemit_cb) { |
|||
Impl impl(program_code, swizzle_data, main_offset, inputreg_getter, outputreg_getter, |
|||
sanitize_mul, emit_cb, setemit_cb); |
|||
return impl.Decompile(); |
|||
} |
|||
|
|||
} // namespace Decompiler
|
|||
} // namespace Shader
|
|||
} // namespace Maxwell3D
|
|||
@ -0,0 +1,27 @@ |
|||
// Copyright 2018 yuzu Emulator Project |
|||
// Licensed under GPLv2 or any later version |
|||
// Refer to the license.txt file included. |
|||
|
|||
#include <array> |
|||
#include <functional> |
|||
#include <string> |
|||
#include "common/common_types.h" |
|||
|
|||
namespace Maxwell3D { |
|||
namespace Shader { |
|||
namespace Decompiler { |
|||
|
|||
constexpr size_t MAX_PROGRAM_CODE_LENGTH{0x100000}; |
|||
constexpr size_t MAX_SWIZZLE_DATA_LENGTH{0x100000}; |
|||
|
|||
std::string DecompileProgram(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>& program_code, |
|||
const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>& swizzle_data, |
|||
u32 main_offset, |
|||
const std::function<std::string(u32)>& inputreg_getter, |
|||
const std::function<std::string(u32)>& outputreg_getter, |
|||
bool sanitize_mul, const std::string& emit_cb = "", |
|||
const std::string& setemit_cb = ""); |
|||
|
|||
} // namespace Decompiler |
|||
} // namespace Shader |
|||
} // namespace Maxwell3D |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue