mirror of
https://github.com/libretro/RetroArch.git
synced 2025-02-13 05:10:42 +00:00
Create SHADER_CTL_WRAP_TYPE
This commit is contained in:
parent
bd74390cde
commit
46b963619a
@ -456,7 +456,7 @@ static void gl_compute_fbo_geometry(gl_t *gl,
|
||||
static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
|
||||
{
|
||||
unsigned mip_level;
|
||||
enum gfx_wrap_type wrap;
|
||||
video_shader_ctx_wrap_t wrap;
|
||||
bool fp_fbo, srgb_fbo;
|
||||
GLenum min_filter, mag_filter, wrap_enum;
|
||||
video_shader_ctx_filter_t filter_type;
|
||||
@ -484,8 +484,11 @@ static void gl_create_fbo_texture(gl_t *gl, unsigned i, GLuint texture)
|
||||
|
||||
mag_filter = min_filter_to_mag(min_filter);
|
||||
|
||||
wrap = video_shader_driver_wrap_type(i + 2);
|
||||
wrap_enum = gl_wrap_type_to_enum(wrap);
|
||||
wrap.idx = i + 2;
|
||||
|
||||
video_shader_driver_ctl(SHADER_CTL_WRAP_TYPE, &wrap);
|
||||
|
||||
wrap_enum = gl_wrap_type_to_enum(wrap.type);
|
||||
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter);
|
||||
@ -2648,6 +2651,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
||||
gfx_ctx_mode_t mode;
|
||||
gfx_ctx_input_t inp;
|
||||
unsigned interval, mip_level;
|
||||
video_shader_ctx_wrap_t wrap_info;
|
||||
video_shader_ctx_filter_t shader_filter;
|
||||
video_shader_ctx_info_t shader_info;
|
||||
unsigned win_width, win_height, temp_width = 0, temp_height = 0;
|
||||
@ -2834,7 +2838,12 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
||||
: (video->smooth ? GL_LINEAR : GL_NEAREST);
|
||||
|
||||
gl->tex_mag_filter = min_filter_to_mag(gl->tex_min_filter);
|
||||
gl->wrap_mode = gl_wrap_type_to_enum(video_shader_driver_wrap_type(1));
|
||||
|
||||
wrap_info.idx = 1;
|
||||
|
||||
video_shader_driver_ctl(SHADER_CTL_WRAP_TYPE, &wrap_info);
|
||||
|
||||
gl->wrap_mode = gl_wrap_type_to_enum(wrap_info.type);
|
||||
|
||||
gl_set_texture_fmts(gl, video->rgb32);
|
||||
|
||||
@ -2957,6 +2966,7 @@ static bool gl_has_windowed(void *data)
|
||||
|
||||
static void gl_update_tex_filter_frame(gl_t *gl)
|
||||
{
|
||||
video_shader_ctx_wrap_t wrap_info;
|
||||
video_shader_ctx_filter_t shader_filter;
|
||||
unsigned i, mip_level;
|
||||
GLenum wrap_mode;
|
||||
@ -2976,8 +2986,11 @@ static void gl_update_tex_filter_frame(gl_t *gl)
|
||||
smooth = settings->video.smooth;
|
||||
|
||||
mip_level = 1;
|
||||
wrap_mode =
|
||||
gl_wrap_type_to_enum(video_shader_driver_wrap_type(1));
|
||||
wrap_info.idx = 1;
|
||||
|
||||
video_shader_driver_ctl(SHADER_CTL_WRAP_TYPE, &wrap_info);
|
||||
|
||||
wrap_mode = gl_wrap_type_to_enum(wrap_info.type);
|
||||
|
||||
gl->tex_mipmap = video_shader_driver_ctl(SHADER_CTL_MIPMAP_INPUT,
|
||||
&mip_level);
|
||||
|
@ -84,11 +84,6 @@ unsigned video_shader_driver_get_prev_textures(void)
|
||||
return current_shader->get_prev_textures(shader_data);
|
||||
}
|
||||
|
||||
enum gfx_wrap_type video_shader_driver_wrap_type(unsigned index)
|
||||
{
|
||||
return current_shader->wrap_type(shader_data, index);
|
||||
}
|
||||
|
||||
struct video_shader *video_shader_driver_direct_get_current_shader(void)
|
||||
{
|
||||
if (!current_shader || !current_shader->get_current_shader)
|
||||
@ -237,6 +232,14 @@ bool video_shader_driver_ctl(enum video_shader_driver_ctl_state state, void *dat
|
||||
current_shader->use(shader_info->data, shader_data, shader_info->idx);
|
||||
}
|
||||
break;
|
||||
case SHADER_CTL_WRAP_TYPE:
|
||||
{
|
||||
video_shader_ctx_wrap_t *wrap = (video_shader_ctx_wrap_t*)data;
|
||||
if (!current_shader || !current_shader->wrap_type)
|
||||
return false;
|
||||
wrap->type = current_shader->wrap_type(shader_data, wrap->idx);
|
||||
}
|
||||
break;
|
||||
case SHADER_CTL_NONE:
|
||||
default:
|
||||
break;
|
||||
|
@ -68,7 +68,8 @@ enum video_shader_driver_ctl_state
|
||||
SHADER_CTL_INFO,
|
||||
SHADER_CTL_SET_MVP,
|
||||
SHADER_CTL_FILTER_TYPE,
|
||||
SHADER_CTL_USE
|
||||
SHADER_CTL_USE,
|
||||
SHADER_CTL_WRAP_TYPE
|
||||
};
|
||||
|
||||
typedef struct shader_backend
|
||||
@ -162,6 +163,12 @@ typedef struct video_shader_ctx_filter
|
||||
bool *smooth;
|
||||
} video_shader_ctx_filter_t;
|
||||
|
||||
typedef struct video_shader_ctx_wrap
|
||||
{
|
||||
unsigned idx;
|
||||
enum gfx_wrap_type type;
|
||||
} video_shader_ctx_wrap_t;
|
||||
|
||||
extern const shader_backend_t gl_glsl_backend;
|
||||
extern const shader_backend_t hlsl_backend;
|
||||
extern const shader_backend_t gl_cg_backend;
|
||||
@ -183,8 +190,6 @@ const char *video_shader_driver_get_ident(void);
|
||||
|
||||
unsigned video_shader_driver_get_prev_textures(void);
|
||||
|
||||
enum gfx_wrap_type video_shader_driver_wrap_type(unsigned index);
|
||||
|
||||
struct video_shader *video_shader_driver_direct_get_current_shader(void);
|
||||
|
||||
bool video_shader_driver_ctl(enum video_shader_driver_ctl_state state, void *data);
|
||||
|
Loading…
x
Reference in New Issue
Block a user