Refactor shader_parse.c

This commit is contained in:
twinaphex 2014-10-26 03:04:35 +01:00
parent 4587d42271
commit f99b8be3f6
1 changed files with 45 additions and 45 deletions

View File

@ -22,8 +22,6 @@
#include <file/file_path.h> #include <file/file_path.h>
#include "../../general.h" #include "../../general.h"
#define print_buf(buf, ...) snprintf(buf, sizeof(buf), __VA_ARGS__)
static const char *wrap_mode_to_str(enum gfx_wrap_type type) static const char *wrap_mode_to_str(enum gfx_wrap_type type)
{ {
switch (type) switch (type)
@ -62,7 +60,7 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
{ {
/* Source */ /* Source */
char shader_name[64]; char shader_name[64];
print_buf(shader_name, "shader%u", i); snprintf(shader_name, sizeof(shader_name), "shader%u", i);
if (!config_get_path(conf, shader_name, pass->source.path, sizeof(pass->source.path))) if (!config_get_path(conf, shader_name, pass->source.path, sizeof(pass->source.path)))
{ {
RARCH_ERR("Couldn't parse shader source (%s).\n", shader_name); RARCH_ERR("Couldn't parse shader source (%s).\n", shader_name);
@ -71,7 +69,7 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
/* Smooth */ /* Smooth */
char filter_name_buf[64]; char filter_name_buf[64];
print_buf(filter_name_buf, "filter_linear%u", i); snprintf(filter_name_buf, sizeof(filter_name_buf), "filter_linear%u", i);
bool smooth = false; bool smooth = false;
if (config_get_bool(conf, filter_name_buf, &smooth)) if (config_get_bool(conf, filter_name_buf, &smooth))
pass->filter = smooth ? RARCH_FILTER_LINEAR : RARCH_FILTER_NEAREST; pass->filter = smooth ? RARCH_FILTER_LINEAR : RARCH_FILTER_NEAREST;
@ -80,34 +78,36 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
/* Wrapping mode */ /* Wrapping mode */
char wrap_name_buf[64]; char wrap_name_buf[64];
print_buf(wrap_name_buf, "wrap_mode%u", i);
char wrap_mode[64]; char wrap_mode[64];
snprintf(wrap_name_buf, sizeof(wrap_name_buf), "wrap_mode%u", i);
if (config_get_array(conf, wrap_name_buf, wrap_mode, sizeof(wrap_mode))) if (config_get_array(conf, wrap_name_buf, wrap_mode, sizeof(wrap_mode)))
pass->wrap = wrap_str_to_mode(wrap_mode); pass->wrap = wrap_str_to_mode(wrap_mode);
/* Frame count mod */ /* Frame count mod */
char frame_count_mod[64] = {0}; char frame_count_mod[64] = {0};
char frame_count_mod_buf[64]; char frame_count_mod_buf[64];
print_buf(frame_count_mod_buf, "frame_count_mod%u", i);
snprintf(frame_count_mod_buf, sizeof(frame_count_mod_buf), "frame_count_mod%u", i);
if (config_get_array(conf, frame_count_mod_buf, if (config_get_array(conf, frame_count_mod_buf,
frame_count_mod, sizeof(frame_count_mod))) frame_count_mod, sizeof(frame_count_mod)))
pass->frame_count_mod = strtoul(frame_count_mod, NULL, 0); pass->frame_count_mod = strtoul(frame_count_mod, NULL, 0);
/* FBO types and mipmapping */ /* FBO types and mipmapping */
char srgb_output_buf[64]; char srgb_output_buf[64];
print_buf(srgb_output_buf, "srgb_framebuffer%u", i); snprintf(srgb_output_buf, sizeof(srgb_output_buf), "srgb_framebuffer%u", i);
config_get_bool(conf, srgb_output_buf, &pass->fbo.srgb_fbo); config_get_bool(conf, srgb_output_buf, &pass->fbo.srgb_fbo);
char fp_fbo_buf[64]; char fp_fbo_buf[64];
print_buf(fp_fbo_buf, "float_framebuffer%u", i); snprintf(fp_fbo_buf, sizeof(fp_fbo_buf), "float_framebuffer%u", i);
config_get_bool(conf, fp_fbo_buf, &pass->fbo.fp_fbo); config_get_bool(conf, fp_fbo_buf, &pass->fbo.fp_fbo);
char mipmap_buf[64]; char mipmap_buf[64];
print_buf(mipmap_buf, "mipmap_input%u", i); snprintf(mipmap_buf, sizeof(mipmap_buf), "mipmap_input%u", i);
config_get_bool(conf, mipmap_buf, &pass->mipmap); config_get_bool(conf, mipmap_buf, &pass->mipmap);
char alias_buf[64]; char alias_buf[64];
print_buf(alias_buf, "alias%u", i); snprintf(alias_buf, sizeof(alias_buf), "alias%u", i);
if (!config_get_array(conf, alias_buf, pass->alias, sizeof(pass->alias))) if (!config_get_array(conf, alias_buf, pass->alias, sizeof(pass->alias)))
*pass->alias = '\0'; *pass->alias = '\0';
@ -117,13 +117,13 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
char scale_type_x[64] = {0}; char scale_type_x[64] = {0};
char scale_type_y[64] = {0}; char scale_type_y[64] = {0};
char scale_name_buf[64]; char scale_name_buf[64];
print_buf(scale_name_buf, "scale_type%u", i); snprintf(scale_name_buf, sizeof(scale_name_buf), "scale_type%u", i);
config_get_array(conf, scale_name_buf, scale_type, sizeof(scale_type)); config_get_array(conf, scale_name_buf, scale_type, sizeof(scale_type));
print_buf(scale_name_buf, "scale_type_x%u", i); snprintf(scale_name_buf, sizeof(scale_name_buf), "scale_type_x%u", i);
config_get_array(conf, scale_name_buf, scale_type_x, sizeof(scale_type_x)); config_get_array(conf, scale_name_buf, scale_type_x, sizeof(scale_type_x));
print_buf(scale_name_buf, "scale_type_y%u", i); snprintf(scale_name_buf, sizeof(scale_name_buf), "scale_type_y%u", i);
config_get_array(conf, scale_name_buf, scale_type_y, sizeof(scale_type_y)); config_get_array(conf, scale_name_buf, scale_type_y, sizeof(scale_type_y));
if (!*scale_type && !*scale_type_x && !*scale_type_y) if (!*scale_type && !*scale_type_x && !*scale_type_y)
@ -175,14 +175,14 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
} }
} }
print_buf(attr_name_buf, "scale%u", i); snprintf(attr_name_buf, sizeof(attr_name_buf), "scale%u", i);
if (scale->type_x == RARCH_SCALE_ABSOLUTE) if (scale->type_x == RARCH_SCALE_ABSOLUTE)
{ {
if (config_get_int(conf, attr_name_buf, &iattr)) if (config_get_int(conf, attr_name_buf, &iattr))
scale->abs_x = iattr; scale->abs_x = iattr;
else else
{ {
print_buf(attr_name_buf, "scale_x%u", i); snprintf(attr_name_buf, sizeof(attr_name_buf), "scale_x%u", i);
if (config_get_int(conf, attr_name_buf, &iattr)) if (config_get_int(conf, attr_name_buf, &iattr))
scale->abs_x = iattr; scale->abs_x = iattr;
} }
@ -193,20 +193,20 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
scale->scale_x = fattr; scale->scale_x = fattr;
else else
{ {
print_buf(attr_name_buf, "scale_x%u", i); snprintf(attr_name_buf, sizeof(attr_name_buf), "scale_x%u", i);
if (config_get_float(conf, attr_name_buf, &fattr)) if (config_get_float(conf, attr_name_buf, &fattr))
scale->scale_x = fattr; scale->scale_x = fattr;
} }
} }
print_buf(attr_name_buf, "scale%u", i); snprintf(attr_name_buf, sizeof(attr_name_buf), "scale%u", i);
if (scale->type_y == RARCH_SCALE_ABSOLUTE) if (scale->type_y == RARCH_SCALE_ABSOLUTE)
{ {
if (config_get_int(conf, attr_name_buf, &iattr)) if (config_get_int(conf, attr_name_buf, &iattr))
scale->abs_y = iattr; scale->abs_y = iattr;
else else
{ {
print_buf(attr_name_buf, "scale_y%u", i); snprintf(attr_name_buf, sizeof(attr_name_buf), "scale_y%u", i);
if (config_get_int(conf, attr_name_buf, &iattr)) if (config_get_int(conf, attr_name_buf, &iattr))
scale->abs_y = iattr; scale->abs_y = iattr;
} }
@ -217,7 +217,7 @@ static bool shader_parse_pass(config_file_t *conf, struct gfx_shader_pass *pass,
scale->scale_y = fattr; scale->scale_y = fattr;
else else
{ {
print_buf(attr_name_buf, "scale_y%u", i); snprintf(attr_name_buf, sizeof(attr_name_buf), "scale_y%u", i);
if (config_get_float(conf, attr_name_buf, &fattr)) if (config_get_float(conf, attr_name_buf, &fattr))
scale->scale_y = fattr; scale->scale_y = fattr;
} }
@ -251,7 +251,7 @@ static bool shader_parse_textures(config_file_t *conf,
sizeof(shader->lut[shader->luts].id)); sizeof(shader->lut[shader->luts].id));
char id_filter[64]; char id_filter[64];
print_buf(id_filter, "%s_linear", id); snprintf(id_filter, sizeof(id_filter), "%s_linear", id);
bool smooth = false; bool smooth = false;
if (config_get_bool(conf, id_filter, &smooth)) if (config_get_bool(conf, id_filter, &smooth))
shader->lut[shader->luts].filter = smooth ? shader->lut[shader->luts].filter = smooth ?
@ -260,13 +260,13 @@ static bool shader_parse_textures(config_file_t *conf,
shader->lut[shader->luts].filter = RARCH_FILTER_UNSPEC; shader->lut[shader->luts].filter = RARCH_FILTER_UNSPEC;
char id_wrap[64]; char id_wrap[64];
print_buf(id_wrap, "%s_wrap_mode", id); snprintf(id_wrap, sizeof(id_wrap), "%s_wrap_mode", id);
char wrap_mode[64]; char wrap_mode[64];
if (config_get_array(conf, id_wrap, wrap_mode, sizeof(wrap_mode))) if (config_get_array(conf, id_wrap, wrap_mode, sizeof(wrap_mode)))
shader->lut[shader->luts].wrap = wrap_str_to_mode(wrap_mode); shader->lut[shader->luts].wrap = wrap_str_to_mode(wrap_mode);
char id_mipmap[64]; char id_mipmap[64];
print_buf(id_mipmap, "%s_mipmap", id); snprintf(id_mipmap, sizeof(id_mipmap), "%s_mipmap", id);
bool mipmap = false; bool mipmap = false;
if (config_get_bool(conf, id_mipmap, &mipmap)) if (config_get_bool(conf, id_mipmap, &mipmap))
shader->lut[shader->luts].mipmap = mipmap; shader->lut[shader->luts].mipmap = mipmap;
@ -391,11 +391,11 @@ static bool shader_parse_imports(config_file_t *conf,
char mask_buf[64]; char mask_buf[64];
char equal_buf[64]; char equal_buf[64];
print_buf(semantic_buf, "%s_semantic", id); snprintf(semantic_buf, sizeof(semantic_buf), "%s_semantic", id);
print_buf(wram_buf, "%s_wram", id); snprintf(wram_buf, sizeof(wram_buf), "%s_wram", id);
print_buf(input_slot_buf, "%s_input_slot", id); snprintf(input_slot_buf, sizeof(input_slot_buf), "%s_input_slot", id);
print_buf(mask_buf, "%s_mask", id); snprintf(mask_buf, sizeof(mask_buf), "%s_mask", id);
print_buf(equal_buf, "%s_equal", id); snprintf(equal_buf, sizeof(equal_buf), "%s_equal", id);
char semantic[64]; char semantic[64];
if (!config_get_array(conf, semantic_buf, semantic, sizeof(semantic))) if (!config_get_array(conf, semantic_buf, semantic, sizeof(semantic)))
@ -524,10 +524,10 @@ static void shader_write_scale_dim(config_file_t *conf, const char *dim,
enum gfx_scale_type type, float scale, unsigned absolute, unsigned i) enum gfx_scale_type type, float scale, unsigned absolute, unsigned i)
{ {
char key[64]; char key[64];
print_buf(key, "scale_type_%s%u", dim, i); snprintf(key, sizeof(key), "scale_type_%s%u", dim, i);
config_set_string(conf, key, scale_type_to_str(type)); config_set_string(conf, key, scale_type_to_str(type));
print_buf(key, "scale_%s%u", dim, i); snprintf(key, sizeof(key), "scale_%s%u", dim, i);
if (type == RARCH_SCALE_ABSOLUTE) if (type == RARCH_SCALE_ABSOLUTE)
config_set_int(conf, key, absolute); config_set_int(conf, key, absolute);
else else
@ -538,9 +538,9 @@ static void shader_write_fbo(config_file_t *conf,
const struct gfx_fbo_scale *fbo, unsigned i) const struct gfx_fbo_scale *fbo, unsigned i)
{ {
char key[64]; char key[64];
print_buf(key, "float_framebuffer%u", i); snprintf(key, sizeof(key), "float_framebuffer%u", i);
config_set_bool(conf, key, fbo->fp_fbo); config_set_bool(conf, key, fbo->fp_fbo);
print_buf(key, "srgb_framebuffer%u", i); snprintf(key, sizeof(key), "srgb_framebuffer%u", i);
config_set_bool(conf, key, fbo->srgb_fbo); config_set_bool(conf, key, fbo->srgb_fbo);
if (!fbo->valid) if (!fbo->valid)
@ -583,11 +583,11 @@ static void shader_write_variable(config_file_t *conf,
char mask_buf[64]; char mask_buf[64];
char equal_buf[64]; char equal_buf[64];
print_buf(semantic_buf, "%s_semantic", id); snprintf(semantic_buf, sizeof(semantic_buf), "%s_semantic", id);
print_buf(wram_buf, "%s_wram", id); snprintf(wram_buf, sizeof(wram_buf), "%s_wram", id);
print_buf(input_slot_buf, "%s_input_slot", id); snprintf(input_slot_buf, sizeof(input_slot_buf), "%s_input_slot", id);
print_buf(mask_buf, "%s_mask", id); snprintf(mask_buf, sizeof(mask_buf), "%s_mask", id);
print_buf(equal_buf, "%s_equal", id); snprintf(equal_buf, sizeof(equal_buf), "%s_equal", id);
config_set_string(conf, semantic_buf, config_set_string(conf, semantic_buf,
import_semantic_to_string(info->type)); import_semantic_to_string(info->type));
@ -623,28 +623,28 @@ void gfx_shader_write_conf_cgp(config_file_t *conf,
const struct gfx_shader_pass *pass = &shader->pass[i]; const struct gfx_shader_pass *pass = &shader->pass[i];
char key[64]; char key[64];
print_buf(key, "shader%u", i); snprintf(key, sizeof(key), "shader%u", i);
config_set_string(conf, key, pass->source.path); config_set_string(conf, key, pass->source.path);
if (pass->filter != RARCH_FILTER_UNSPEC) if (pass->filter != RARCH_FILTER_UNSPEC)
{ {
print_buf(key, "filter_linear%u", i); snprintf(key, sizeof(key), "filter_linear%u", i);
config_set_bool(conf, key, pass->filter == RARCH_FILTER_LINEAR); config_set_bool(conf, key, pass->filter == RARCH_FILTER_LINEAR);
} }
print_buf(key, "wrap_mode%u", i); snprintf(key, sizeof(key), "wrap_mode%u", i);
config_set_string(conf, key, wrap_mode_to_str(pass->wrap)); config_set_string(conf, key, wrap_mode_to_str(pass->wrap));
if (pass->frame_count_mod) if (pass->frame_count_mod)
{ {
print_buf(key, "frame_count_mod%u", i); snprintf(key, sizeof(key), "frame_count_mod%u", i);
config_set_int(conf, key, pass->frame_count_mod); config_set_int(conf, key, pass->frame_count_mod);
} }
print_buf(key, "mipmap_input%u", i); snprintf(key, sizeof(key), "mipmap_input%u", i);
config_set_bool(conf, key, pass->mipmap); config_set_bool(conf, key, pass->mipmap);
print_buf(key, "alias%u", i); snprintf(key, sizeof(key), "alias%u", i);
config_set_string(conf, key, pass->alias); config_set_string(conf, key, pass->alias);
shader_write_fbo(conf, &pass->fbo, i); shader_write_fbo(conf, &pass->fbo, i);
@ -689,15 +689,15 @@ void gfx_shader_write_conf_cgp(config_file_t *conf,
if (shader->lut[i].filter != RARCH_FILTER_UNSPEC) if (shader->lut[i].filter != RARCH_FILTER_UNSPEC)
{ {
print_buf(key, "%s_linear", shader->lut[i].id); snprintf(key, sizeof(key), "%s_linear", shader->lut[i].id);
config_set_bool(conf, key, config_set_bool(conf, key,
shader->lut[i].filter == RARCH_FILTER_LINEAR); shader->lut[i].filter == RARCH_FILTER_LINEAR);
} }
print_buf(key, "%s_wrap_mode", shader->lut[i].id); snprintf(key, sizeof(key), "%s_wrap_mode", shader->lut[i].id);
config_set_string(conf, key, wrap_mode_to_str(shader->lut[i].wrap)); config_set_string(conf, key, wrap_mode_to_str(shader->lut[i].wrap));
print_buf(key, "%s_mipmap", shader->lut[i].id); snprintf(key, sizeof(key), "%s_mipmap", shader->lut[i].id);
config_set_bool(conf, key, shader->lut[i].mipmap); config_set_bool(conf, key, shader->lut[i].mipmap);
} }
} }