mirror of
https://github.com/libretro/RetroArch
synced 2025-04-01 04:20:27 +00:00
Cleanup
This commit is contained in:
parent
a14ccc2d4d
commit
41d225f937
@ -283,13 +283,14 @@ static void gl_glsl_print_linker_log(GLuint obj)
|
|||||||
#if defined(ORBIS)
|
#if defined(ORBIS)
|
||||||
void glPigletGetShaderBinarySCE(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary);
|
void glPigletGetShaderBinarySCE(GLuint program, GLsizei bufSize, GLsizei* length, GLenum* binaryFormat, void* binary);
|
||||||
|
|
||||||
static const XXH64_hash_t gl_glsl_hash_shader(const char **source, const int source_length)
|
static const XXH64_hash_t gl_glsl_hash_shader(
|
||||||
|
const char **source, const int source_length)
|
||||||
{
|
{
|
||||||
int n;
|
int n;
|
||||||
|
|
||||||
XXH64_state_t* const state = XXH64_createState();
|
XXH64_state_t* const state = XXH64_createState();
|
||||||
|
|
||||||
XXH64_reset(state, 0xAABBCCDDu);
|
XXH64_reset(state, 0xAABBCCDDu);
|
||||||
for(n=0; n<source_length; n++)
|
for(n = 0; n < source_length; n++)
|
||||||
{
|
{
|
||||||
XXH64_update(state, source[n], strlen(source[n]));
|
XXH64_update(state, source[n], strlen(source[n]));
|
||||||
}
|
}
|
||||||
@ -303,61 +304,55 @@ static const XXH64_hash_t gl_glsl_hash_shader(const char **source, const int sou
|
|||||||
|
|
||||||
static bool gl_glsl_load_binary_shader(GLuint shader, char *save_path)
|
static bool gl_glsl_load_binary_shader(GLuint shader, char *save_path)
|
||||||
{
|
{
|
||||||
FILE * shader_binary;
|
|
||||||
GLsizei shader_size;
|
GLsizei shader_size;
|
||||||
GLint status;
|
GLint status;
|
||||||
|
FILE *shader_binary = fopen(save_path, "rb" );
|
||||||
|
|
||||||
shader_binary = fopen(save_path, "rb" );
|
if(shader_binary)
|
||||||
|
|
||||||
if( shader_binary != NULL)
|
|
||||||
{
|
{
|
||||||
printf("[ShaderDumper] Reading shader dump ... %s\n", save_path);
|
char *shader_data = NULL;
|
||||||
|
|
||||||
fseek (shader_binary, 0, SEEK_END); // non-portable
|
fseek (shader_binary, 0, SEEK_END);
|
||||||
shader_size=ftell (shader_binary);
|
shader_size=ftell (shader_binary);
|
||||||
fseek(shader_binary, 0, SEEK_SET);
|
fseek(shader_binary, 0, SEEK_SET);
|
||||||
|
|
||||||
char * shader_data = malloc(shader_size);
|
shader_data = malloc(shader_size);
|
||||||
fread(shader_data, shader_size, 1, shader_binary);
|
fread(shader_data, shader_size, 1, shader_binary);
|
||||||
|
|
||||||
fclose(shader_binary);
|
fclose(shader_binary);
|
||||||
|
|
||||||
glShaderBinary(1, &shader, 2, shader_data, shader_size);
|
glShaderBinary(1, &shader, 2, shader_data, shader_size);
|
||||||
|
|
||||||
free(shader_data);
|
free(shader_data);
|
||||||
|
|
||||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
|
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
|
||||||
printf("GL_COMPILE_STATUS %x\n", status);
|
|
||||||
return status == GL_TRUE;
|
return status == GL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
static void gl_glsl_dump_shader(GLuint shader, char *save_path)
|
static void gl_glsl_dump_shader(GLuint shader, char *save_path)
|
||||||
{
|
{
|
||||||
GLint length;
|
FILE * fShader;
|
||||||
|
GLint length;
|
||||||
|
GLenum format;
|
||||||
|
GLsizei shader_size;
|
||||||
|
GLsizei bufferSize;
|
||||||
|
void *shaderBinary = NULL;
|
||||||
|
|
||||||
glGetShaderiv(shader, 0x8b89, &length);
|
glGetShaderiv(shader, 0x8b89, &length);
|
||||||
printf("[gl_glsl_compile_shader]: Shader Binary Length: %x\n", length);
|
|
||||||
|
|
||||||
GLsizei bufferSize = length;
|
bufferSize = length;
|
||||||
void* shaderBinary = malloc(bufferSize);
|
shaderBinary = malloc(bufferSize);
|
||||||
|
|
||||||
printf("[ShaderDumper] Starting shader dump ... %s\n", save_path);
|
memset(shaderBinary, 0, bufferSize);
|
||||||
|
|
||||||
memset(shaderBinary, 0, bufferSize);
|
glPigletGetShaderBinarySCE(shader, bufferSize, &shader_size, &format, shaderBinary);
|
||||||
|
|
||||||
GLsizei shader_size;
|
fShader = fopen(save_path, "wb");
|
||||||
GLenum format;
|
fwrite(shaderBinary, shader_size, 1, fShader);
|
||||||
|
fclose(fShader);
|
||||||
glPigletGetShaderBinarySCE(shader, bufferSize, &shader_size, &format, shaderBinary);
|
|
||||||
|
|
||||||
FILE * fShader = fopen(save_path, "wb");
|
|
||||||
fwrite(shaderBinary, shader_size, 1, fShader);
|
|
||||||
fclose(fShader);
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool gl_glsl_compile_shader(glsl_shader_data_t *glsl,
|
static bool gl_glsl_compile_shader(glsl_shader_data_t *glsl,
|
||||||
@ -374,23 +369,26 @@ static bool gl_glsl_compile_shader(glsl_shader_data_t *glsl,
|
|||||||
if (existing_version)
|
if (existing_version)
|
||||||
{
|
{
|
||||||
const char* version_extra = "";
|
const char* version_extra = "";
|
||||||
unsigned version_no = (unsigned)strtoul(existing_version + 8, (char**)&program, 10);
|
unsigned version_no = (unsigned)
|
||||||
|
strtoul(existing_version + 8, (char**)&program, 10);
|
||||||
|
|
||||||
#ifdef HAVE_OPENGLES
|
#ifdef HAVE_OPENGLES
|
||||||
if (version_no < 130)
|
if (version_no < 130)
|
||||||
version_no = 100;
|
version_no = 100;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
version_extra = " es";
|
version_extra = " es";
|
||||||
version_no = 300;
|
version_no = 300;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
snprintf(version, sizeof(version), "#version %u%s\n", version_no, version_extra);
|
snprintf(version,
|
||||||
|
sizeof(version), "#version %u%s\n", version_no, version_extra);
|
||||||
RARCH_LOG("[GLSL]: Using GLSL version %u%s.\n", version_no, version_extra);
|
RARCH_LOG("[GLSL]: Using GLSL version %u%s.\n", version_no, version_extra);
|
||||||
}
|
}
|
||||||
else if (glsl_core)
|
else if (glsl_core)
|
||||||
{
|
{
|
||||||
unsigned version_no = 0;
|
unsigned version_no = 0;
|
||||||
unsigned gl_ver = glsl_major * 100 + glsl_minor * 10;
|
unsigned gl_ver = glsl_major * 100 + glsl_minor * 10;
|
||||||
|
|
||||||
switch (gl_ver)
|
switch (gl_ver)
|
||||||
{
|
{
|
||||||
@ -418,13 +416,15 @@ static bool gl_glsl_compile_shader(glsl_shader_data_t *glsl,
|
|||||||
source[3] = program;
|
source[3] = program;
|
||||||
|
|
||||||
#if defined(ORBIS)
|
#if defined(ORBIS)
|
||||||
XXH64_hash_t const hash = gl_glsl_hash_shader(source, ARRAY_SIZE(source));
|
{
|
||||||
|
char save_path[250];
|
||||||
char save_path[250];
|
XXH64_hash_t const hash =
|
||||||
sprintf(save_path, "/data/retroarch/temp/%lx.sb", hash);
|
gl_glsl_hash_shader(source, ARRAY_SIZE(source));
|
||||||
|
snprintf(save_path, sizeof(save_path),
|
||||||
if(gl_glsl_load_binary_shader(shader, save_path))
|
"/data/retroarch/temp/%lx.sb", hash);
|
||||||
return true;
|
if(gl_glsl_load_binary_shader(shader, save_path))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
glShaderSource(shader, ARRAY_SIZE(source), source, NULL);
|
glShaderSource(shader, ARRAY_SIZE(source), source, NULL);
|
||||||
@ -433,10 +433,11 @@ static bool gl_glsl_compile_shader(glsl_shader_data_t *glsl,
|
|||||||
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
|
glGetShaderiv(shader, GL_COMPILE_STATUS, &status);
|
||||||
gl_glsl_print_shader_log(shader);
|
gl_glsl_print_shader_log(shader);
|
||||||
|
|
||||||
|
#if 0
|
||||||
#if defined(ORBIS)
|
#if defined(ORBIS)
|
||||||
if(status == GL_TRUE){
|
if(status == GL_TRUE)
|
||||||
gl_glsl_dump_shader(shader, save_path);
|
gl_glsl_dump_shader(shader, save_path);
|
||||||
}
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return status == GL_TRUE;
|
return status == GL_TRUE;
|
||||||
@ -464,9 +465,10 @@ static bool gl_glsl_compile_program(
|
|||||||
void *program_data,
|
void *program_data,
|
||||||
struct shader_program_info *program_info)
|
struct shader_program_info *program_info)
|
||||||
{
|
{
|
||||||
glsl_shader_data_t *glsl = (glsl_shader_data_t*)data;
|
glsl_shader_data_t *glsl = (glsl_shader_data_t*)data;
|
||||||
struct shader_program_glsl_data *program = (struct shader_program_glsl_data*)program_data;
|
struct shader_program_glsl_data *program =
|
||||||
GLuint prog = glCreateProgram();
|
(struct shader_program_glsl_data*)program_data;
|
||||||
|
GLuint prog = glCreateProgram();
|
||||||
|
|
||||||
if (!program)
|
if (!program)
|
||||||
program = &glsl->prg[idx];
|
program = &glsl->prg[idx];
|
||||||
@ -496,7 +498,8 @@ static bool gl_glsl_compile_program(
|
|||||||
RARCH_LOG("[GLSL]: Found GLSL fragment shader.\n");
|
RARCH_LOG("[GLSL]: Found GLSL fragment shader.\n");
|
||||||
program->fprg = glCreateShader(GL_FRAGMENT_SHADER);
|
program->fprg = glCreateShader(GL_FRAGMENT_SHADER);
|
||||||
if (!gl_glsl_compile_shader(glsl, program->fprg,
|
if (!gl_glsl_compile_shader(glsl, program->fprg,
|
||||||
"#define FRAGMENT\n#define PARAMETER_UNIFORM\n", program_info->fragment))
|
"#define FRAGMENT\n#define PARAMETER_UNIFORM\n",
|
||||||
|
program_info->fragment))
|
||||||
{
|
{
|
||||||
RARCH_ERR("Failed to compile fragment shader #%u\n", idx);
|
RARCH_ERR("Failed to compile fragment shader #%u\n", idx);
|
||||||
goto error;
|
goto error;
|
||||||
@ -566,13 +569,15 @@ static bool gl_glsl_load_source_path(struct video_shader_pass *pass,
|
|||||||
if (nitems <= 0 || len <= 0)
|
if (nitems <= 0 || len <= 0)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
gl_glsl_strip_parameter_pragmas(pass->source.string.vertex, "#pragma parameter");
|
gl_glsl_strip_parameter_pragmas(pass->source.string.vertex,
|
||||||
|
"#pragma parameter");
|
||||||
pass->source.string.fragment = strdup(pass->source.string.vertex);
|
pass->source.string.fragment = strdup(pass->source.string.vertex);
|
||||||
return pass->source.string.fragment && pass->source.string.vertex;
|
return pass->source.string.fragment && pass->source.string.vertex;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool gl_glsl_compile_programs(
|
static bool gl_glsl_compile_programs(
|
||||||
glsl_shader_data_t *glsl, struct shader_program_glsl_data *program)
|
glsl_shader_data_t *glsl,
|
||||||
|
struct shader_program_glsl_data *program)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
|
||||||
@ -678,7 +683,8 @@ static INLINE void gl_glsl_set_attribs(glsl_shader_data_t *glsl,
|
|||||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void gl_glsl_clear_uniforms_frame(struct shader_uniforms_frame *frame)
|
static void gl_glsl_clear_uniforms_frame(
|
||||||
|
struct shader_uniforms_frame *frame)
|
||||||
{
|
{
|
||||||
frame->texture = -1;
|
frame->texture = -1;
|
||||||
frame->texture_size = -1;
|
frame->texture_size = -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user