mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 21:32:45 +00:00
72c901a90e
commit 793d41c303206b43932ddcefd44a45836def55eb Author: Ophidon <jrogers2@gmail.com> Date: Fri Jan 19 23:12:31 2024 -0500 Build Fix 2 Move declarations of iterators. commit c0e959b3d3cd773a66a17cfe034f08eaa53d525a Author: Ophidon <jrogers2@gmail.com> Date: Fri Jan 19 22:57:01 2024 -0500 Build Fix Help string was 14 characters too long for c89. commit fc5506c7906bf82d6f88b7b0d7e4764d58d90622 Author: Ophidon <jrogers2@gmail.com> Date: Fri Jan 19 22:40:45 2024 -0500 BFI Updates Significant BFI updates. - Adds BFI to dx10/11/12 in general. - Updates existing BFI menu option descriptions to be somewhat more clear in how to use correctly. - Adds Variable Strobe length via new 'Dark Frames' bfi sub-choice. Only valid at 180hz and above, as it must work with whole frames. - Algorithm to auto select 'decent' Dark Frames choice, for any given selected BFI refresh rate. Will also avoid defaults that can cause Image Retention at any Hz higher than 120. (Impossible to avoid at 120 if you have an affected screen... get an OLED :D ) . - Some sanity checking on selecting BFI or the other synchronizations options like Swap Interval > 1, that don't play well with BFI.
145 lines
3.9 KiB
C
145 lines
3.9 KiB
C
/* RetroArch - A frontend for libretro.
|
|
* Copyright (C) 2010-2019 - 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 <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef __GL3_DEFINES_H
|
|
#define __GL3_DEFINES_H
|
|
|
|
#include <boolean.h>
|
|
#include <string.h>
|
|
#include <libretro.h>
|
|
#include <retro_common_api.h>
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
#include "../../config.h"
|
|
#endif
|
|
|
|
#include <retro_inline.h>
|
|
#include <gfx/math/matrix_4x4.h>
|
|
#include <gfx/scaler/scaler.h>
|
|
#include <glsym/glsym.h>
|
|
#include <formats/image.h>
|
|
|
|
#include "../video_driver.h"
|
|
#include "../drivers_shader/shader_gl3.h"
|
|
|
|
RETRO_BEGIN_DECLS
|
|
|
|
#define GL_CORE_NUM_TEXTURES 4
|
|
#define GL_CORE_NUM_PBOS 4
|
|
#define GL_CORE_NUM_VBOS 256
|
|
#define GL_CORE_NUM_FENCES 8
|
|
|
|
enum gl3_flags
|
|
{
|
|
GL3_FLAG_PBO_READBACK_ENABLE = (1 << 0),
|
|
GL3_FLAG_HW_RENDER_BOTTOM_LEFT = (1 << 1),
|
|
GL3_FLAG_HW_RENDER_ENABLE = (1 << 2),
|
|
GL3_FLAG_USE_SHARED_CONTEXT = (1 << 3),
|
|
GL3_FLAG_OVERLAY_ENABLE = (1 << 4),
|
|
GL3_FLAG_OVERLAY_FULLSCREEN = (1 << 5),
|
|
GL3_FLAG_MENU_TEXTURE_ENABLE = (1 << 6),
|
|
GL3_FLAG_MENU_TEXTURE_FULLSCREEN= (1 << 7),
|
|
GL3_FLAG_VSYNC = (1 << 8),
|
|
GL3_FLAG_FULLSCREEN = (1 << 9),
|
|
GL3_FLAG_QUITTING = (1 << 10),
|
|
GL3_FLAG_SHOULD_RESIZE = (1 << 11),
|
|
GL3_FLAG_KEEP_ASPECT = (1 << 12),
|
|
GL3_FLAG_FRAME_DUPE_LOCK = (1 << 13)
|
|
};
|
|
|
|
struct gl3_streamed_texture
|
|
{
|
|
GLuint tex;
|
|
unsigned width;
|
|
unsigned height;
|
|
};
|
|
|
|
|
|
typedef struct gl3
|
|
{
|
|
const gfx_ctx_driver_t *ctx_driver;
|
|
void *ctx_data;
|
|
gl3_filter_chain_t *filter_chain;
|
|
GLuint *overlay_tex;
|
|
float *overlay_vertex_coord;
|
|
float *overlay_tex_coord;
|
|
float *overlay_color_coord;
|
|
GLsync fences[GL_CORE_NUM_FENCES];
|
|
void *readback_buffer_screenshot;
|
|
struct scaler_ctx pbo_readback_scaler;
|
|
|
|
video_info_t video_info;
|
|
video_viewport_t vp;
|
|
struct gl3_viewport filter_chain_vp;
|
|
struct gl3_streamed_texture textures[GL_CORE_NUM_TEXTURES];
|
|
|
|
GLuint vao;
|
|
GLuint menu_texture;
|
|
GLuint pbo_readback[GL_CORE_NUM_PBOS];
|
|
|
|
struct
|
|
{
|
|
GLuint alpha_blend;
|
|
GLuint font;
|
|
GLuint ribbon;
|
|
GLuint ribbon_simple;
|
|
GLuint snow_simple;
|
|
GLuint snow;
|
|
GLuint bokeh;
|
|
struct gl3_buffer_locations alpha_blend_loc;
|
|
struct gl3_buffer_locations font_loc;
|
|
struct gl3_buffer_locations ribbon_loc;
|
|
struct gl3_buffer_locations ribbon_simple_loc;
|
|
struct gl3_buffer_locations snow_simple_loc;
|
|
struct gl3_buffer_locations snow_loc;
|
|
struct gl3_buffer_locations bokeh_loc;
|
|
} pipelines;
|
|
|
|
|
|
unsigned video_width;
|
|
unsigned video_height;
|
|
unsigned overlays;
|
|
unsigned version_major;
|
|
unsigned version_minor;
|
|
unsigned vp_out_width;
|
|
unsigned vp_out_height;
|
|
unsigned rotation;
|
|
unsigned textures_index;
|
|
unsigned scratch_vbo_index;
|
|
unsigned fence_count;
|
|
unsigned pbo_readback_index;
|
|
unsigned hw_render_max_width;
|
|
unsigned hw_render_max_height;
|
|
GLuint scratch_vbos[GL_CORE_NUM_VBOS];
|
|
GLuint hw_render_texture;
|
|
GLuint hw_render_fbo;
|
|
GLuint hw_render_rb_ds;
|
|
|
|
float menu_texture_alpha;
|
|
math_matrix_4x4 mvp; /* float alignment */
|
|
math_matrix_4x4 mvp_yflip;
|
|
math_matrix_4x4 mvp_no_rot;
|
|
math_matrix_4x4 mvp_no_rot_yflip;
|
|
|
|
uint16_t flags;
|
|
|
|
bool pbo_readback_valid[GL_CORE_NUM_PBOS];
|
|
} gl3_t;
|
|
|
|
RETRO_END_DECLS
|
|
|
|
#endif
|