diff --git a/Makefile.common b/Makefile.common index 7607db8949..35004ba67c 100644 --- a/Makefile.common +++ b/Makefile.common @@ -508,12 +508,6 @@ ifeq ($(HAVE_STDIN_CMD), 1) DEFINES += -DHAVE_COMMAND -DHAVE_STDIN_CMD endif -ifeq ($(HAVE_PYTHON), 1) - DEFINES += $(PYTHON_CFLAGS) -Wno-unused-parameter - LIBS += $(PYTHON_LIBS) - OBJ += gfx/drivers_tracker/video_state_python.o -endif - ifeq ($(HAVE_EMSCRIPTEN), 1) OBJ += frontend/drivers/platform_emscripten.o \ input/drivers/rwebinput_input.o \ @@ -1045,8 +1039,7 @@ endif # Video -OBJ += gfx/drivers_context/gfx_null_ctx.o \ - gfx/video_state_tracker.o +OBJ += gfx/drivers_context/gfx_null_ctx.o ifeq ($(HAVE_KMS), 1) HAVE_AND_WILL_USE_DRM = 1 diff --git a/gfx/common/d3d9_common.h b/gfx/common/d3d9_common.h index 552b7fb858..5549dcb56e 100644 --- a/gfx/common/d3d9_common.h +++ b/gfx/common/d3d9_common.h @@ -53,7 +53,6 @@ typedef struct d3d9_renderchain_driver bool smooth); bool (*render)(d3d9_video_t *d3d, const video_frame_info_t *video_info, - state_tracker_t *tracker, const void *frame, unsigned width, unsigned height, unsigned pitch, unsigned rotation); const char *ident; @@ -82,7 +81,6 @@ typedef struct d3d9_video math_matrix_4x4 mvp_rotate; math_matrix_4x4 mvp_transposed; - state_tracker_t *state_tracker; struct video_viewport vp; struct video_shader shader; video_info_t video_info; diff --git a/gfx/drivers/d3d9.c b/gfx/drivers/d3d9.c index 20ac3063f4..e7c5e4531d 100644 --- a/gfx/drivers/d3d9.c +++ b/gfx/drivers/d3d9.c @@ -99,51 +99,6 @@ static bool d3d9_set_resize(d3d9_video_t *d3d, return true; } -static bool d3d9_init_imports(d3d9_video_t *d3d) -{ - retro_ctx_memory_info_t mem_info; - state_tracker_t *state_tracker = NULL; - struct state_tracker_info tracker_info = {0}; - - if (!d3d->shader.variables) - return true; - - mem_info.id = RETRO_MEMORY_SYSTEM_RAM; - - core_get_memory(&mem_info); - - tracker_info.script_class = NULL; - tracker_info.wram = (uint8_t*)mem_info.data; - tracker_info.info = d3d->shader.variable; - tracker_info.info_elem = d3d->shader.variables; - tracker_info.script = NULL; - tracker_info.script_is_file = false; - -#ifdef HAVE_PYTHON - if (*d3d->shader.script_path) - { - tracker_info.script = d3d->shader.script_path; - tracker_info.script_is_file = true; - } - - if (*d3d->shader.script_class) - tracker_info.script_class = d3d->shader.script_class; -#endif - - state_tracker = - state_tracker_init(&tracker_info); - - if (!state_tracker) - { - RARCH_ERR("[D3D9]: Failed to initialize state tracker.\n"); - return false; - } - - d3d->state_tracker = state_tracker; - - return true; -} - extern d3d9_renderchain_driver_t cg_d3d9_renderchain; extern d3d9_renderchain_driver_t hlsl_d3d9_renderchain; @@ -334,12 +289,6 @@ static bool d3d9_init_chain(d3d9_video_t *d3d, const video_info_t *video_info) } } } - - if (!d3d9_init_imports(d3d)) - { - RARCH_ERR("[D3D9]: Failed to init imports.\n"); - return false; - } } return true; @@ -622,10 +571,6 @@ static void d3d9_deinitialize(d3d9_video_t *d3d) d3d9_deinit_chain(d3d); d3d9_vertex_buffer_free(d3d->menu_display.buffer, d3d->menu_display.decl); - if (d3d->state_tracker) - state_tracker_free(d3d->state_tracker); - - d3d->state_tracker = NULL; d3d->menu_display.buffer = NULL; d3d->menu_display.decl = NULL; } @@ -1682,7 +1627,6 @@ static bool d3d9_frame(void *data, const void *frame, if (!d3d->renderchain_driver->render( d3d, video_info, - d3d->state_tracker, frame, frame_width, frame_height, pitch, d3d->dev_rotation)) { diff --git a/gfx/drivers_renderchain/d3d9_cg_renderchain.c b/gfx/drivers_renderchain/d3d9_cg_renderchain.c index 46e0cc4fc7..018b0ff910 100644 --- a/gfx/drivers_renderchain/d3d9_cg_renderchain.c +++ b/gfx/drivers_renderchain/d3d9_cg_renderchain.c @@ -891,34 +891,9 @@ static void d3d9_cg_renderchain_set_vertices( vp_width, vp_height); } -static void d3d9_cg_renderchain_set_params( - d3d9_renderchain_t *chain, - LPDIRECT3DDEVICE9 dev, - struct shader_pass *pass, - state_tracker_t *tracker, - unsigned pass_index) -{ - unsigned i; - /* Set state parameters. */ - /* Only query uniforms in first pass. */ - static struct state_tracker_uniform tracker_info[GFX_MAX_VARIABLES]; - static unsigned cnt = 0; - - if (pass_index == 1) - cnt = state_tracker_get_uniform(tracker, tracker_info, - GFX_MAX_VARIABLES, chain->frame_count); - - for (i = 0; i < cnt; i++) - { - d3d9_cg_set_param_2f(pass->fprg, dev, tracker_info[i].id, &tracker_info[i].value); - d3d9_cg_set_param_2f(pass->vprg, dev, tracker_info[i].id, &tracker_info[i].value); - } -} - static void d3d9_cg_renderchain_render_pass( d3d9_renderchain_t *chain, struct shader_pass *pass, - state_tracker_t *tracker, unsigned pass_index) { unsigned i; @@ -974,9 +949,6 @@ static void d3d9_cg_renderchain_render_pass( if (pass_index >= 3) d3d9_cg_renderchain_bind_pass(chain, chain->dev, pass, pass_index); - if (tracker) - d3d9_cg_renderchain_set_params(chain, chain->dev, pass, tracker, pass_index); - d3d9_draw_primitive(chain->dev, D3DPT_TRIANGLESTRIP, 0, 2); /* So we don't render with linear filter into render targets, @@ -990,7 +962,6 @@ static void d3d9_cg_renderchain_render_pass( static bool d3d9_cg_renderchain_render( d3d9_video_t *d3d, const video_frame_info_t *video_info, - state_tracker_t *tracker, const void *frame_data, unsigned width, unsigned height, unsigned pitch, unsigned rotation) @@ -1063,7 +1034,7 @@ static bool d3d9_cg_renderchain_render( out_width, out_height, 0); d3d9_cg_renderchain_render_pass(chain, - from_pass, tracker, + from_pass, i + 1); current_width = out_width; @@ -1093,7 +1064,6 @@ static bool d3d9_cg_renderchain_render( d3d9_cg_renderchain_render_pass(chain, last_pass, - tracker, chain->passes->count); chain->frame_count++; diff --git a/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c b/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c index 8a86cd66a2..0f5ee94cbd 100644 --- a/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c +++ b/gfx/drivers_renderchain/d3d9_hlsl_renderchain.c @@ -468,34 +468,9 @@ static void hlsl_d3d9_renderchain_set_final_viewport( d3d9_recompute_pass_sizes(chain->dev, chain, d3d); } -static void d3d9_hlsl_renderchain_set_params( - d3d9_renderchain_t *chain, - LPDIRECT3DDEVICE9 dev, - struct shader_pass *pass, - state_tracker_t *tracker, - unsigned pass_index) -{ - unsigned i; - /* Set state parameters. */ - /* Only query uniforms in first pass. */ - static struct state_tracker_uniform tracker_info[GFX_MAX_VARIABLES]; - static unsigned cnt = 0; - - if (pass_index == 1) - cnt = state_tracker_get_uniform(tracker, tracker_info, - GFX_MAX_VARIABLES, chain->frame_count); - - for (i = 0; i < cnt; i++) - { - d3d9_hlsl_set_param_2f(pass->fprg, dev, tracker_info[i].id, &tracker_info[i].value); - d3d9_hlsl_set_param_2f(pass->vprg, dev, tracker_info[i].id, &tracker_info[i].value); - } -} - static void hlsl_d3d9_renderchain_render_pass( hlsl_renderchain_t *chain, struct shader_pass *pass, - state_tracker_t *tracker, unsigned pass_index) { unsigned i; @@ -553,9 +528,6 @@ static void hlsl_d3d9_renderchain_render_pass( d3d9_hlsl_renderchain_bind_pass(chain, chain->chain.dev, pass, pass_index); #endif - if (tracker) - d3d9_hlsl_renderchain_set_params(&chain->chain, - chain->chain.dev, pass, tracker, pass_index); d3d9_draw_primitive(chain->chain.dev, D3DPT_TRIANGLESTRIP, 0, 2); @@ -570,7 +542,6 @@ static void hlsl_d3d9_renderchain_render_pass( static bool hlsl_d3d9_renderchain_render( d3d9_video_t *d3d, const video_frame_info_t *video_info, - state_tracker_t *tracker, const void *frame, unsigned width, unsigned height, unsigned pitch, unsigned rotation) @@ -649,7 +620,7 @@ static bool hlsl_d3d9_renderchain_render( chain->chain.frame_count, 0); hlsl_d3d9_renderchain_render_pass(chain, - from_pass, tracker, + from_pass, i + 1); current_width = out_width; @@ -679,7 +650,6 @@ static bool hlsl_d3d9_renderchain_render( chain->chain.frame_count, rotation); hlsl_d3d9_renderchain_render_pass(chain, last_pass, - tracker, chain->chain.passes->count); chain->chain.frame_count++; diff --git a/gfx/drivers_shader/shader_gl_cg.c b/gfx/drivers_shader/shader_gl_cg.c index 44821d3bb8..a9d33601f3 100644 --- a/gfx/drivers_shader/shader_gl_cg.c +++ b/gfx/drivers_shader/shader_gl_cg.c @@ -109,7 +109,6 @@ typedef struct cg_shader_data CGprofile cgFProf; struct shader_program_cg prg[GFX_MAX_SHADERS]; GLuint lut_textures[GFX_MAX_TEXTURES]; - state_tracker_t *state_tracker; CGcontext cgCtx; } cg_shader_data_t; @@ -397,28 +396,6 @@ static void gl_cg_set_params(void *dat, void *shader_data) cg_gl_set_param_1f(param_v, cg->shader->parameters[i].current); cg_gl_set_param_1f(param_f, cg->shader->parameters[i].current); } - - /* Set state parameters. */ - if (cg->state_tracker) - { - /* Only query uniforms in first pass. */ - static struct state_tracker_uniform tracker_info[GFX_MAX_VARIABLES]; - static unsigned cnt = 0; - - if (cg->active_idx == 1) - cnt = state_tracker_get_uniform(cg->state_tracker, tracker_info, - GFX_MAX_VARIABLES, frame_count); - - for (i = 0; i < cnt; i++) - { - CGparameter param_v = cgGetNamedParameter( - cg->prg[cg->active_idx].vprg, tracker_info[i].id); - CGparameter param_f = cgGetNamedParameter( - cg->prg[cg->active_idx].fprg, tracker_info[i].id); - cg_gl_set_param_1f(param_v, tracker_info[i].value); - cg_gl_set_param_1f(param_f, tracker_info[i].value); - } - } } static void gl_cg_deinit_progs(void *data) @@ -466,12 +443,6 @@ static void gl_cg_destroy_resources(void *data) memset(cg->lut_textures, 0, sizeof(cg->lut_textures)); } - if (cg->state_tracker) - { - state_tracker_free(cg->state_tracker); - cg->state_tracker = NULL; - } - free(cg->shader); cg->shader = NULL; } @@ -680,72 +651,6 @@ static bool gl_cg_load_plain(void *data, const char *path) return true; } -static bool gl_cg_load_imports(void *data) -{ - unsigned i; - retro_ctx_memory_info_t mem_info; - struct state_tracker_info tracker_info; - cg_shader_data_t *cg = (cg_shader_data_t*)data; - - if (!cg->shader->variables) - return true; - - for (i = 0; i < cg->shader->variables; i++) - { - unsigned memtype; - - switch (cg->shader->variable[i].ram_type) - { - case RARCH_STATE_WRAM: - memtype = RETRO_MEMORY_SYSTEM_RAM; - break; - - default: - memtype = -1u; - } - - mem_info.id = memtype; - - core_get_memory(&mem_info); - - if ((memtype != -1u) && - (cg->shader->variable[i].addr >= mem_info.size)) - { - RARCH_ERR("Address out of bounds.\n"); - return false; - } - } - - mem_info.data = NULL; - mem_info.size = 0; - mem_info.id = RETRO_MEMORY_SYSTEM_RAM; - - core_get_memory(&mem_info); - - tracker_info.wram = (uint8_t*)mem_info.data; - tracker_info.info = cg->shader->variable; - tracker_info.info_elem = cg->shader->variables; - tracker_info.script = NULL; - tracker_info.script_is_file = false; - -#ifdef HAVE_PYTHON - if (*cg->shader->script_path) - { - tracker_info.script = cg->shader->script_path; - tracker_info.script_is_file = true; - } - - tracker_info.script_class = - *cg->shader->script_class ? cg->shader->script_class : NULL; -#endif - - cg->state_tracker = state_tracker_init(&tracker_info); - if (!cg->state_tracker) - RARCH_WARN("Failed to initialize state tracker.\n"); - - return true; -} - static bool gl_cg_load_shader(void *data, unsigned i) { struct shader_program_info program_info; @@ -829,12 +734,6 @@ static bool gl_cg_load_preset(void *data, const char *path) return false; } - if (!gl_cg_load_imports(cg)) - { - RARCH_ERR("Failed to load imports ...\n"); - return false; - } - return true; } diff --git a/gfx/drivers_shader/shader_glsl.c b/gfx/drivers_shader/shader_glsl.c index 947bc7c241..6985aab5d7 100644 --- a/gfx/drivers_shader/shader_glsl.c +++ b/gfx/drivers_shader/shader_glsl.c @@ -152,7 +152,6 @@ typedef struct glsl_shader_data struct cache_vbo vbo[GFX_MAX_SHADERS]; struct shader_program_glsl_data prg[GFX_MAX_SHADERS]; struct video_shader *shader; - state_tracker_t *state_tracker; } glsl_shader_data_t; static bool glsl_core; @@ -660,7 +659,6 @@ static void gl_glsl_deinit_shader(glsl_shader_data_t *glsl) free(glsl->shader->pass[i].source.string.fragment); } - free(glsl->shader->script); free(glsl->shader); glsl->shader = NULL; } @@ -695,10 +693,6 @@ static void gl_glsl_destroy_resources(glsl_shader_data_t *glsl) gl_glsl_deinit_shader(glsl); - if (glsl->state_tracker) - state_tracker_free(glsl->state_tracker); - glsl->state_tracker = NULL; - gl_glsl_reset_attrib(glsl); for (i = 0; i < GFX_MAX_SHADERS; i++) @@ -1022,34 +1016,6 @@ static void *gl_glsl_init(void *data, const char *path) } #endif - if (glsl->shader->variables) - { - retro_ctx_memory_info_t mem_info; - struct state_tracker_info info; - - mem_info.id = RETRO_MEMORY_SYSTEM_RAM; - - core_get_memory(&mem_info); - - info.wram = (uint8_t*)mem_info.data; - info.info = glsl->shader->variable; - info.info_elem = glsl->shader->variables; - - info.script = NULL; - info.script_class = NULL; -#ifdef HAVE_PYTHON - info.script = glsl->shader->script; - if (*glsl->shader->script_class) - info.script_class= glsl->shader->script_class; -#endif - info.script_is_file = false; - - glsl->state_tracker = state_tracker_init(&info); - - if (!glsl->state_tracker) - RARCH_WARN("Failed to init state tracker.\n"); - } - glsl->prg[glsl->shader->passes + 1] = glsl->prg[0]; glsl->uniforms[glsl->shader->passes + 1] = glsl->uniforms[0]; @@ -1399,25 +1365,6 @@ static void gl_glsl_set_params(void *dat, void *shader_data) glsl->shader->parameters[i].id); glUniform1f(location, glsl->shader->parameters[i].current); } - - /* Set state parameters. */ - if (glsl->state_tracker) - { - static struct state_tracker_uniform state_info[GFX_MAX_VARIABLES]; - static unsigned cnt = 0; - - if (glsl->active_idx == 1) - cnt = state_tracker_get_uniform(glsl->state_tracker, state_info, - GFX_MAX_VARIABLES, frame_count); - - for (i = 0; i < cnt; i++) - { - int location = glGetUniformLocation( - glsl->prg[glsl->active_idx].id, - state_info[i].id); - glUniform1f(location, state_info[i].value); - } - } } static bool gl_glsl_set_mvp(void *shader_data, const void *mat_data) diff --git a/gfx/drivers_tracker/video_state_python.c b/gfx/drivers_tracker/video_state_python.c deleted file mode 100644 index bf178ab06c..0000000000 --- a/gfx/drivers_tracker/video_state_python.c +++ /dev/null @@ -1,438 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2017 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include -#include -#include - -#include - -#include -#include -#include - -#include - -#include "video_state_python.h" - -#include "../../configuration.h" -#include "../../dynamic.h" -#include "../../core.h" -#include "../../verbosity.h" -#include "../../input/input_driver.h" - -static PyObject* py_read_wram(PyObject *self, PyObject *args) -{ - unsigned addr; - size_t max; - retro_ctx_memory_info_t mem_info; - const uint8_t *data = NULL; - - mem_info.id = RETRO_MEMORY_SYSTEM_RAM; - - core_get_memory(&mem_info); - - data = (const uint8_t*)mem_info.data; - - (void)self; - - if (!data) - { - Py_INCREF(Py_None); - return Py_None; - } - - max = mem_info.size; - - if (!PyArg_ParseTuple(args, "I", &addr)) - return NULL; - - if (addr >= max) - { - Py_INCREF(Py_None); - return Py_None; - } - - return PyLong_FromLong(data[addr]); -} - -static PyObject* py_read_vram(PyObject *self, PyObject *args) -{ - unsigned addr; - size_t max; - retro_ctx_memory_info_t mem_info; - const uint8_t *data = NULL; - - mem_info.id = RETRO_MEMORY_VIDEO_RAM; - - core_get_memory(&mem_info); - - data = (const uint8_t*)mem_info.data; - - (void)self; - - if (!data) - { - Py_INCREF(Py_None); - return Py_None; - } - - max = mem_info.size; - - if (!PyArg_ParseTuple(args, "I", &addr)) - return NULL; - - if (addr >= max) - { - Py_INCREF(Py_None); - return Py_None; - } - - return PyLong_FromLong(data[addr]); -} - -static PyObject *py_read_input(PyObject *self, PyObject *args) -{ - unsigned user, key, i; - rarch_joypad_info_t joypad_info; - const struct retro_keybind *py_binds[MAX_USERS]; - int16_t res = 0; - settings_t *settings = config_get_ptr(); - - for (i = 0; i < MAX_USERS; i++) - py_binds[i] = input_config_binds[i]; - - (void)self; - - if (!PyArg_ParseTuple(args, "II", &user, &key)) - return NULL; - - if (user > MAX_USERS || user < 1 || key >= RARCH_FIRST_META_KEY) - return NULL; - - joypad_info.joy_idx = settings->uints.input_joypad_map[user - 1]; - joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; - - if (!input_driver_is_libretro_input_blocked()) - res = input_driver_input_state(joypad_info, - py_binds, - user - 1, RETRO_DEVICE_JOYPAD, 0, key); - return PyBool_FromLong(res); -} - -static PyObject *py_read_analog(PyObject *self, PyObject *args) -{ - unsigned user, index, id, i; - rarch_joypad_info_t joypad_info; - const struct retro_keybind *py_binds[MAX_USERS]; - int16_t res = 0; - settings_t *settings = config_get_ptr(); - - for (i = 0; i < MAX_USERS; i++) - py_binds[i] = input_config_binds[i]; - - (void)self; - - if (!PyArg_ParseTuple(args, "III", &user, &index, &id)) - return NULL; - - if (user > MAX_USERS || user < 1 || index > 1 || id > 1) - return NULL; - - joypad_info.joy_idx = settings->uints.input_joypad_map[user - 1]; - joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; - - res = input_driver_input_state( - joypad_info, py_binds, - user - 1, RETRO_DEVICE_ANALOG, index, id); - return PyFloat_FromDouble((double)res / 0x7fff); -} - -static PyMethodDef RarchMethods[] = { - { "read_wram", py_read_wram, METH_VARARGS, "Read WRAM from system." }, - { "read_vram", py_read_vram, METH_VARARGS, "Read VRAM from system." }, - { "input", py_read_input, METH_VARARGS, "Read input state from system." }, - { "input_analog", py_read_analog, METH_VARARGS, "Read analog input state from system." }, - { NULL, NULL, 0, NULL } -}; - -#define DECL_ATTR_RETRO(attr) PyObject_SetAttrString(mod, #attr, PyLong_FromLong(RETRO_DEVICE_ID_JOYPAD_##attr)) -static void py_set_attrs(PyObject *mod) -{ - DECL_ATTR_RETRO(B); - DECL_ATTR_RETRO(Y); - DECL_ATTR_RETRO(SELECT); - DECL_ATTR_RETRO(START); - DECL_ATTR_RETRO(UP); - DECL_ATTR_RETRO(DOWN); - DECL_ATTR_RETRO(LEFT); - DECL_ATTR_RETRO(RIGHT); - DECL_ATTR_RETRO(A); - DECL_ATTR_RETRO(X); - DECL_ATTR_RETRO(L); - DECL_ATTR_RETRO(R); - DECL_ATTR_RETRO(L2); - DECL_ATTR_RETRO(R2); - DECL_ATTR_RETRO(L3); - DECL_ATTR_RETRO(R3); - - PyObject_SetAttrString(mod, "ANALOG_LEFT", - PyLong_FromLong(RETRO_DEVICE_INDEX_ANALOG_LEFT)); - PyObject_SetAttrString(mod, "ANALOG_RIGHT", - PyLong_FromLong(RETRO_DEVICE_INDEX_ANALOG_RIGHT)); - PyObject_SetAttrString(mod, "ANALOG_X", - PyLong_FromLong(RETRO_DEVICE_ID_ANALOG_X)); - PyObject_SetAttrString(mod, "ANALOG_Y", - PyLong_FromLong(RETRO_DEVICE_ID_ANALOG_Y)); -} - -static PyModuleDef RarchModule = { - PyModuleDef_HEAD_INIT, "rarch", NULL, -1, RarchMethods, - NULL, NULL, NULL, NULL -}; - -static PyObject* PyInit_Retro(void) -{ - PyObject *mod = PyModule_Create(&RarchModule); - if (!mod) - return NULL; - - py_set_attrs(mod); - return mod; -} - -struct py_state -{ - PyObject *main; - PyObject *dict; - PyObject *inst; - - bool warned_ret; - bool warned_type; -}; - -static char *dupe_newline(const char *str) -{ - unsigned size; - char *ret = NULL; - - if (!str) - return NULL; - - size = strlen(str) + 2; - ret = (char*)malloc(size); - if (!ret) - return NULL; - - strlcpy(ret, str, size); - ret[size - 2] = '\n'; - ret[size - 1] = '\0'; - return ret; -} - -/* Need to make sure that first-line indentation is 0. */ -static char *align_program(const char *program) -{ - size_t prog_size; - char *new_prog = NULL; - char *save = NULL; - char *line = NULL; - unsigned skip_chars = 0; - char *prog = strdup(program); - if (!prog) - return NULL; - - prog_size = strlen(program) + 1; - new_prog = (char*)calloc(1, prog_size); - if (!new_prog) - { - free(prog); - return NULL; - } - - line = dupe_newline(strtok_r(prog, "\n", &save)); - if (!line) - { - free(prog); - free(new_prog); - return NULL; - } - - while (isblank(line[skip_chars]) && line[skip_chars]) - skip_chars++; - - while (line) - { - unsigned length = strlen(line); - unsigned skip_len = skip_chars > length ? length : skip_chars; - - strlcat(new_prog, line + skip_len, prog_size); - - free(line); - line = dupe_newline(strtok_r(NULL, "\n", &save)); - } - - free(prog); - return new_prog; -} - -py_state_t *py_state_new(const char *script, - unsigned is_file, const char *pyclass) -{ - py_state_t *handle; - PyObject *hook; - - RARCH_LOG("Initializing Python runtime ...\n"); - PyImport_AppendInittab("rarch", &PyInit_Retro); - Py_Initialize(); - RARCH_LOG("Initialized Python runtime.\n"); - - handle = (py_state_t*)calloc(1, sizeof(*handle)); - hook = NULL; - - handle->main = PyImport_AddModule("__main__"); - if (!handle->main) - goto error; - Py_INCREF(handle->main); - - if (is_file) - { - /* Have to hack around the fact that the FILE struct - * isn't standardized across environments. - * PyRun_SimpleFile() breaks on Windows because it's - * compiled with MSVC. */ - int64_t len; - char *script_ = NULL; - bool ret = filestream_read_file - (script, (void**)&script_, &len); - - if (!ret || len < 0) - { - RARCH_ERR("Python: Failed to read script\n"); - free(script_); - goto error; - } - - PyRun_SimpleString(script_); - free(script_); - } - else - { - char *script_ = align_program(script); - if (script_) - { - PyRun_SimpleString(script_); - free(script_); - } - } - - RARCH_LOG("Python: Script loaded.\n"); - handle->dict = PyModule_GetDict(handle->main); - if (!handle->dict) - { - RARCH_ERR("Python: PyModule_GetDict() failed.\n"); - goto error; - } - Py_INCREF(handle->dict); - - hook = PyDict_GetItemString(handle->dict, pyclass); - if (!hook) - { - RARCH_ERR("Python: PyDict_GetItemString() failed.\n"); - goto error; - } - - handle->inst = PyObject_CallFunction(hook, NULL); - if (!handle->inst) - { - RARCH_ERR("Python: PyObject_CallFunction() failed.\n"); - goto error; - } - Py_INCREF(handle->inst); - - return handle; - -error: - PyErr_Print(); - PyErr_Clear(); - py_state_free(handle); - return NULL; -} - -void py_state_free(py_state_t *handle) -{ - if (!handle) - return; - - PyErr_Print(); - PyErr_Clear(); - - Py_CLEAR(handle->inst); - Py_CLEAR(handle->dict); - Py_CLEAR(handle->main); - - free(handle); - Py_Finalize(); -} - -float py_state_get(py_state_t *handle, const char *id, - unsigned frame_count) -{ - unsigned i; - float retval; - PyObject *ret = NULL; - settings_t *settings = config_get_ptr(); - - for (i = 0; i < MAX_USERS; i++) - { - struct retro_keybind *general_binds = input_config_binds[i]; - struct retro_keybind *auto_binds = input_autoconf_binds[i]; - enum analog_dpad_mode dpad_mode = settings->uints.input_analog_dpad_mode[i]; - - if (dpad_mode == ANALOG_DPAD_NONE) - continue; - - input_push_analog_dpad(general_binds, dpad_mode); - input_push_analog_dpad(auto_binds, dpad_mode); - } - - ret = PyObject_CallMethod(handle->inst, (char*)id, (char*)"I", frame_count); - - for (i = 0; i < MAX_USERS; i++) - { - struct retro_keybind *general_binds = input_config_binds[i]; - struct retro_keybind *auto_binds = input_autoconf_binds[i]; - input_pop_analog_dpad(general_binds); - input_pop_analog_dpad(auto_binds); - } - - if (!ret) - { - if (!handle->warned_ret) - { - RARCH_WARN("Didn't get return value from script. Bug?\n"); - PyErr_Print(); - PyErr_Clear(); - } - - handle->warned_ret = true; - return 0.0f; - } - - retval = (float)PyFloat_AsDouble(ret); - Py_DECREF(ret); - return retval; -} diff --git a/gfx/drivers_tracker/video_state_python.h b/gfx/drivers_tracker/video_state_python.h deleted file mode 100644 index 3addbc790c..0000000000 --- a/gfx/drivers_tracker/video_state_python.h +++ /dev/null @@ -1,36 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2017 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef __VIDEO_STATE_PYTHON_H -#define __VIDEO_STATE_PYTHON_H - -#include - -#include - -#ifndef PY_STATE_OMIT_DECLARATION -typedef struct py_state py_state_t; -#endif - -py_state_t *py_state_new(const char *program, - unsigned is_file, const char *pyclass); - -void py_state_free(py_state_t *handle); - -float py_state_get(py_state_t *handle, - const char *id, unsigned frame_count); - -#endif diff --git a/gfx/video_shader_parse.c b/gfx/video_shader_parse.c index 0955eeecbb..12a274fd95 100644 --- a/gfx/video_shader_parse.c +++ b/gfx/video_shader_parse.c @@ -570,144 +570,6 @@ bool video_shader_resolve_parameters(config_file_t *conf, return true; } -/** - * video_shader_parse_imports: - * @conf : Preset file to read from. - * @shader : Shader passes handle. - * - * Resolves import parameters belonging to shaders. - * - * Returns: true (1) if successful, otherwise false (0). - **/ -static bool video_shader_parse_imports(config_file_t *conf, - struct video_shader *shader) -{ - size_t path_size = PATH_MAX_LENGTH * sizeof(char); - const char *id = NULL; - char *save = NULL; - char *tmp_str = NULL; - char *imports = (char*)malloc(1024 * sizeof(char)); - - imports[0] = '\0'; - - if (!config_get_array(conf, "imports", imports, - 1024 * sizeof(char))) - { - free(imports); - return true; - } - - for (id = strtok_r(imports, ";", &save); - id && shader->variables < GFX_MAX_VARIABLES; - shader->variables++, id = strtok_r(NULL, ";", &save)) - { - char semantic_buf[64]; - char wram_buf[64]; - char input_slot_buf[64]; - char mask_buf[64]; - char equal_buf[64]; - char semantic[64]; - unsigned addr = 0; - unsigned mask = 0; - unsigned equal = 0; - struct state_tracker_uniform_info *var = - &shader->variable[shader->variables]; - - semantic_buf[0] = wram_buf[0] = input_slot_buf[0] = - mask_buf[0] = equal_buf[0] = semantic[0] = '\0'; - - strlcpy(var->id, id, sizeof(var->id)); - - snprintf(semantic_buf, sizeof(semantic_buf), "%s_semantic", id); - - if (!config_get_array(conf, semantic_buf, semantic, sizeof(semantic))) - { - RARCH_ERR("No semantic for import variable.\n"); - goto error; - } - - snprintf(wram_buf, sizeof(wram_buf), "%s_wram", id); - snprintf(input_slot_buf, sizeof(input_slot_buf), "%s_input_slot", id); - snprintf(mask_buf, sizeof(mask_buf), "%s_mask", id); - snprintf(equal_buf, sizeof(equal_buf), "%s_equal", id); - - if (string_is_equal(semantic, "capture")) - var->type = RARCH_STATE_CAPTURE; - else if (string_is_equal(semantic, "transition")) - var->type = RARCH_STATE_TRANSITION; - else if (string_is_equal(semantic, "transition_count")) - var->type = RARCH_STATE_TRANSITION_COUNT; - else if (string_is_equal(semantic, "capture_previous")) - var->type = RARCH_STATE_CAPTURE_PREV; - else if (string_is_equal(semantic, "transition_previous")) - var->type = RARCH_STATE_TRANSITION_PREV; - else if (string_is_equal(semantic, "python")) - var->type = RARCH_STATE_PYTHON; - else - { - RARCH_ERR("Invalid semantic.\n"); - goto error; - } - - if (var->type != RARCH_STATE_PYTHON) - { - unsigned input_slot = 0; - - if (config_get_uint(conf, input_slot_buf, &input_slot)) - { - switch (input_slot) - { - case 1: - var->ram_type = RARCH_STATE_INPUT_SLOT1; - break; - - case 2: - var->ram_type = RARCH_STATE_INPUT_SLOT2; - break; - - default: - RARCH_ERR("Invalid input slot for import.\n"); - goto error; - } - } - else if (config_get_hex(conf, wram_buf, &addr)) - { - var->ram_type = RARCH_STATE_WRAM; - var->addr = addr; - } - else - { - RARCH_ERR("No address assigned to semantic.\n"); - goto error; - } - } - - if (config_get_hex(conf, mask_buf, &mask)) - var->mask = mask; - if (config_get_hex(conf, equal_buf, &equal)) - var->equal = equal; - } - - tmp_str = (char*)malloc(PATH_MAX_LENGTH * sizeof(char)); - - if (!tmp_str) - goto error; - - tmp_str[0] = '\0'; - if (config_get_path(conf, "import_script", tmp_str, path_size)) - strlcpy(shader->script_path, tmp_str, sizeof(shader->script_path)); - config_get_array(conf, "import_script_class", - shader->script_class, sizeof(shader->script_class)); - free(tmp_str); - - free(imports); - return true; - -error: - free(imports); - return false; -} - /** * video_shader_read_conf_preset: * @conf : Preset file to read from. @@ -799,9 +661,6 @@ bool video_shader_read_conf_preset(config_file_t *conf, if (!video_shader_parse_textures(conf, shader)) return false; - if (!video_shader_parse_imports(conf, shader)) - return false; - return true; } @@ -863,87 +722,6 @@ static void shader_write_fbo(config_file_t *conf, fbo->scale_y, fbo->abs_y, i); } -/** - * import_semantic_to_string: - * @type : Import semantic type from state tracker. - * - * Translates import semantic to human-readable string identifier. - * - * Returns: human-readable string identifier of import semantic. - **/ -static const char *import_semantic_to_str(enum state_tracker_type type) -{ - switch (type) - { - case RARCH_STATE_CAPTURE: - return "capture"; - case RARCH_STATE_TRANSITION: - return "transition"; - case RARCH_STATE_TRANSITION_COUNT: - return "transition_count"; - case RARCH_STATE_CAPTURE_PREV: - return "capture_previous"; - case RARCH_STATE_TRANSITION_PREV: - return "transition_previous"; - case RARCH_STATE_PYTHON: - return "python"; - default: - break; - } - - return "?"; -} - -/** - * shader_write_variable: - * @conf : Preset file to read from. - * @info : State tracker uniform info handle. - * - * Writes variable to shader preset file. - **/ -static void shader_write_variable(config_file_t *conf, - const struct state_tracker_uniform_info *info) -{ - char semantic_buf[64]; - char wram_buf[64]; - char input_slot_buf[64]; - char mask_buf[64]; - char equal_buf[64]; - const char *id = info->id; - - semantic_buf[0] = wram_buf[0] = input_slot_buf[0] = - mask_buf[0] = equal_buf[0] = '\0'; - - snprintf(semantic_buf, sizeof(semantic_buf), "%s_semantic", id); - snprintf(wram_buf, sizeof(wram_buf), "%s_wram", id); - snprintf(input_slot_buf, sizeof(input_slot_buf), "%s_input_slot", id); - snprintf(mask_buf, sizeof(mask_buf), "%s_mask", id); - snprintf(equal_buf, sizeof(equal_buf), "%s_equal", id); - - config_set_string(conf, semantic_buf, - import_semantic_to_str(info->type)); - config_set_hex(conf, mask_buf, info->mask); - config_set_hex(conf, equal_buf, info->equal); - - switch (info->ram_type) - { - case RARCH_STATE_INPUT_SLOT1: - config_set_int(conf, input_slot_buf, 1); - break; - - case RARCH_STATE_INPUT_SLOT2: - config_set_int(conf, input_slot_buf, 2); - break; - - case RARCH_STATE_WRAM: - config_set_hex(conf, wram_buf, info->addr); - break; - - case RARCH_STATE_NONE: - break; - } -} - /** * video_shader_write_conf_preset: * @conf : Preset file to write to. @@ -1096,36 +874,6 @@ void video_shader_write_conf_preset(config_file_t *conf, } } } - - if (*shader->script_path) - config_set_string(conf, "import_script", shader->script_path); - if (*shader->script_class) - config_set_string(conf, "import_script_class", shader->script_class); - - if (shader->variables) - { - size_t var_tmp = 4096 * sizeof(char); - char *variables = (char*)malloc(var_tmp); - - if (variables) - { - variables[0] = '\0'; - - strlcpy(variables, shader->variable[0].id, var_tmp); - - for (i = 1; i < shader->variables; i++) - { - strlcat(variables, ";", var_tmp); - strlcat(variables, shader->variable[i].id, var_tmp); - } - - config_set_string(conf, "imports", variables); - - for (i = 0; i < shader->variables; i++) - shader_write_variable(conf, &shader->variable[i]); - free(variables); - } - } } const char *video_shader_to_str(enum rarch_shader_type type) @@ -1297,13 +1045,6 @@ void video_shader_resolve_relative(struct video_shader *shader, ref_path, tmp_path, sizeof(shader->lut[i].path)); } - if (*shader->script_path) - { - strlcpy(tmp_path, shader->script_path, tmp_path_size); - fill_pathname_resolve_relative(shader->script_path, - ref_path, tmp_path, sizeof(shader->script_path)); - } - free(tmp_path); } diff --git a/gfx/video_shader_parse.h b/gfx/video_shader_parse.h index c4920c6cec..ad6fa783f1 100644 --- a/gfx/video_shader_parse.h +++ b/gfx/video_shader_parse.h @@ -17,8 +17,6 @@ #ifndef __VIDEO_SHADER_PARSE_H #define __VIDEO_SHADER_PARSE_H -#include "video_state_tracker.h" - #include #include #include @@ -142,11 +140,7 @@ struct video_shader_lut struct video_shader { char prefix[64]; - char script_class[512]; - char script_path[PATH_MAX_LENGTH]; char path[PATH_MAX_LENGTH]; - char *script; /* Dynamically allocated. Must be free'd. Only used by XML. */ - bool modern; /* Only used for XML shaders. */ unsigned passes; @@ -163,7 +157,6 @@ struct video_shader struct video_shader_lut lut[GFX_MAX_TEXTURES]; struct video_shader_parameter parameters[GFX_MAX_PARAMETERS]; - struct state_tracker_uniform_info variable[GFX_MAX_VARIABLES]; }; /** diff --git a/gfx/video_state_tracker.c b/gfx/video_state_tracker.c deleted file mode 100644 index cb57728135..0000000000 --- a/gfx/video_state_tracker.c +++ /dev/null @@ -1,296 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2017 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#include - -#include -#include - -#ifdef HAVE_CONFIG_H -#include "../config.h" -#endif - -#ifdef HAVE_PYTHON -#include "drivers_tracker/video_state_python.h" -#endif - -#include "video_state_tracker.h" - -#include "../input/input_driver.h" - -#include "../verbosity.h" - -struct state_tracker_internal -{ - char id[64]; - - bool is_input; - const uint16_t *input_ptr; - const uint8_t *ptr; -#ifdef HAVE_PYTHON - py_state_t *py; -#endif - - uint32_t addr; - uint16_t mask; - - uint16_t equal; - - enum state_tracker_type type; - - uint32_t prev[2]; - int frame_count; - int frame_count_prev; - uint32_t old_value; - int transition_count; -}; - -struct state_tracker -{ - struct state_tracker_internal *info; - unsigned info_elem; - - uint16_t input_state[2]; - -#ifdef HAVE_PYTHON - py_state_t *py; -#endif -}; - -/** - * state_tracker_init: - * @info : State tracker info handle. - * - * Creates and initializes graphics state tracker. - * - * Returns: new state tracker handle if successful, otherwise NULL. - **/ -state_tracker_t* state_tracker_init(const struct state_tracker_info *info) -{ - unsigned i; - struct state_tracker_internal *tracker_info = NULL; - state_tracker_t *tracker = (state_tracker_t*) - calloc(1, sizeof(*tracker)); - - if (!tracker) - return NULL; - -#ifdef HAVE_PYTHON - if (info->script) - { - tracker->py = py_state_new(info->script, info->script_is_file, - info->script_class ? info->script_class : "GameAware"); - - if (!tracker->py) - { - RARCH_ERR("Failed to initialize Python script.\n"); - goto error; - } - } -#endif - - tracker_info = (struct state_tracker_internal*) - calloc(info->info_elem, sizeof(struct state_tracker_internal)); - - if (!tracker_info) - goto error; - - tracker->info = tracker_info; - tracker->info_elem = info->info_elem; - - for (i = 0; i < info->info_elem; i++) - { - /* If we don't have a valid pointer. */ - static const uint8_t empty = 0; - - strlcpy(tracker->info[i].id, info->info[i].id, - sizeof(tracker->info[i].id)); - - tracker->info[i].addr = info->info[i].addr; - tracker->info[i].type = info->info[i].type; - tracker->info[i].mask = (info->info[i].mask == 0) - ? 0xffff : info->info[i].mask; - tracker->info[i].equal = info->info[i].equal; - -#ifdef HAVE_PYTHON - if (info->info[i].type == RARCH_STATE_PYTHON) - { - if (!tracker->py) - { - RARCH_ERR("Python semantic was requested, but Python tracker is not loaded.\n"); - - free(tracker->info); - goto error; - } - tracker->info[i].py = tracker->py; - } -#endif - - switch (info->info[i].ram_type) - { - case RARCH_STATE_WRAM: - tracker->info[i].ptr = info->wram ? info->wram : ∅ - break; - case RARCH_STATE_INPUT_SLOT1: - tracker->info[i].input_ptr = &tracker->input_state[0]; - tracker->info[i].is_input = true; - break; - case RARCH_STATE_INPUT_SLOT2: - tracker->info[i].input_ptr = &tracker->input_state[1]; - tracker->info[i].is_input = true; - break; - - default: - tracker->info[i].ptr = ∅ - } - } - - return tracker; - -error: - RARCH_ERR("Allocation of state tracker info failed.\n"); - free(tracker); - return NULL; -} - -/** - * state_tracker_free: - * @tracker : State tracker handle. - * - * Frees a state tracker handle. - **/ -void state_tracker_free(state_tracker_t *tracker) -{ - if (tracker) - { - free(tracker->info); -#ifdef HAVE_PYTHON - py_state_free(tracker->py); -#endif - } - - free(tracker); -} - -static INLINE uint16_t state_tracker_fetch( - const struct state_tracker_internal *info) -{ - uint16_t val = info->ptr[info->addr]; - - if (info->is_input) - val = *info->input_ptr; - - val &= info->mask; - - if (info->equal && val != info->equal) - val = 0; - - return val; -} - -static void state_tracker_update_element( - struct state_tracker_uniform *uniform, - struct state_tracker_internal *info, - unsigned frame_count) -{ - uniform->id = info->id; - - switch (info->type) - { - case RARCH_STATE_CAPTURE: - uniform->value = state_tracker_fetch(info); - break; - - case RARCH_STATE_CAPTURE_PREV: - if (info->prev[0] != state_tracker_fetch(info)) - { - info->prev[1] = info->prev[0]; - info->prev[0] = state_tracker_fetch(info); - } - uniform->value = info->prev[1]; - break; - - case RARCH_STATE_TRANSITION: - if (info->old_value != state_tracker_fetch(info)) - { - info->old_value = state_tracker_fetch(info); - info->frame_count = frame_count; - } - uniform->value = info->frame_count; - break; - - case RARCH_STATE_TRANSITION_COUNT: - if (info->old_value != state_tracker_fetch(info)) - { - info->old_value = state_tracker_fetch(info); - info->transition_count++; - } - uniform->value = info->transition_count; - break; - - case RARCH_STATE_TRANSITION_PREV: - if (info->old_value != state_tracker_fetch(info)) - { - info->old_value = state_tracker_fetch(info); - info->frame_count_prev = info->frame_count; - info->frame_count = frame_count; - } - uniform->value = info->frame_count_prev; - break; - -#ifdef HAVE_PYTHON - case RARCH_STATE_PYTHON: - uniform->value = py_state_get(info->py, info->id, frame_count); - break; -#endif - - default: - break; - } -} - -void state_tracker_update_input(uint16_t *input1, uint16_t *input2); - -/** - * state_tracker_get_uniform: - * @tracker : State tracker handle. - * @uniforms : State tracker uniforms. - * @elem : Amount of uniform elements. - * @frame_count : Frame count. - * - * Calls state_tracker_update_input(), and updates each uniform - * element accordingly. - * - * Returns: Amount of state elements (either equal to @elem - * or equal to @tracker->info_eleme). - **/ -unsigned state_tracker_get_uniform(state_tracker_t *tracker, - struct state_tracker_uniform *uniforms, - unsigned elem, unsigned frame_count) -{ - unsigned i, elems = elem; - - if (tracker->info_elem < elem) - elems = tracker->info_elem; - - state_tracker_update_input(&tracker->input_state[0], &tracker->input_state[1]); - - for (i = 0; i < elems; i++) - state_tracker_update_element( - &uniforms[i], &tracker->info[i], frame_count); - - return elems; -} diff --git a/gfx/video_state_tracker.h b/gfx/video_state_tracker.h deleted file mode 100644 index f003cc86ec..0000000000 --- a/gfx/video_state_tracker.h +++ /dev/null @@ -1,112 +0,0 @@ -/* RetroArch - A frontend for libretro. - * Copyright (C) 2010-2014 - Hans-Kristian Arntzen - * Copyright (C) 2011-2017 - Daniel De Matteis - * - * RetroArch is free software: you can redistribute it and/or modify it under the terms - * of the GNU General Public License as published by the Free Software Found- - * ation, either version 3 of the License, or (at your option) any later version. - * - * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - * PURPOSE. See the GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along with RetroArch. - * If not, see . - */ - -#ifndef __VIDEO_STATE_TRACKER_H -#define __VIDEO_STATE_TRACKER_H - -#include - -#include -#include - -RETRO_BEGIN_DECLS - -enum state_tracker_type -{ - RARCH_STATE_CAPTURE = 0, - RARCH_STATE_CAPTURE_PREV, - RARCH_STATE_TRANSITION, - RARCH_STATE_TRANSITION_COUNT, - RARCH_STATE_TRANSITION_PREV, - RARCH_STATE_PYTHON -}; - -enum state_ram_type -{ - RARCH_STATE_NONE, - RARCH_STATE_WRAM, - RARCH_STATE_INPUT_SLOT1, - RARCH_STATE_INPUT_SLOT2 -}; - -struct state_tracker_uniform_info -{ - enum state_tracker_type type; - enum state_ram_type ram_type; - char id[64]; - uint16_t mask; - uint16_t equal; - uint32_t addr; -}; - -struct state_tracker_info -{ - const char *script; - const char *script_class; - bool script_is_file; - const uint8_t *wram; - unsigned info_elem; - const struct state_tracker_uniform_info *info; -}; - -struct state_tracker_uniform -{ - const char *id; - float value; -}; - -typedef struct state_tracker state_tracker_t; - -/** - * state_tracker_init: - * @info : State tracker info handle. - * - * Creates and initializes graphics state tracker. - * - * Returns: new state tracker handle if successful, otherwise NULL. - **/ -state_tracker_t* state_tracker_init(const struct state_tracker_info *info); - -/** - * state_tracker_free: - * @tracker : State tracker handle. - * - * Frees a state tracker handle. - **/ -void state_tracker_free(state_tracker_t *tracker); - -/** - * state_tracker_get_uniform: - * @tracker : State tracker handle. - * @uniforms : State tracker uniforms. - * @elem : Amount of uniform elements. - * @frame_count : Frame count. - * - * Calls update_input(), and updates each uniform - * element accordingly. - * - * Returns: Amount of state elements (either equal to @elem - * or equal to @tracker->info_eleme). - **/ -unsigned state_tracker_get_uniform(state_tracker_t *tracker, - struct state_tracker_uniform *uniforms, - unsigned elem, unsigned frame_count); - -void state_tracker_update_input(uint16_t *input1, uint16_t *input2); - -RETRO_END_DECLS - -#endif diff --git a/griffin/griffin.c b/griffin/griffin.c index bec00f5482..386aabc392 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -729,15 +729,6 @@ INPUT (HID) #include "../input/drivers_keyboard/keyboard_event_xkb.c" #endif -/*============================================================ -STATE TRACKER -============================================================ */ -#include "../gfx/video_state_tracker.c" - -#ifdef HAVE_PYTHON -#include "../gfx/drivers_tracker/video_state_python.c" -#endif - /*============================================================ FIFO BUFFER ============================================================ */ diff --git a/qb/config.libs.sh b/qb/config.libs.sh index 462a37ebb3..ef85e0de46 100644 --- a/qb/config.libs.sh +++ b/qb/config.libs.sh @@ -484,8 +484,6 @@ else check_lib '' VULKAN -lvulkan vkCreateInstance fi -check_pkgconf PYTHON 'python3 python3 python-3.7 python-3.6 python-3.5 python-3.4 python-3.3 python-3.2' - if [ "$HAVE_MENU" != 'no' ]; then if [ "$HAVE_OPENGL" = 'no' ] && [ "$HAVE_OPENGLES" = 'no' ] && [ "$HAVE_VULKAN" = 'no' ]; then if [ "$OS" = 'Win32' ]; then diff --git a/qb/config.params.sh b/qb/config.params.sh index cc476f7e88..89f4704734 100644 --- a/qb/config.params.sh +++ b/qb/config.params.sh @@ -103,8 +103,6 @@ HAVE_STB_IMAGE=yes # stb image loading support HAVE_STB_VORBIS=yes # stb vorbis support HAVE_IBXM=yes # IBXM support HAVE_XVIDEO=auto # XVideo support -HAVE_PYTHON=no # Python 3 support for shaders -C89_PYTHON=no HAVE_V4L2=auto # Video4linux2 support HAVE_NEON=no # ARM NEON optimizations HAVE_SSE=no # x86 SSE optimizations (SSE, SSE2) diff --git a/retroarch.c b/retroarch.c index 53cf6e3351..77326a4714 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3659,71 +3659,6 @@ int16_t input_state(unsigned port, unsigned device, return result; } -/** - * state_tracker_update_input: - * - * Updates 16-bit input in same format as libretro API itself. - **/ -void state_tracker_update_input(uint16_t *input1, uint16_t *input2) -{ - unsigned i; - const struct retro_keybind *binds[MAX_USERS]; - settings_t *settings = configuration_settings; - uint8_t max_users = (uint8_t)input_driver_max_users; - - for (i = 0; i < max_users; i++) - { - struct retro_keybind *general_binds = input_config_binds[i]; - struct retro_keybind *auto_binds = input_autoconf_binds[i]; - enum analog_dpad_mode dpad_mode = (enum analog_dpad_mode)settings->uints.input_analog_dpad_mode[i]; - binds[i] = input_config_binds[i]; - - if (dpad_mode == ANALOG_DPAD_NONE) - continue; - - input_push_analog_dpad(general_binds, dpad_mode); - input_push_analog_dpad(auto_binds, dpad_mode); - } - - if (!input_driver_block_libretro_input) - { - rarch_joypad_info_t joypad_info; - joypad_info.axis_threshold = input_driver_axis_threshold; - - for (i = 4; i < 16; i++) - { - unsigned id = buttons[i - 4]; - - if (binds[0][id].valid) - { - joypad_info.joy_idx = settings->uints.input_joypad_map[0]; - joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; - *input1 |= (current_input->input_state(current_input_data, joypad_info, - binds, - 0, RETRO_DEVICE_JOYPAD, 0, id) ? 1 : 0) << i; - } - - if (binds[1][id].valid) - { - joypad_info.joy_idx = settings->uints.input_joypad_map[1]; - joypad_info.auto_binds = input_autoconf_binds[joypad_info.joy_idx]; - *input2 |= (current_input->input_state(current_input_data, joypad_info, - binds, - 1, RETRO_DEVICE_JOYPAD, 0, id) ? 1 : 0) << i; - } - } - } - - for (i = 0; i < max_users; i++) - { - struct retro_keybind *general_binds = input_config_binds[i]; - struct retro_keybind *auto_binds = input_autoconf_binds[i]; - - input_pop_analog_dpad(general_binds); - input_pop_analog_dpad(auto_binds); - } -} - static INLINE bool input_keys_pressed_other_sources(unsigned i, input_bits_t* p_new_state) {