diff options
| -rw-r--r-- | src/video_core/shader/shader.h | 7 | ||||
| -rw-r--r-- | src/video_core/shader/shader_interpreter.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/shader/shader_jit_x64.cpp | 2 | ||||
| -rw-r--r-- | src/video_core/shader/shader_jit_x64_compiler.cpp | 4 | ||||
| -rw-r--r-- | src/video_core/shader/shader_jit_x64_compiler.h | 14 | 
5 files changed, 16 insertions, 13 deletions
diff --git a/src/video_core/shader/shader.h b/src/video_core/shader/shader.h index 38ea717ab..e156f6aef 100644 --- a/src/video_core/shader/shader.h +++ b/src/video_core/shader/shader.h @@ -24,6 +24,9 @@ namespace Pica {  namespace Shader { +constexpr unsigned MAX_PROGRAM_CODE_LENGTH = 4096; +constexpr unsigned MAX_SWIZZLE_DATA_LENGTH = 4096; +  struct AttributeBuffer {      alignas(16) Math::Vec4<float24> attr[16];  }; @@ -144,8 +147,8 @@ struct ShaderSetup {          return offsetof(ShaderSetup, uniforms.i) + index * sizeof(Math::Vec4<u8>);      } -    std::array<u32, 1024> program_code; -    std::array<u32, 1024> swizzle_data; +    std::array<u32, MAX_PROGRAM_CODE_LENGTH> program_code; +    std::array<u32, MAX_SWIZZLE_DATA_LENGTH> swizzle_data;      /// Data private to ShaderEngines      struct EngineData { diff --git a/src/video_core/shader/shader_interpreter.cpp b/src/video_core/shader/shader_interpreter.cpp index f4d1c46c5..aa1cec81f 100644 --- a/src/video_core/shader/shader_interpreter.cpp +++ b/src/video_core/shader/shader_interpreter.cpp @@ -653,7 +653,7 @@ static void RunInterpreter(const ShaderSetup& setup, UnitState& state, DebugData  }  void InterpreterEngine::SetupBatch(ShaderSetup& setup, unsigned int entry_point) { -    ASSERT(entry_point < 1024); +    ASSERT(entry_point < MAX_PROGRAM_CODE_LENGTH);      setup.engine_data.entry_point = entry_point;  } diff --git a/src/video_core/shader/shader_jit_x64.cpp b/src/video_core/shader/shader_jit_x64.cpp index 0ee0dd9ef..73c21871c 100644 --- a/src/video_core/shader/shader_jit_x64.cpp +++ b/src/video_core/shader/shader_jit_x64.cpp @@ -15,7 +15,7 @@ JitX64Engine::JitX64Engine() = default;  JitX64Engine::~JitX64Engine() = default;  void JitX64Engine::SetupBatch(ShaderSetup& setup, unsigned int entry_point) { -    ASSERT(entry_point < 1024); +    ASSERT(entry_point < MAX_PROGRAM_CODE_LENGTH);      setup.engine_data.entry_point = entry_point;      u64 code_hash = Common::ComputeHash64(&setup.program_code, sizeof(setup.program_code)); diff --git a/src/video_core/shader/shader_jit_x64_compiler.cpp b/src/video_core/shader/shader_jit_x64_compiler.cpp index 2dbc8b147..5d9b6448c 100644 --- a/src/video_core/shader/shader_jit_x64_compiler.cpp +++ b/src/video_core/shader/shader_jit_x64_compiler.cpp @@ -834,8 +834,8 @@ void JitShader::FindReturnOffsets() {      std::sort(return_offsets.begin(), return_offsets.end());  } -void JitShader::Compile(const std::array<u32, 1024>* program_code_, -                        const std::array<u32, 1024>* swizzle_data_) { +void JitShader::Compile(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>* program_code_, +                        const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>* swizzle_data_) {      program_code = program_code_;      swizzle_data = swizzle_data_; diff --git a/src/video_core/shader/shader_jit_x64_compiler.h b/src/video_core/shader/shader_jit_x64_compiler.h index f27675560..31af0ca48 100644 --- a/src/video_core/shader/shader_jit_x64_compiler.h +++ b/src/video_core/shader/shader_jit_x64_compiler.h @@ -22,8 +22,8 @@ namespace Pica {  namespace Shader { -/// Memory allocated for each compiled shader (64Kb) -constexpr size_t MAX_SHADER_SIZE = 1024 * 64; +/// Memory allocated for each compiled shader +constexpr size_t MAX_SHADER_SIZE = MAX_PROGRAM_CODE_LENGTH * 64;  /**   * This class implements the shader JIT compiler. It recompiles a Pica shader program into x86_64 @@ -37,8 +37,8 @@ public:          program(&setup, &state, instruction_labels[offset].getAddress());      } -    void Compile(const std::array<u32, 1024>* program_code, -                 const std::array<u32, 1024>* swizzle_data); +    void Compile(const std::array<u32, MAX_PROGRAM_CODE_LENGTH>* program_code, +                 const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>* swizzle_data);      void Compile_ADD(Instruction instr);      void Compile_DP3(Instruction instr); @@ -104,11 +104,11 @@ private:       */      void FindReturnOffsets(); -    const std::array<u32, 1024>* program_code = nullptr; -    const std::array<u32, 1024>* swizzle_data = nullptr; +    const std::array<u32, MAX_PROGRAM_CODE_LENGTH>* program_code = nullptr; +    const std::array<u32, MAX_SWIZZLE_DATA_LENGTH>* swizzle_data = nullptr;      /// Mapping of Pica VS instructions to pointers in the emitted code -    std::array<Xbyak::Label, 1024> instruction_labels; +    std::array<Xbyak::Label, MAX_PROGRAM_CODE_LENGTH> instruction_labels;      /// Offsets in code where a return needs to be inserted      std::vector<unsigned> return_offsets;  | 
