aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/shader_jit.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2015-07-22 23:25:30 -0400
committerbunnei <bunneidev@gmail.com>2015-08-15 18:01:07 -0400
commit094ae6fadb57883e25d412443fcae987ddf240ef (patch)
tree8817c9b0672bd02be3fa32a02f3f126f0ecfb664 /src/video_core/shader/shader_jit.cpp
parentd67e2f78b77c0739caa8c6a915685aa8961a519c (diff)
Shader: Initial implementation of x86_x64 JIT compiler for Pica vertex shaders.
- Config: Add an option for selecting to use shader JIT or interpreter. - Qt: Add a menu option for enabling/disabling the shader JIT.
Diffstat (limited to 'src/video_core/shader/shader_jit.cpp')
-rw-r--r--src/video_core/shader/shader_jit.cpp36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/video_core/shader/shader_jit.cpp b/src/video_core/shader/shader_jit.cpp
new file mode 100644
index 000000000..69fb7f6be
--- /dev/null
+++ b/src/video_core/shader/shader_jit.cpp
@@ -0,0 +1,36 @@
+// Copyright 2015 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "video_core/pica.h"
+
+#include "shader.h"
+#include "shader_jit.h"
+
+namespace Pica {
+
+namespace Shader {
+
+JitShader::JitShader() : jitted(nullptr) {
+}
+
+void JitShader::DoJit(JitCompiler& jit) {
+ jitted = jit.Compile();
+}
+
+void JitShader::Run(UnitState& state) {
+ if (jitted)
+ jitted(&state);
+}
+
+JitCompiler::JitCompiler() {
+ AllocCodeSpace(1024 * 1024 * 4);
+}
+
+void JitCompiler::Clear() {
+ ClearCodeSpace();
+}
+
+} // namespace Shader
+
+} // namespace Pica