RetroArch
video_driver.h
Go to the documentation of this file.
1 /* RetroArch - A frontend for libretro.
2  * Copyright (C) 2010-2014 - Hans-Kristian Arntzen
3  * Copyright (C) 2011-2017 - Daniel De Matteis
4  *
5  * RetroArch is free software: you can redistribute it and/or modify it under the terms
6  * of the GNU General Public License as published by the Free Software Found-
7  * ation, either version 3 of the License, or (at your option) any later version.
8  *
9  * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
10  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11  * PURPOSE. See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License along with RetroArch.
14  * If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef __VIDEO_DRIVER__H
18 #define __VIDEO_DRIVER__H
19 
20 #include <stdint.h>
21 #include <stddef.h>
22 #include <sys/types.h>
23 
24 #include <boolean.h>
25 #include <retro_common_api.h>
26 #include <gfx/math/matrix_4x4.h>
27 
28 #ifdef HAVE_CONFIG_H
29 #include "../config.h"
30 #endif
31 
32 #ifdef HAVE_OVERLAY
33 #include "../input/input_overlay.h"
34 #endif
35 
36 #include "video_defines.h"
37 #include "video_coord_array.h"
38 #include "video_filter.h"
39 #include "video_shader_parse.h"
40 #include "video_state_tracker.h"
41 
42 #include "../input/input_driver.h"
43 
44 #define RARCH_SCALE_BASE 256
45 
46 #include "video_shader_parse.h"
47 
48 #define VIDEO_SHADER_STOCK_BLEND (GFX_MAX_SHADERS - 1)
49 #define VIDEO_SHADER_MENU (GFX_MAX_SHADERS - 2)
50 #define VIDEO_SHADER_MENU_2 (GFX_MAX_SHADERS - 3)
51 #define VIDEO_SHADER_MENU_3 (GFX_MAX_SHADERS - 4)
52 #define VIDEO_SHADER_MENU_4 (GFX_MAX_SHADERS - 5)
53 #define VIDEO_SHADER_MENU_5 (GFX_MAX_SHADERS - 6)
54 #define VIDEO_SHADER_MENU_6 (GFX_MAX_SHADERS - 7)
55 
56 #if defined(_XBOX360)
57 #define DEFAULT_SHADER_TYPE RARCH_SHADER_HLSL
58 #elif defined(__PSL1GHT__) || defined(HAVE_OPENGLES2) || defined(HAVE_GLSL)
59 #define DEFAULT_SHADER_TYPE RARCH_SHADER_GLSL
60 #elif defined(__CELLOS_LV2__) || defined(HAVE_CG)
61 #define DEFAULT_SHADER_TYPE RARCH_SHADER_CG
62 #else
63 #define DEFAULT_SHADER_TYPE RARCH_SHADER_NONE
64 #endif
65 
67 
68 #ifndef MAX_EGLIMAGE_TEXTURES
69 #define MAX_EGLIMAGE_TEXTURES 32
70 #endif
71 
72 #define MAX_VARIABLES 64
73 
74 enum
75 {
76  TEXTURES = 8,
78 };
79 
80 struct LinkInfo
81 {
82  unsigned tex_w, tex_h;
84 };
85 
87 {
103 };
104 
106 {
111 };
112 
114 {
123 };
124 
126 {
136 };
137 
139 {
143 };
144 
146 {
147  bool is_file;
148  const char *vertex;
149  const char *fragment;
150  const char *combined;
151  unsigned idx;
152  void *data;
153 };
154 
156 {
157  bool enabled;
158 
161  unsigned type; /* shader uniform type */
162 
163  struct
164  {
166  const char *ident;
169  bool enable;
170  } lookup;
171 
172  struct
173  {
174  struct
175  {
180  } integer;
181 
183 
184  struct
185  {
191 
193 
194  struct
195  {
196  float v0;
197  float v1;
198  float v2;
199  float v3;
200  } f;
201 
202  float *floatv;
203  } result;
204 };
205 
206 typedef struct shader_backend
207 {
208  void *(*init)(void *data, const char *path);
210  void (*deinit)(void *data);
211 
212  /* Set shader parameters. */
213  void (*set_params)(void *data, void *shader_data);
214 
216  void *uniform_data);
217 
218  /* Compile a shader program. */
219  bool (*compile_program)(void *data, unsigned idx,
220  void *program_data, struct shader_program_info *program_info);
221 
222  /* Use a shader program specified by variable 'index'. */
223  void (*use)(void *data, void *shader_data, unsigned index, bool set_active);
224 
225  /* Returns the number of currently loaded shaders. */
226  unsigned (*num_shaders)(void *data);
227 
228  bool (*filter_type)(void *data, unsigned index, bool *smooth);
229  enum gfx_wrap_type (*wrap_type)(void *data, unsigned index);
231  unsigned index, struct gfx_fbo_scale *scale);
232  bool (*set_coords)(void *handle_data,
233  void *shader_data, const struct video_coords *coords);
234  bool (*set_mvp)(void *data, void *shader_data,
235  const void *mat_data);
236  unsigned (*get_prev_textures)(void *data);
237  bool (*get_feedback_pass)(void *data, unsigned *pass);
238  bool (*mipmap_input)(void *data, unsigned index);
239 
240  struct video_shader *(*get_current_shader)(void *data);
241 
243 
244  /* Human readable string. */
245  const char *ident;
247 
248 typedef struct video_shader_ctx_init
249 {
251  const char *path;
253  void *data;
254  struct
255  {
257  } gl;
259 
261 {
262  unsigned width;
263  unsigned height;
264  unsigned tex_width;
265  unsigned tex_height;
266  unsigned out_width;
267  unsigned out_height;
268  unsigned frame_counter;
269  unsigned fbo_info_cnt;
270  void *data;
271  const void *info;
272  const void *prev_info;
273  const void *feedback_info;
274  const void *fbo_info;
276 
278 {
279  void *handle_data;
280  const void *data;
282 
284 {
285  unsigned idx;
288 
289 typedef struct video_shader_ctx_info
290 {
292  unsigned num;
293  unsigned idx;
294  void *data;
296 
297 typedef struct video_shader_ctx_mvp
298 {
299  void *data;
300  const void *matrix;
302 
304 {
305  unsigned index;
306  bool *smooth;
308 
309 typedef struct video_shader_ctx_wrap
310 {
311  unsigned idx;
314 
315 typedef struct video_shader_ctx
316 {
319 
321 {
322  const char *ident;
324 
326 {
327  unsigned id;
329 
331 
332 typedef struct video_info
333 {
334  /* Launch in fullscreen mode instead of windowed mode. */
336 
337  /* Start with V-Sync enabled. */
338  bool vsync;
339 
340  /* If true, the output image should have the aspect ratio
341  * as set in aspect_ratio. */
343 
345 
346  /* Width of window.
347  * If fullscreen mode is requested,
348  * a width of 0 means the resolution of the
349  * desktop should be used. */
350  unsigned width;
351 
352  /* Height of window.
353  * If fullscreen mode is requested,
354  * a height of 0 means the resolutiof the desktop should be used.
355  */
356  unsigned height;
357 
359 
360 #ifdef GEKKO
361  bool vfilter;
362 #endif
363 
364  /* If true, applies bilinear filtering to the image,
365  * otherwise nearest filtering. */
366  bool smooth;
367 
369 
370  /* Use 32bit RGBA rather than native RGB565/XBGR1555.
371  *
372  * XRGB1555 format is 16-bit and has byte ordering: 0RRRRRGGGGGBBBBB,
373  * in native endian.
374  *
375  * ARGB8888 is AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB, native endian.
376  * Alpha channel should be disregarded.
377  * */
378  bool rgb32;
379 
380 #ifdef GEKKO
381  /* TODO - we can't really have driver system-specific
382  * variables in here. There should be some
383  * kind of publicly accessible driver implementation
384  * video struct for specific things like this.
385  */
386 
387  /* Wii-specific settings. Ignored for everything else. */
388  unsigned viwidth;
389 #endif
390 
391  /*
392  * input_scale defines the maximum size of the picture that will
393  * ever be used with the frame callback.
394  *
395  * The maximum resolution is a multiple of 256x256 size (RARCH_SCALE_BASE),
396  * so an input scale of 2 means you should allocate a texture or of 512x512.
397  *
398  * Maximum input size: RARCH_SCALE_BASE * input_scale
399  */
400  unsigned input_scale;
401 
403 } video_info_t;
404 
405 typedef struct video_frame_info
406 {
411  bool hard_sync;
412  bool fps_show;
420  bool use_rgba;
431 
435 
439  unsigned monitor_index;
442  unsigned width;
443  unsigned height;
444  unsigned xmb_theme;
445  unsigned xmb_color_theme;
449  unsigned custom_vp_width;
453 
465 
466  char fps_text[128];
467  char stat_text[512];
468  char chat_text[256];
469 
471  float frame_time;
472  float frame_rate;
473 
474  struct
475  {
476  float x;
477  float y;
478  float scale;
479  /* Drop shadow color multiplier. */
480  float drop_mod;
481  /* Drop shadow offset.
482  * If both are 0, no drop shadow will be rendered. */
484  /* Drop shadow alpha */
485  float drop_alpha;
486  /* ABGR. Use the macros. */
490  } osd_stat_params;
491 
492  void (*cb_update_window_title)(void*, void *);
493  void (*cb_swap_buffers)(void*, void *);
495  float *value);
496  bool (*cb_set_resize)(void*, unsigned, unsigned);
497 
498  bool (*cb_set_mvp)(void *data, void *shader_data,
499  const void *mat_data);
500 
502  void *shader_data;
503  void *userdata;
506 
507 typedef void (*update_window_title_cb)(void*, void*);
509  float *value);
510 typedef bool (*set_resize_cb)(void*, unsigned, unsigned);
511 
512 
513 typedef struct gfx_ctx_driver
514 {
515  /* The opaque pointer is the underlying video driver data (e.g. gl_t for
516  * OpenGL contexts). Although not advised, the context driver is allowed
517  * to hold a pointer to it as the context never outlives the video driver.
518  *
519  * The context driver is responsible for it's own data.*/
521  void (*destroy)(void *data);
522 
523  enum gfx_ctx_api (*get_api)(void *data);
524 
525  /* Which API to bind to. */
527  unsigned major, unsigned minor);
528 
529  /* Sets the swap interval. */
530  void (*swap_interval)(void *data, int);
531 
532  /* Sets video mode. Creates a window, etc. */
533  bool (*set_video_mode)(void*, video_frame_info_t *video_info, unsigned, unsigned, bool);
534 
535  /* Gets current window size.
536  * If not initialized yet, it returns current screen size. */
537  void (*get_video_size)(void*, unsigned*, unsigned*);
538 
539  float (*get_refresh_rate)(void*);
540 
541  void (*get_video_output_size)(void*, unsigned*, unsigned*);
542 
544 
546 
548 
549  /* Translates a window size to an aspect ratio.
550  * In most cases this will be just width / height, but
551  * some contexts will better know which actual aspect ratio is used.
552  * This can be NULL to assume the default behavior.
553  */
554  float (*translate_aspect)(void*, unsigned, unsigned);
555 
556  /* Asks driver to update window title (FPS, etc). */
558 
559  /* Queries for resize and quit events.
560  * Also processes events. */
561  void (*check_window)(void*, bool*, bool*,
562  unsigned*, unsigned*, bool);
563 
564  /* Acknowledge a resize event. This is needed for some APIs.
565  * Most backends will ignore this. */
567 
568  /* Checks if window has input focus. */
569  bool (*has_focus)(void*);
570 
571  /* Should the screensaver be suppressed? */
573 
574  /* Checks if context driver has windowed support. */
575  bool (*has_windowed)(void*);
576 
577  /* Swaps buffers. VBlank sync depends on
578  * earlier calls to swap_interval. */
579  void (*swap_buffers)(void*, void *);
580 
581  /* Most video backends will want to use a certain input driver.
582  * Checks for it here. */
583  void (*input_driver)(void*, const char *, const input_driver_t**, void**);
584 
585  /* Wraps whatever gl_proc_address() there is.
586  * Does not take opaque, to avoid lots of ugly wrapper code. */
588 
589  /* Returns true if this context supports EGLImage buffers for
590  * screen drawing and was initalized correctly. */
592 
593  /* Writes the frame to the EGLImage and sets image_handle to it.
594  * Returns true if a new image handle is created.
595  * Always returns true the first time it's called for a new index.
596  * The graphics core must handle a change in the handle correctly. */
597  bool (*image_buffer_write)(void*, const void *frame, unsigned width,
598  unsigned height, unsigned pitch, bool rgb32,
599  unsigned index, void **image_handle);
600 
601  /* Shows or hides mouse. Can be NULL if context doesn't
602  * have a concept of mouse pointer. */
603  void (*show_mouse)(void *data, bool state);
604 
605  /* Human readable string. */
606  const char *ident;
607 
609 
611 
612  /* Optional. Binds HW-render offscreen context. */
613  void (*bind_hw_render)(void *data, bool enable);
614 
615  /* Optional. Gets base data for the context which is used by the driver.
616  * This is mostly relevant for graphics APIs such as Vulkan
617  * which do not have global context state. */
618  void *(*get_context_data)(void *data);
619 
620  /* Optional. Makes driver context (only GLX right now)
621  * active for this thread. */
622  void (*make_current)(bool release);
624 
625 typedef struct gfx_ctx_flags
626 {
629 
630 typedef struct gfx_ctx_size
631 {
632  bool *quit;
633  bool *resize;
634  unsigned *width;
635  unsigned *height;
637 
638 typedef struct gfx_ctx_mode
639 {
640  unsigned width;
641  unsigned height;
644 
645 typedef struct gfx_ctx_metrics
646 {
648  float *value;
650 
651 typedef struct gfx_ctx_aspect
652 {
653  float *aspect;
654  unsigned width;
655  unsigned height;
657 
658 typedef struct gfx_ctx_image
659 {
660  const void *frame;
661  unsigned width;
662  unsigned height;
663  unsigned pitch;
664  unsigned index;
665  bool rgb32;
666  void **handle;
668 
669 typedef struct gfx_ctx_input
670 {
672  void **input_data;
674 
675 typedef struct gfx_ctx_proc_address
676 {
677  const char *sym;
680 
681 typedef struct gfx_ctx_ident
682 {
683  const char *ident;
685 
686 typedef struct video_viewport
687 {
688  int x;
689  int y;
690  unsigned width;
691  unsigned height;
692  unsigned full_width;
693  unsigned full_height;
695 
697 {
698  char name[64];
699  float value;
700 };
701 
702 /* Optionally implemented interface to poke more
703  * deeply into video driver. */
704 
705 typedef struct video_poke_interface
706 {
708  void (*set_coords)(void *handle_data, void *shader_data,
709  const struct video_coords *coords);
710  void (*set_mvp)(void *data, void *shader_data,
711  const void *mat_data);
712  uintptr_t (*load_texture)(void *video_data, void *data,
713  bool threaded, enum texture_filter_type filter_type);
715  void (*set_video_mode)(void *data, unsigned width,
716  unsigned height, bool fullscreen);
717  float (*get_refresh_rate)(void *data);
718  void (*set_filtering)(void *data, unsigned index, bool smooth);
720  unsigned *width, unsigned *height);
721 
722  /* Move index to previous resolution */
724 
725  /* Move index to next resolution */
727 
729  retro_proc_address_t (*get_proc_address)(void *data, const char *sym);
730  void (*set_aspect_ratio)(void *data, unsigned aspectratio_index);
732 
733  /* Update texture. */
734  void (*set_texture_frame)(void *data, const void *frame, bool rgb32,
735  unsigned width, unsigned height, float alpha);
736  /* Enable or disable rendering. */
737  void (*set_texture_enable)(void *data, bool enable, bool full_screen);
739  const char *msg,
740  const void *params, void *font);
741 
742  void (*show_mouse)(void *data, bool state);
744 
745  struct video_shader *(*get_current_shader)(void *data);
749  const struct retro_hw_render_interface **iface);
751 
752 
753 /* msg is for showing a message on the screen
754  * along with the video frame. */
755 typedef bool (*video_driver_frame_t)(void *data,
756  const void *frame, unsigned width,
757  unsigned height, uint64_t frame_count,
758  unsigned pitch, const char *msg, video_frame_info_t *video_info);
759 
760 typedef struct video_driver
761 {
762  /* Should the video driver act as an input driver as well?
763  * The video initialization might preinitialize an input driver
764  * to override the settings in case the video driver relies on
765  * input driver for event handling. */
766  void *(*init)(const video_info_t *video,
767  const input_driver_t **input,
768  void **input_data);
769 
770  /* Updates frame on the screen.
771  * Frame can be either XRGB1555, RGB565 or ARGB32 format
772  * depending on rgb32 setting in video_info_t.
773  * Pitch is the distance in bytes between two scanlines in memory.
774  *
775  * When msg is non-NULL,
776  * it's a message that should be displayed to the user. */
778 
779  /* Should we care about syncing to vblank? Fast forwarding.
780  *
781  * Requests nonblocking operation.
782  *
783  * True = VSync is turned off.
784  * False = VSync is turned on.
785  * */
786  void (*set_nonblock_state)(void *data, bool toggle);
787 
788  /* Is the window still active? */
789  bool (*alive)(void *data);
790 
791  /* Does the window have focus? */
792  bool (*focus)(void *data);
793 
794  /* Should the screensaver be suppressed? */
796 
797  /* Does the graphics context support windowed mode? */
798  bool (*has_windowed)(void *data);
799 
800  /* Sets shader. Might not be implemented. Will be moved to
801  * poke_interface later. */
803  const char *path);
804 
805  /* Frees driver. */
806  void (*free)(void *data);
807 
808  /* Human-readable identifier. */
809  const char *ident;
810 
811  void (*set_viewport)(void *data, unsigned width, unsigned height,
812  bool force_full, bool allow_rotate);
813 
814  void (*set_rotation)(void *data, unsigned rotation);
815  void (*viewport_info)(void *data, struct video_viewport *vp);
816 
817  /* Reads out in BGR byte order (24bpp). */
818  bool (*read_viewport)(void *data, uint8_t *buffer, bool is_idle);
819 
820  /* Returns a pointer to a newly allocated buffer that can
821  * (and must) be passed to free() by the caller, containing a
822  * copy of the current raw frame in the active pixel format
823  * and sets width, height and pitch to the correct values. */
824  void* (*read_frame_raw)(void *data, unsigned *width,
825  unsigned *height, size_t *pitch);
826 
827 #ifdef HAVE_OVERLAY
828  void (*overlay_interface)(void *data,
829  const video_overlay_interface_t **iface);
830 #endif
831  void (*poke_interface)(void *data, const video_poke_interface_t **iface);
834 
835 
837 
838 bool video_driver_has_windowed(void);
839 
841 
842 void video_driver_destroy(void);
843 void video_driver_set_cached_frame_ptr(const void *data);
844 void video_driver_set_stub_frame(void);
846 bool video_driver_is_stub_frame(void);
854 void video_driver_set_rgba(void);
855 void video_driver_unset_rgba(void);
856 bool video_driver_supports_rgba(void);
859 bool video_driver_init(bool *video_is_threaded);
860 void video_driver_destroy_data(void);
861 void video_driver_free(void);
863 void video_driver_monitor_reset(void);
865 void video_driver_update_viewport(struct video_viewport* vp, bool force_full, bool keep_aspect);
866 void video_driver_show_mouse(void);
867 void video_driver_hide_mouse(void);
868 void video_driver_set_nonblock_state(bool toggle);
869 bool video_driver_find_driver(void);
871 bool video_driver_read_viewport(uint8_t *buffer, bool is_idle);
872 bool video_driver_cached_frame(void);
878 void video_driver_set_own_driver(void);
880 bool video_driver_owns_driver(void);
881 bool video_driver_is_hw_context(void);
890 void video_driver_set_active(void);
891 void video_driver_unset_active(void);
892 bool video_driver_is_active(void);
893 bool video_driver_gpu_record_init(unsigned size);
896  retro_framebuffer *fb);
897 bool video_driver_get_hw_render_interface(const struct
898  retro_hw_render_interface **iface);
899 bool video_driver_get_viewport_info(struct video_viewport *viewport);
900 void video_driver_set_title_buf(void);
902 
910 const void *video_driver_find_handle(int index);
911 
919 const char *video_driver_find_ident(int index);
920 
928 const char* config_get_video_driver_options(void);
929 
938 void *video_driver_get_ptr(bool force_nonthreaded_data);
939 
949 
951 
953  const char *shader);
954 
955 bool video_driver_set_rotation(unsigned rotation);
956 
957 bool video_driver_set_video_mode(unsigned width,
958  unsigned height, bool fullscreen);
959 
961  unsigned *width, unsigned *height);
962 
963 void video_driver_set_osd_msg(const char *msg,
964  const void *params, void *font);
965 
966 void video_driver_set_texture_enable(bool enable, bool full_screen);
967 
968 void video_driver_set_texture_frame(const void *frame, bool rgb32,
969  unsigned width, unsigned height, float alpha);
970 
971 #ifdef HAVE_OVERLAY
972 bool video_driver_overlay_interface(
973  const video_overlay_interface_t **iface);
974 #endif
975 
976 void * video_driver_read_frame_raw(unsigned *width,
977  unsigned *height, size_t *pitch);
978 
979 void video_driver_set_filtering(unsigned index, bool smooth);
980 
981 const char *video_driver_get_ident(void);
982 
983 bool video_driver_set_viewport(unsigned width, unsigned height,
984  bool force_fullscreen, bool allow_rotate);
985 
986 void video_driver_get_size(unsigned *width, unsigned *height);
987 
988 void video_driver_set_size(unsigned *width, unsigned *height);
989 
991 
993 
995 
997 
999 
1001 
1002 void video_driver_cached_frame_set(const void *data, unsigned width,
1003  unsigned height, size_t pitch);
1004 
1005 void video_driver_cached_frame_get(const void **data, unsigned *width,
1006  unsigned *height, size_t *pitch);
1007 
1008 void video_driver_menu_settings(void **list_data, void *list_info_data,
1009  void *group_data, void *subgroup_data, const char *parent_group);
1010 
1023  unsigned width, unsigned height,
1024  float aspect_ratio, bool keep_aspect);
1025 
1027 
1029 
1036 void video_monitor_set_refresh_rate(float hz);
1037 
1054  double *deviation, unsigned *sample_points);
1055 
1056 unsigned video_pixel_get_alignment(unsigned pitch);
1057 
1059 
1069 void video_driver_frame(const void *data, unsigned width,
1070  unsigned height, size_t pitch);
1071 
1072 #define video_driver_translate_coord_viewport_wrap(vp, mouse_x, mouse_y, res_x, res_y, res_screen_x, res_screen_y) \
1073  (video_driver_get_viewport_info(vp) ? video_driver_translate_coord_viewport(vp, mouse_x, mouse_y, res_x, res_y, res_screen_x, res_screen_y) : false)
1074 
1091  struct video_viewport *vp,
1092  int mouse_x, int mouse_y,
1093  int16_t *res_x, int16_t *res_y, int16_t *res_screen_x,
1094  int16_t *res_screen_y);
1095 
1097 
1099 
1101 
1103 
1105 
1107 
1108 bool video_driver_texture_load(void *data,
1109  enum texture_filter_type filter_type,
1110  uintptr_t *id);
1111 
1113 
1115 
1116 void video_driver_reinit(void);
1117 
1118 void video_driver_get_window_title(char *buf, unsigned len);
1119 
1121  bool *has_gpu_record,
1122  uint8_t **gpu_buf);
1123 
1124 bool *video_driver_get_threaded(void);
1125 
1126 void video_driver_set_threaded(bool val);
1127 
1128 void video_driver_get_status(uint64_t *frame_count, bool * is_alive,
1129  bool *is_focused);
1130 
1146  void *data, const char *ident,
1147  enum gfx_ctx_api api, unsigned major, unsigned minor,
1148  bool hw_render_ctx, void **ctx_data);
1149 
1151 
1153 
1155 
1157 
1159 
1161 
1163 
1164 void video_context_driver_make_current(bool restore);
1165 
1167 
1168 void video_context_driver_destroy(void);
1169 
1171 
1172 bool video_context_driver_swap_interval(int *interval);
1173 
1175 
1176 bool video_context_driver_suppress_screensaver(bool *bool_data);
1177 
1179 
1181 
1183 
1185 
1186 bool video_context_driver_show_mouse(bool *bool_data);
1187 
1189 
1191 
1193 
1195 
1197 
1198 void video_context_driver_free(void);
1199 
1201 
1203 
1205 
1207 
1208 bool video_shader_driver_deinit(void);
1209 
1211 
1213 
1215 
1217 
1219 
1220 bool video_shader_driver_mipmap_input(unsigned *index);
1221 
1223 
1225 
1227 
1229 
1231 
1232 bool video_shader_driver_compile_program(struct shader_program_info *program_info);
1233 
1235 
1237 
1238 float video_driver_get_refresh_rate(void);
1239 
1241 
1243 
1244 bool video_driver_is_threaded(void);
1245 
1247  enum display_flags flag);
1248 
1249 extern video_driver_t video_gl;
1252 extern video_driver_t video_psp1;
1254 extern video_driver_t video_ps2;
1255 extern video_driver_t video_ctr;
1257 extern video_driver_t video_d3d8;
1258 extern video_driver_t video_d3d9;
1262 extern video_driver_t video_gx;
1263 extern video_driver_t video_wiiu;
1266 extern video_driver_t video_sdl;
1267 extern video_driver_t video_sdl2;
1268 extern video_driver_t video_vg;
1269 extern video_driver_t video_omap;
1273 extern video_driver_t video_drm;
1274 extern video_driver_t video_xshm;
1275 extern video_driver_t video_caca;
1276 extern video_driver_t video_gdi;
1277 extern video_driver_t video_vga;
1279 extern video_driver_t video_null;
1280 
1281 extern const gfx_ctx_driver_t gfx_ctx_osmesa;
1282 extern const gfx_ctx_driver_t gfx_ctx_sdl_gl;
1283 extern const gfx_ctx_driver_t gfx_ctx_x_egl;
1284 extern const gfx_ctx_driver_t gfx_ctx_wayland;
1285 extern const gfx_ctx_driver_t gfx_ctx_x;
1286 extern const gfx_ctx_driver_t gfx_ctx_drm;
1289 extern const gfx_ctx_driver_t gfx_ctx_android;
1290 extern const gfx_ctx_driver_t gfx_ctx_ps3;
1291 extern const gfx_ctx_driver_t gfx_ctx_wgl;
1292 extern const gfx_ctx_driver_t gfx_ctx_videocore;
1293 extern const gfx_ctx_driver_t gfx_ctx_qnx;
1294 extern const gfx_ctx_driver_t gfx_ctx_cgl;
1295 extern const gfx_ctx_driver_t gfx_ctx_cocoagl;
1299 extern const gfx_ctx_driver_t gfx_ctx_gdi;
1300 extern const gfx_ctx_driver_t gfx_ctx_sixel;
1301 extern const gfx_ctx_driver_t switch_ctx;
1302 extern const gfx_ctx_driver_t orbis_ctx;
1303 extern const gfx_ctx_driver_t gfx_ctx_null;
1304 
1305 
1306 extern const shader_backend_t gl_glsl_backend;
1307 extern const shader_backend_t gl_cg_backend;
1309 
1311 
1312 #endif
float drop_mod
Definition: video_driver.h:480
uintptr_t video_driver_get_current_framebuffer(void)
Definition: video_driver.c:663
const void * prev_info
Definition: video_driver.h:272
struct nk_font * font
Definition: nk_common.c:40
bool add_prefix
Definition: video_driver.h:168
void(* grab_mouse_toggle)(void *data)
Definition: video_driver.h:743
rarch_display_type
Definition: video_defines.h:71
unsigned custom_vp_full_width
Definition: video_driver.h:451
video_driver_t video_caca
Definition: caca_gfx.c:345
float * floatv
Definition: video_driver.h:202
bool video_driver_set_video_mode(unsigned width, unsigned height, bool fullscreen)
Definition: video_driver.c:1154
GLuint shader
Definition: glext.h:6670
void video_driver_set_filtering(unsigned index, bool smooth)
Definition: video_driver.c:1224
bool video_driver_frame_filter_is_32bit(void)
Definition: video_driver.c:2034
void video_driver_set_own_driver(void)
Definition: video_driver.c:2119
video_driver_t video_metal
Definition: metal.m:426
void(* show_mouse)(void *data, bool state)
Definition: video_driver.h:603
float y
Definition: video_driver.h:477
shader_uniform_type
Definition: video_driver.h:125
GLuint const GLchar * name
Definition: glext.h:6671
bool video_context_driver_get_refresh_rate(float *refresh_rate)
Definition: video_driver.c:3219
void(* set_mvp)(void *data, void *shader_data, const void *mat_data)
Definition: video_driver.h:710
unsigned crt_switch_resolution_super
Definition: video_driver.h:441
bool video_driver_is_active(void)
Definition: video_driver.c:2206
const char * ident
Definition: video_driver.h:606
Definition: video_driver.h:297
Definition: video_driver.h:110
struct video_poke_interface video_poke_interface_t
struct video_frame_info video_frame_info_t
_W64 signed int intptr_t
Definition: stdint.h:164
unsigned custom_vp_height
Definition: video_driver.h:450
void video_driver_set_active(void)
Definition: video_driver.c:2196
bool use_rgba
Definition: video_driver.h:420
const gfx_ctx_driver_t gfx_ctx_videocore
Definition: vc_egl_ctx.c:707
video_driver_t video_vulkan
Definition: vulkan.c:2720
void video_driver_set_mvp(video_shader_ctx_mvp_t *mvp)
Definition: video_driver.c:3750
unsigned out_height
Definition: video_driver.h:267
bool video_context_driver_get_video_output_prev(void)
Definition: video_driver.c:3131
const char * ident
Definition: video_driver.h:683
void video_driver_unset_active(void)
Definition: video_driver.c:2201
bool menu_is_alive
Definition: video_driver.h:429
_W64 unsigned int uintptr_t
Definition: stdint.h:165
struct gfx_ctx_image gfx_ctx_image_t
void(* set_params)(void *data, void *shader_data)
Definition: video_driver.h:213
const gfx_ctx_driver_t gfx_ctx_emscripten
Definition: emscriptenegl_ctx.c:371
struct video_shader_pass * pass
Definition: video_driver.h:83
Definition: video_driver.h:117
struct gfx_ctx_aspect gfx_ctx_aspect_t
void(* deinit)(void *data)
Definition: video_driver.h:210
GLuint GLfloat * val
Definition: glext.h:7847
void video_driver_build_info(video_frame_info_t *video_info)
Definition: video_driver.c:2747
char chat_text[256]
Definition: video_driver.h:468
unsigned tex_width
Definition: video_driver.h:264
video_driver_t video_d3d9
Definition: d3d9.c:2068
float(* get_refresh_rate)(void *data)
Definition: video_driver.h:717
void video_driver_set_pixel_format(enum retro_pixel_format fmt)
Definition: video_driver.c:1414
bool is_threaded
Definition: video_driver.h:368
struct uniform_info::@680 lookup
bool fullscreen
Definition: video_driver.h:418
struct video_shader_ctx_params video_shader_ctx_params_t
const shader_backend_t * shader
Definition: video_driver.h:252
bool video_shader_driver_init_first(void)
Definition: video_driver.c:3637
bool video_context_driver_write_to_image_buffer(gfx_ctx_image_t *img)
Definition: video_driver.c:3120
char stat_text[512]
Definition: video_driver.h:467
#define RETRO_BEGIN_DECLS
Definition: retro_common_api.h:41
bool scale_integer
Definition: video_driver.h:415
bool(* set_coords)(void *handle_data, void *shader_data, const struct video_coords *coords)
Definition: video_driver.h:232
bool core_context_enabled
Definition: video_driver.h:256
enum rarch_display_type video_driver_display_type_get(void)
Definition: video_driver.c:2689
GLuint buffer
Definition: glext.h:6555
void video_driver_unset_own_driver(void)
Definition: video_driver.c:2124
const char * ident
Definition: video_driver.h:245
void video_driver_unset_video_cache_context_ack(void)
Definition: video_driver.c:2186
bool windowed_fullscreen
Definition: video_driver.h:417
void video_driver_menu_settings(void **list_data, void *list_info_data, void *group_data, void *subgroup_data, const char *parent_group)
Definition: video_driver.c:1483
bool video_driver_owns_driver(void)
Definition: video_driver.c:2129
struct gfx_fbo_scale * scale
Definition: video_driver.h:286
GLenum const GLfloat * params
Definition: glext.h:6297
bool(* cb_set_resize)(void *, unsigned, unsigned)
Definition: video_driver.h:496
void video_driver_monitor_adjust_system_rates(void)
Definition: video_driver.c:1442
static const bool allow_rotate
Definition: config.def.h:496
Definition: video_driver.h:325
Definition: video_driver.h:128
void video_driver_set_nonblock_state(bool toggle)
Definition: video_driver.c:1933
unsigned height
Definition: video_driver.h:641
void video_driver_load_settings(config_file_t *conf)
Definition: video_driver.c:2053
Definition: video_driver.h:122
unsigned * height
Definition: video_driver.h:635
bool(* get_metrics_cb)(void *data, enum display_metric_types type, float *value)
Definition: video_driver.h:508
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:8418
const char * ident
Definition: video_driver.h:166
Definition: ffmpeg_core.c:151
float v0
Definition: video_driver.h:196
unsigned id
Definition: video_driver.h:327
unsigned width
Definition: video_driver.h:442
rotation
Definition: video_defines.h:62
bool video_shader_driver_wrap_type(video_shader_ctx_wrap_t *wrap)
Definition: video_driver.c:3728
bool video_driver_frame_filter_alive(void)
Definition: video_driver.c:2029
video_driver_frame_t frame
Definition: video_driver.h:777
void video_driver_set_viewport_square_pixel(void)
Definition: video_driver.c:1689
Definition: video_driver.h:94
const gfx_ctx_driver_t gfx_ctx_null
Definition: gfx_null_ctx.c:136
video_driver_t video_xenon360
Definition: xenon360_gfx.c:311
Definition: video_driver.h:98
char fps_text[128]
Definition: video_driver.h:466
text_alignment
Definition: video_defines.h:103
GLsizei const GLchar ** path
Definition: glext.h:7901
const gfx_ctx_driver_t gfx_ctx_android
Definition: android_ctx.c:598
bool(* cb_set_mvp)(void *data, void *shader_data, const void *mat_data)
Definition: video_driver.h:498
struct shader_backend shader_backend_t
bool video_shader_driver_get_feedback_pass(unsigned *data)
Definition: video_driver.c:3679
unsigned materialui_color_theme
Definition: video_driver.h:447
void video_driver_set_aspect_ratio_value(float value)
Definition: video_driver.c:1374
unsigned height
Definition: video_driver.h:655
bool rgb32
Definition: video_driver.h:665
float frame_time
Definition: video_driver.h:471
void(* set_texture_enable)(void *data, bool enable, bool full_screen)
Definition: video_driver.h:737
bool(* focus)(void *data)
Definition: video_driver.h:792
int crt_switch_center_adjust
Definition: video_driver.h:434
float video_driver_get_aspect_ratio(void)
Definition: video_driver.c:1369
void * data
Definition: video_driver.h:270
const gfx_ctx_driver_t gfx_ctx_cocoagl
Definition: cocoa_gl_ctx.m:662
GLenum GLsizei len
Definition: glext.h:7389
void video_driver_set_threaded(bool val)
Definition: video_driver.c:547
struct gfx_ctx_mode gfx_ctx_mode_t
unsigned video_pixel_get_alignment(unsigned pitch)
Definition: video_driver.c:2375
void(* set_filtering)(void *data, unsigned index, bool smooth)
Definition: video_driver.h:718
struct gfx_ctx_metrics gfx_ctx_metrics_t
video_driver_t video_d3d11
Definition: d3d11.c:1707
video_driver_t video_switch
Definition: switch_gfx.c:440
float x
Definition: video_driver.h:476
bool video_context_driver_get_video_output_next(void)
Definition: video_driver.c:3139
uint32_t(* get_flags)(void *data)
Definition: video_driver.h:707
void(* update_window_title_cb)(void *, void *)
Definition: video_driver.h:507
Definition: video_driver.h:93
Definition: video_driver.h:92
const shader_backend_t * shader_driver
Definition: video_driver.h:504
Definition: video_driver.h:76
GLsizeiptr size
Definition: glext.h:6559
enum rarch_shader_type shader_type
Definition: video_driver.h:250
bool(* set_video_mode)(void *, video_frame_info_t *video_info, unsigned, unsigned, bool)
Definition: video_driver.h:533
const gfx_ctx_driver_t gfx_ctx_drm
Definition: drm_ctx.c:925
void video_context_driver_make_current(bool restore)
Definition: video_driver.c:3147
GLenum GLuint id
Definition: glext.h:6233
const gfx_ctx_driver_t gfx_ctx_qnx
Definition: qnx_ctx.c:466
static tesseract::TessBaseAPI * api
Definition: tess_get_text.cpp:7
void(* gfx_ctx_proc_t)(void)
Definition: video_driver.h:330
bool video_driver_get_hw_render_interface(const struct retro_hw_render_interface **iface)
Definition: video_driver.c:2246
Definition: video_driver.h:80
video_driver_t video_wiiu
Definition: gx2_gfx.c:1746
int32_t location
Definition: video_driver.h:159
video_driver_t video_exynos
Definition: exynos_gfx.c:1543
struct uniform_info::@681 result
GLboolean enable
Definition: glext.h:12027
Definition: video_driver.h:625
bool video_context_driver_swap_interval(int *interval)
Definition: video_driver.c:3184
Definition: video_driver.h:142
GLenum GLenum GLenum GLenum GLenum scale
Definition: glext.h:9939
bool video_shader_driver_info(video_shader_ctx_info_t *shader_info)
Definition: video_driver.c:3701
Definition: video_driver.h:121
float v3
Definition: video_driver.h:199
void(* get_video_output_size)(void *data, unsigned *width, unsigned *height)
Definition: video_driver.h:719
void(* get_video_output_size)(void *, unsigned *, unsigned *)
Definition: video_driver.h:541
bool video_context_driver_find_next_driver(void)
Definition: video_driver.c:2998
video_driver_t video_d3d8
Definition: d3d8.c:1902
bool video_driver_cached_frame(void)
Definition: video_driver.c:1424
unsigned width
Definition: video_driver.h:690
bool runloop_is_paused
Definition: video_driver.h:427
Definition: video_driver.h:88
void(* show_mouse)(void *data, bool state)
Definition: video_driver.h:742
unsigned width
Definition: video_driver.h:350
static const bool fullscreen
Definition: config.def.h:108
bool black_frame_insertion
Definition: video_driver.h:410
float(* translate_aspect)(void *, unsigned, unsigned)
Definition: video_driver.h:554
video_driver_t video_vg
Definition: vg.c:504
bool smooth
Definition: video_driver.h:366
bool runloop_is_slowmotion
Definition: video_driver.h:425
float font_msg_color_r
Definition: video_driver.h:461
typedef void(__stdcall *PFN_DESTRUCTION_CALLBACK)(void *pData)
void video_driver_default_settings(void)
Definition: video_driver.c:2039
const gfx_ctx_driver_t gfx_ctx_wgl
Definition: wgl_ctx.c:842
video_driver_t video_sdl2
Definition: sdl2_gfx.c:766
void(* set_rotation)(void *data, unsigned rotation)
Definition: video_driver.h:814
const gfx_ctx_driver_t gfx_ctx_vivante_fbdev
Definition: vivante_fbdev_ctx.c:272
void(* free)(void *data)
Definition: video_driver.h:806
unsigned num
Definition: video_driver.h:292
void video_driver_show_mouse(void)
Definition: video_driver.c:1921
const shader_backend_t gl_glsl_backend
Definition: shader_glsl.c:1712
display_metric_types
Definition: video_driver.h:105
Definition: ibxm.h:9
GLenum GLenum GLenum input
Definition: glext.h:9938
uintptr_t video_driver_window_get(void)
Definition: video_driver.c:2699
bool(* suppress_screensaver)(void *data, bool enable)
Definition: video_driver.h:795
void video_driver_set_stub_frame(void)
Definition: video_driver.c:1616
void(* set_coords)(void *handle_data, void *shader_data, const struct video_coords *coords)
Definition: video_driver.h:708
bool runloop_is_idle
Definition: video_driver.h:426
void video_driver_set_cached_frame_ptr(const void *data)
Definition: video_driver.c:1610
uintptr_t v3
Definition: video_driver.h:189
bool(* bind_api)(void *video_driver, enum gfx_ctx_api, unsigned major, unsigned minor)
Definition: video_driver.h:526
video_driver_t video_omap
Definition: omap_gfx.c:1175
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: glext.h:6303
bool video_driver_started_fullscreen(void)
Definition: video_driver.c:443
struct gfx_ctx_driver gfx_ctx_driver_t
Definition: video_driver.h:309
video_driver_t video_drm
Definition: drm_gfx.c:1023
void video_driver_gpu_record_deinit(void)
Definition: video_driver.c:2227
Definition: video_driver.h:129
bool libretro_running
Definition: video_driver.h:421
bool(* set_resize_cb)(void *, unsigned, unsigned)
Definition: video_driver.h:510
void * userdata
Definition: video_driver.h:503
typedef bool(RETRO_CALLCONV *retro_replace_image_index_t)(unsigned index
Definition: video_shader_parse.h:143
void(* set_uniform_parameter)(void *data, struct uniform_info *param, void *uniform_data)
Definition: video_driver.h:215
Definition: video_driver.h:658
unsigned width
Definition: video_driver.h:262
uintptr_t(* load_texture)(void *video_data, void *data, bool threaded, enum texture_filter_type filter_type)
Definition: video_driver.h:712
retro_pixel_format
Definition: libretro.h:2142
bool video_monitor_fps_statistics(double *refresh_rate, double *deviation, unsigned *sample_points)
Definition: video_driver.c:1319
void video_driver_set_size(unsigned *width, unsigned *height)
Definition: video_driver.c:1268
Definition: video_driver.h:289
void(RETRO_CALLCONV * retro_proc_address_t)(void)
Definition: libretro.h:1541
int drop_y
Definition: video_driver.h:483
void(* set_osd_msg)(void *data, video_frame_info_t *video_info, const char *msg, const void *params, void *font)
Definition: video_driver.h:738
video_driver_t video_sunxi
Definition: sunxi_gfx.c:978
void video_driver_reinit(void)
Definition: video_driver.c:2104
unsigned height
Definition: video_driver.h:263
unsigned full_width
Definition: video_driver.h:692
float scale
Definition: video_driver.h:478
GLint GLvoid * img
Definition: glext.h:6388
unsigned xmb_theme
Definition: video_driver.h:444
void(* shader_scale)(void *data, unsigned index, struct gfx_fbo_scale *scale)
Definition: video_driver.h:230
Definition: libretro.h:1215
bool video_driver_set_viewport(unsigned width, unsigned height, bool force_fullscreen, bool allow_rotate)
Definition: video_driver.c:1136
unsigned index
Definition: video_driver.h:305
struct video_shader_ctx_texture video_shader_ctx_texture_t
int swap_interval
Definition: video_driver.h:358
const gfx_ctx_driver_t gfx_ctx_sdl_gl
Definition: sdl_gl_ctx.c:416
unsigned menu_shader_pipeline
Definition: video_driver.h:446
Definition: video_driver.h:101
bool video_driver_supports_viewport_read(void)
Definition: video_driver.c:1642
GLuint coords
Definition: glext.h:8035
unsigned height
Definition: video_driver.h:691
bool font_enable
Definition: video_driver.h:344
const char * video_driver_get_ident(void)
Definition: video_driver.c:570
bool video_driver_read_viewport(uint8_t *buffer, bool is_idle)
Definition: video_driver.c:2019
unsigned tex_w
Definition: video_driver.h:82
bool video_driver_translate_coord_viewport(struct video_viewport *vp, int mouse_x, int mouse_y, int16_t *res_x, int16_t *res_y, int16_t *res_screen_x, int16_t *res_screen_y)
Definition: video_driver.c:2884
bool video_shader_driver_get_ident(video_shader_ctx_ident_t *ident)
Definition: video_driver.c:3490
void video_context_driver_destroy(void)
Definition: video_driver.c:623
GLfloat param
Definition: glext.h:6480
bool(* has_focus)(void *)
Definition: video_driver.h:569
Definition: video_driver.h:107
bool shared_context
Definition: video_driver.h:409
struct video_shader_ctx video_shader_ctx_t
bool video_context_driver_set(const gfx_ctx_driver_t *data)
Definition: video_driver.c:614
GLenum type
Definition: glext.h:6233
bool set_active
Definition: video_driver.h:291
void video_driver_window_set(uintptr_t idx)
Definition: video_driver.c:2694
unsigned * width
Definition: video_driver.h:634
unsigned frame_counter
Definition: video_driver.h:268
unsigned ozone_color_theme
Definition: video_driver.h:448
void video_driver_monitor_reset(void)
Definition: video_driver.c:1809
Definition: video_driver.h:405
unsigned hard_sync_frames
Definition: video_driver.h:436
Definition: input_driver.h:132
bool video_driver_init(bool *video_is_threaded)
Definition: video_driver.c:1788
unsigned tex_height
Definition: video_driver.h:265
unsigned tex_h
Definition: video_driver.h:82
rarch_shader_type
Definition: video_shader_parse.h:50
void video_driver_set_texture_enable(bool enable, bool full_screen)
Definition: video_driver.c:1190
float value
Definition: video_driver.h:699
Definition: video_driver.h:696
struct video_viewport * video_viewport_get_custom(void)
Definition: video_driver.c:2369
struct gfx_ctx_input gfx_ctx_input_t
Definition: video_driver.h:320
void ** handle
Definition: video_driver.h:666
void video_driver_destroy(void)
Definition: video_driver.c:1594
bool video_driver_get_viewport_info(struct video_viewport *viewport)
Definition: video_driver.c:2259
void * data
Definition: video_driver.h:253
Definition: video_driver.h:90
Definition: video_driver.h:102
void video_driver_set_texture_frame(const void *frame, bool rgb32, unsigned width, unsigned height, float alpha)
Definition: video_driver.c:1197
void ** input_data
Definition: video_driver.h:672
bool video_context_driver_set_video_mode(gfx_ctx_mode_t *mode_info)
Definition: video_driver.c:3276
const char * video_driver_find_ident(int index)
Definition: video_driver.c:491
Definition: video_driver.h:303
int y
Definition: video_driver.h:689
static const float refresh_rate
Definition: config.def.h:489
bool video_driver_is_threaded(void)
Definition: video_driver.c:511
bool * video_driver_get_threaded(void)
Definition: video_driver.c:542
unsigned pitch
Definition: video_driver.h:663
video_driver_t video_ps2
Definition: ps2_gfx.c:401
struct video_shader * data
Definition: video_driver.h:317
bool(* image_buffer_init)(void *, const video_info_t *)
Definition: video_driver.h:591
bool msg_bgcolor_enable
Definition: video_driver.h:430
bool enabled
Definition: video_driver.h:157
float font_msg_color_g
Definition: video_driver.h:462
Definition: video_driver.h:283
bool(* mipmap_input)(void *data, unsigned index)
Definition: video_driver.h:238
Definition: video_driver.h:118
float menu_wallpaper_opacity
Definition: video_driver.h:454
void video_monitor_set_refresh_rate(float hz)
Definition: video_driver.c:1289
bool video_driver_get_next_video_out(void)
Definition: video_driver.c:1766
float frame_rate
Definition: video_driver.h:472
bool rgb32
Definition: video_driver.h:378
bool video_shader_driver_get_prev_textures(video_shader_ctx_texture_t *texture)
Definition: video_driver.c:3480
void(* set_video_mode)(void *data, unsigned width, unsigned height, bool fullscreen)
Definition: video_driver.h:715
float menu_footer_opacity
Definition: video_driver.h:457
const void * feedback_info
Definition: video_driver.h:273
Definition: video_driver.h:96
float font_msg_color_b
Definition: video_driver.h:463
uintptr_t video_driver_display_get(void)
Definition: video_driver.c:2679
video_driver_t video_gdi
Definition: gdi_gfx.c:643
float video_driver_get_refresh_rate(void)
Definition: video_driver.c:3766
void video_driver_set_rgba(void)
Definition: video_driver.c:1743
Definition: video_driver.h:155
Definition: video_driver.h:109
bool(* get_current_software_framebuffer)(void *data, struct retro_framebuffer *framebuffer)
Definition: video_driver.h:746
bool(* cb_get_metrics)(void *data, enum display_metric_types type, float *value)
Definition: video_driver.h:494
bool video_driver_is_hw_context(void)
Definition: video_driver.c:2134
void(* set_aspect_ratio)(void *data, unsigned aspectratio_index)
Definition: video_driver.h:730
unsigned custom_vp_full_height
Definition: video_driver.h:452
uint32_t flags
Definition: video_driver.h:627
const char * vertex
Definition: video_driver.h:148
Definition: video_driver.h:77
bool battery_level_enable
Definition: video_driver.h:423
void video_driver_set_video_cache_context_ack(void)
Definition: video_driver.c:2181
float(* get_refresh_rate)(void *)
Definition: video_driver.h:539
Definition: video_driver.h:638
void video_driver_set_aspect_ratio(void)
Definition: video_driver.c:1814
struct video_info video_info_t
bool video_driver_get_current_software_framebuffer(struct retro_framebuffer *fb)
Definition: video_driver.c:2233
unsigned width
Definition: video_driver.h:654
video_driver_t video_vga
Definition: vga_gfx.c:430
void video_driver_save_settings(config_file_t *conf)
Definition: video_driver.c:2083
void video_driver_destroy_data(void)
Definition: video_driver.c:1796
signed short int16_t
Definition: stdint.h:122
unsigned idx
Definition: video_driver.h:311
float xmb_alpha_factor
Definition: video_driver.h:464
void(* get_video_size)(void *, unsigned *, unsigned *)
Definition: video_driver.h:537
static const unsigned char msg[]
Definition: ccm.c:375
struct gfx_ctx_size gfx_ctx_size_t
video_driver_t video_null
Definition: nullgfx.c:123
void video_driver_unset_rgba(void)
Definition: video_driver.c:1750
int custom_vp_x
Definition: video_driver.h:432
gfx_ctx_proc_t(* get_proc_address)(const char *)
Definition: video_driver.h:587
Definition: video_shader_parse.h:86
Definition: video_driver.h:513
struct gfx_ctx_proc_address gfx_ctx_proc_address_t
unsigned monitor_index
Definition: video_driver.h:439
enum gfx_wrap_type type
Definition: video_driver.h:312
void(* set_viewport)(void *data, unsigned width, unsigned height, bool force_full, bool allow_rotate)
Definition: video_driver.h:811
bool video_context_driver_get_ident(gfx_ctx_ident_t *ident)
Definition: video_driver.c:3268
const input_driver_t ** input
Definition: video_driver.h:671
bool(* alive)(void *data)
Definition: video_driver.h:789
void(* get_video_output_next)(void *data)
Definition: video_driver.h:726
bool video_driver_has_windowed(void)
Definition: video_driver.c:3401
const struct retro_hw_render_context_negotiation_interface * video_driver_get_context_negotiation_interface(void)
Definition: video_driver.c:2165
static uint64_t state[MAX_PADS]
Definition: xenon360_input.c:33
void video_driver_unset_stub_frame(void)
Definition: video_driver.c:1622
bool(* get_hw_render_interface)(void *data, const struct retro_hw_render_interface **iface)
Definition: video_driver.h:748
const gfx_ctx_driver_t gfx_ctx_x_egl
Definition: xegl_ctx.c:615
retro_proc_address_t(* get_proc_address)(void *data, const char *sym)
Definition: video_driver.h:729
Definition: video_driver.h:332
texture_filter_type
Definition: video_defines.h:24
video_driver_t video_gl
Definition: gl.c:2636
Definition: video_driver.h:135
bool video_context_driver_set_flags(gfx_ctx_flags_t *flags)
Definition: video_driver.c:3353
Definition: video_coord_array.h:56
bool video_shader_driver_compile_program(struct shader_program_info *program_info)
Definition: video_driver.c:3719
Definition: video_defines.h:59
Definition: video_driver.h:100
Definition: video_driver.h:315
struct video_driver video_driver_t
Definition: libretro.h:2298
void(* set_texture_frame)(void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha)
Definition: video_driver.h:734
struct video_frame_info::@686 osd_stat_params
int custom_vp_y
Definition: video_driver.h:433
Definition: video_driver.h:119
void(* use)(void *data, void *shader_data, unsigned index, bool set_active)
Definition: video_driver.h:223
void(* unload_texture)(void *data, uintptr_t id)
Definition: video_driver.h:714
bool video_shader_driver_filter_type(video_shader_ctx_filter_t *filter)
Definition: video_driver.c:3711
bool(* video_driver_frame_t)(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, video_frame_info_t *video_info)
Definition: video_driver.h:755
const void * info
Definition: video_driver.h:271
struct video_viewport video_viewport_t
bool video_shader_driver_deinit(void)
Definition: video_driver.c:3521
void * data
Definition: video_driver.h:152
Definition: libretro.h:2254
float v2
Definition: video_driver.h:198
const char * ident
Definition: video_driver.h:322
Definition: video_driver.h:120
Definition: video_driver.h:130
unsigned(* num_shaders)(void *data)
Definition: video_driver.h:226
void video_driver_apply_state_changes(void)
Definition: video_driver.c:2012
void video_driver_display_set(uintptr_t idx)
Definition: video_driver.c:2684
void video_driver_frame(const void *data, unsigned width, unsigned height, size_t pitch)
Definition: video_driver.c:2395
Definition: video_driver.h:675
uintptr_t(* get_current_framebuffer)(void *data)
Definition: video_driver.h:728
bool video_driver_texture_unload(uintptr_t *id)
Definition: video_driver.c:2718
bool video_driver_get_all_flags(gfx_ctx_flags_t *flags, enum display_flags flag)
Definition: video_driver.c:3333
bool video_context_driver_show_mouse(bool *bool_data)
Definition: video_driver.c:3301
void * context_data
Definition: video_driver.h:501
int x
Definition: video_driver.h:688
bool font_enable
Definition: video_driver.h:419
bool(* filter_type)(void *data, unsigned index, bool *smooth)
Definition: video_driver.h:228
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 idx
Definition: pixman-arm-neon-asm.h:96
signed int int32_t
Definition: stdint.h:123
Definition: video_driver.h:134
void video_shader_driver_set_parameters(video_shader_ctx_params_t *params)
Definition: video_driver.c:3474
unsigned max_swapchain_images
Definition: video_driver.h:438
Definition: video_driver.h:651
#define RETRO_END_DECLS
Definition: retro_common_api.h:42
struct video_shader_ctx_scale video_shader_ctx_scale_t
Definition: video_driver.h:127
void(* make_current)(bool release)
Definition: video_driver.h:622
bool * smooth
Definition: video_driver.h:306
struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END]
Definition: video_driver.c:237
Definition: video_driver.h:145
bool fullscreen
Definition: video_driver.h:335
struct video_shader_ctx_init::@685 gl
bool(* compile_program)(void *data, unsigned idx, void *program_data, struct shader_program_info *program_info)
Definition: video_driver.h:219
intptr_t v3
Definition: video_driver.h:179
void video_driver_update_viewport(struct video_viewport *vp, bool force_full, bool keep_aspect)
Definition: video_driver.c:1845
GLfloat GLfloat GLfloat alpha
Definition: glext.h:6290
video_driver_t video_xvideo
Definition: xvideo.c:980
Definition: video_shader_parse.h:111
Definition: video_driver.h:630
bool vsync
Definition: video_driver.h:338
void video_context_driver_free(void)
Definition: video_driver.c:3165
gfx_ctx_api
Definition: video_driver.h:86
bool hard_sync
Definition: video_driver.h:411
GLuint index
Definition: glext.h:6671
bool input_menu_swap_ok_cancel_buttons
Definition: video_driver.h:407
void video_driver_set_coords(video_shader_ctx_coords_t *coords)
Definition: video_driver.c:3735
Definition: config_file.h:55
retro_proc_address_t video_driver_get_proc_address(const char *sym)
Definition: video_driver.c:670
void video_driver_set_viewport_config(void)
Definition: video_driver.c:1657
const gfx_ctx_driver_t * video_context_driver_init_first(void *data, const char *ident, enum gfx_ctx_api api, unsigned major, unsigned minor, bool hw_render_ctx, void **ctx_data)
Definition: video_driver.c:3077
const void * video_driver_find_handle(int index)
Definition: video_driver.c:476
const char * ident
Definition: video_driver.h:809
const void * frame
Definition: video_driver.h:660
bool video_driver_set_shader(enum rarch_shader_type type, const char *shader)
Definition: video_driver.c:677
enum text_alignment text_align
Definition: video_driver.h:489
bool is_perfcnt_enable
Definition: video_driver.h:428
const gfx_ctx_driver_t gfx_ctx_opendingux_fbdev
Definition: opendingux_fbdev_ctx.c:266
uint32_t(* get_flags)(void *data)
Definition: video_driver.h:608
display_flags
Definition: video_driver.h:113
unsigned height
Definition: video_driver.h:662
Definition: video_driver.h:277
unsigned index
Definition: video_driver.h:664
update_window_title_cb update_window_title
Definition: video_driver.h:557
const void * data
Definition: video_driver.h:280
const char * fragment
Definition: video_driver.h:149
Definition: video_driver.h:115
void video_driver_set_osd_msg(const char *msg, const void *params, void *font)
Definition: video_driver.c:1182
get_metrics_cb get_metrics
Definition: video_driver.h:547
const video_poke_interface_t * video_driver_get_poke(void)
Definition: video_driver.c:575
float refresh_rate
Definition: video_driver.h:458
Definition: video_driver.h:760
bool(* set_mvp)(void *data, void *shader_data, const void *mat_data)
Definition: video_driver.h:234
video_driver_t video_psp1
Definition: psp1_gfx.c:960
float font_msg_pos_y
Definition: video_driver.h:460
video_driver_t video_sixel
Definition: sixel_gfx.c:651
Definition: video_driver.h:248
const gfx_ctx_driver_t gfx_ctx_wayland
Definition: wayland_ctx.c:1881
const gfx_ctx_driver_t gfx_ctx_gdi
Definition: gdi_ctx.c:347
bool full_screen
Definition: video_driver.h:488
RETRO_BEGIN_DECLS struct video_overlay_interface video_overlay_interface_t
void video_driver_set_context_negotiation_interface(const struct retro_hw_render_context_negotiation_interface *iface)
Definition: video_driver.c:2170
Definition: video_driver.h:686
struct video_shader_ctx_filter video_shader_ctx_filter_t
bool is_file
Definition: video_driver.h:147
bool video_context_driver_find_prev_driver(void)
Definition: video_driver.c:2975
intptr_t v0
Definition: video_driver.h:176
typedefRETRO_BEGIN_DECLS struct rarch_softfilter rarch_softfilter_t
Definition: video_filter.h:29
void video_driver_get_record_status(bool *has_gpu_record, uint8_t **gpu_buf)
Definition: video_driver.c:2211
enum gfx_wrap_type(* wrap_type)(void *data, unsigned index)
Definition: video_driver.h:229
void(* get_video_output_next)(void *)
Definition: video_driver.h:545
void video_driver_hide_mouse(void)
Definition: video_driver.c:1927
Definition: video_driver.h:132
Definition: video_driver.h:108
Definition: video_driver.h:669
bool enable
Definition: video_driver.h:169
void(* set_flags)(void *data, uint32_t flags)
Definition: video_driver.h:610
GLint GLint GLint GLint GLint GLint GLint GLbitfield GLenum filter
Definition: glext.h:7672
void video_driver_free_hw_context(void)
Definition: video_driver.c:2145
int drop_x
Definition: video_driver.h:483
video_driver_t video_vita2d
Definition: vita2d_gfx.c:962
bool(* read_viewport)(void *data, uint8_t *buffer, bool is_idle)
Definition: video_driver.h:818
const char * path
Definition: video_driver.h:251
void(* get_video_output_prev)(void *data)
Definition: video_driver.h:723
void video_shader_driver_use(video_shader_ctx_info_t *shader_info)
Definition: video_driver.c:3460
unsigned fbo_info_cnt
Definition: video_driver.h:269
Definition: video_driver.h:95
void video_driver_cached_frame_get(const void **data, unsigned *width, unsigned *height, size_t *pitch)
Definition: video_driver.c:1240
GLint GLint GLsizei width
Definition: glext.h:6293
bool video_context_driver_get_video_size(gfx_ctx_mode_t *mode_info)
Definition: video_driver.c:3292
Definition: video_driver.h:645
const gfx_ctx_driver_t gfx_ctx_ps3
Definition: ps3_ctx.c:413
void * data
Definition: video_driver.h:299
intptr_t v1
Definition: video_driver.h:177
bool video_driver_gpu_record_init(unsigned size)
Definition: video_driver.c:2219
unsigned crt_switch_resolution
Definition: video_driver.h:440
Definition: video_driver.h:131
const gfx_ctx_driver_t gfx_ctx_osmesa
Definition: osmesa_ctx.c:392
void video_driver_display_type_set(enum rarch_display_type type)
Definition: video_driver.c:2674
void(* get_video_output_prev)(void *)
Definition: video_driver.h:543
bool video_driver_texture_load(void *data, enum texture_filter_type filter_type, uintptr_t *id)
Definition: video_driver.c:2704
bool video_context_driver_get_metrics(gfx_ctx_metrics_t *metrics)
Definition: video_driver.c:3209
const char * combined
Definition: video_driver.h:150
bool video_shader_driver_init(video_shader_ctx_init_t *init)
Definition: video_driver.c:3644
GLuint framebuffer
Definition: glext.h:7662
enum gfx_ctx_api(* get_api)(void *data)
Definition: video_driver.h:523
enum retro_pixel_format video_driver_get_pixel_format(void)
Definition: video_driver.c:1409
bool video_driver_cached_frame_has_valid_framebuffer(void)
Definition: video_driver.c:3412
uint32_t color
Definition: video_driver.h:487
shader_program_type
Definition: video_driver.h:138
bool video_shader_driver_mipmap_input(unsigned *index)
Definition: video_driver.c:3684
void video_driver_get_size(unsigned *width, unsigned *height)
Definition: video_driver.c:1253
Definition: video_driver.h:116
void video_driver_set_title_buf(void)
Definition: video_driver.c:2267
enum gfx_ctx_api video_context_driver_get_api(void)
Definition: video_driver.c:3368
bool(* has_windowed)(void *)
Definition: video_driver.h:575
bool fps_show
Definition: video_driver.h:412
unsigned width
Definition: video_driver.h:661
aspect_ratio
Definition: video_defines.h:32
gfx_wrap_type
Definition: video_shader_parse.h:75
const gfx_ctx_driver_t gfx_ctx_cgl
Definition: cgl_ctx.c:338
video_driver_t video_dispmanx
Definition: dispmanx_gfx.c:690
const gfx_ctx_driver_t switch_ctx
Definition: switch_ctx.c:301
bool video_driver_supports_rgba(void)
Definition: video_driver.c:1757
struct uniform_info::@681::@682 integer
unsigned(* wrap_type_to_enum)(enum gfx_wrap_type type)
Definition: video_driver.h:832
Definition: video_driver.h:97
bool statistics_show
Definition: video_driver.h:413
float aspect
Definition: ffmpeg_core.c:183
struct video_shader_ctx_info video_shader_ctx_info_t
GLsizei const GLfloat * value
Definition: glext.h:6709
bool xmb_shadows_enable
Definition: video_driver.h:422
Definition: metal_common.m:516
struct retro_system_av_info * video_viewport_get_system_av_info(void)
Definition: video_driver.c:2364
Definition: video_driver.h:260
void video_driver_reset_custom_viewport(void)
Definition: video_driver.c:1733
unsigned out_width
Definition: video_driver.h:266
void video_driver_set_viewport_core(void)
Definition: video_driver.c:1718
Definition: video_driver.h:705
Definition: video_driver.h:91
bool(* set_shader)(void *data, enum rarch_shader_type type, const char *path)
Definition: video_driver.h:802
float * aspect
Definition: video_driver.h:653
void(* destroy)(void *data)
Definition: video_driver.h:521
bool video_driver_supports_read_frame_raw(void)
Definition: video_driver.c:1650
retro_proc_address_t addr
Definition: video_driver.h:678
void(* bind_hw_render)(void *data, bool enable)
Definition: video_driver.h:613
Definition: video_driver.h:89
Definition: video_driver.h:206
bool video_context_driver_suppress_screensaver(bool *bool_data)
Definition: video_driver.c:3259
const gfx_ctx_driver_t gfx_ctx_mali_fbdev
Definition: mali_fbdev_ctx.c:302
struct retro_hw_render_callback * video_driver_get_hw_context(void)
Definition: video_driver.c:2159
bool video_shader_driver_direct_get_current_shader(video_shader_ctx_t *shader)
Definition: video_driver.c:3510
video_driver_t video_d3d10
Definition: d3d10.c:1655
video_driver_t video_d3d12
Definition: d3d12.c:1816
unsigned idx
Definition: video_driver.h:151
void video_shader_driver_set_parameter(struct uniform_info *param)
Definition: video_driver.c:3467
Definition: video_driver.h:681
uintptr_t * unsigned_integerv
Definition: video_driver.h:192
video_driver_t video_xshm
Definition: xshm_gfx.c:248
bool video_context_driver_get_proc_address(gfx_ctx_proc_address_t *proc)
Definition: video_driver.c:3199
void * shader_data
Definition: video_driver.h:502
uint64_t frame_count
Definition: video_driver.h:470
bool video_driver_supports_recording(void)
Definition: video_driver.c:1635
unsigned idx
Definition: video_driver.h:285
bool video_context_driver_get_video_output_size(gfx_ctx_size_t *size_data)
Definition: video_driver.c:3173
unsigned idx
Definition: video_driver.h:293
bool post_filter_record
Definition: video_driver.h:416
void(* check_window)(void *, bool *, bool *, unsigned *, unsigned *, bool)
Definition: video_driver.h:561
struct video_shader_ctx_init video_shader_ctx_init_t
uintptr_t v0
Definition: video_driver.h:186
video_driver_t video_ctr
Definition: ctr_gfx.c:1205
void(* apply_state_changes)(void *data)
Definition: video_driver.h:731
void(* init_menu_shaders)(void *data)
Definition: video_driver.h:209
void(* poke_interface)(void *data, const video_poke_interface_t **iface)
Definition: video_driver.h:831
bool video_driver_find_driver(void)
Definition: video_driver.c:1939
bool framecount_show
Definition: video_driver.h:414
void * video_driver_get_ptr(bool force_nonthreaded_data)
Definition: video_driver.c:560
intptr_t v2
Definition: video_driver.h:178
float menu_header_opacity
Definition: video_driver.h:456
enum rarch_shader_type type
Definition: video_driver.h:242
unsigned type
Definition: video_driver.h:161
intptr_t * integerv
Definition: video_driver.h:182
uintptr_t parent
Definition: video_driver.h:402
Definition: video4linux2.c:51
const gfx_ctx_driver_t gfx_ctx_khr_display
Definition: khr_display_ctx.c:236
bool video_driver_get_prev_video_out(void)
Definition: video_driver.c:1777
bool * resize
Definition: video_driver.h:633
bool video_context_driver_init_image_buffer(const video_info_t *data)
Definition: video_driver.c:3110
struct video_shader_ctx_coords video_shader_ctx_coords_t
void video_driver_cached_frame_set(const void *data, unsigned width, unsigned height, size_t pitch)
Definition: video_driver.c:1230
GLbitfield flags
Definition: glext.h:7828
bool force_aspect
Definition: video_driver.h:342
bool video_shader_driver_scale(video_shader_ctx_scale_t *scaler)
Definition: video_driver.c:3689
unsigned height
Definition: video_driver.h:443
bool video_driver_get_video_output_size(unsigned *width, unsigned *height)
Definition: video_driver.c:1173
float * value
Definition: video_driver.h:648
void(* swap_interval)(void *data, int)
Definition: video_driver.h:530
const char * config_get_video_driver_options(void)
Definition: video_driver.c:506
bool video_driver_is_video_cache_context_ack(void)
Definition: video_driver.c:2191
void(* viewport_info)(void *data, struct video_viewport *vp)
Definition: video_driver.h:815
struct uniform_info::@681::@683 unsigned_integer
unsigned custom_vp_width
Definition: video_driver.h:449
unsigned xmb_color_theme
Definition: video_driver.h:445
unsigned height
Definition: video_driver.h:356
const gfx_ctx_driver_t gfx_ctx_sixel
Definition: sixel_ctx.c:178
const shader_backend_t shader_null_backend
Definition: shader_null.c:78
bool fullscreen
Definition: video_driver.h:642
bool * quit
Definition: video_driver.h:632
rarch_softfilter_t * video_driver_frame_filter_get_ptr(void)
Definition: video_driver.c:1404
void(* swap_buffers)(void *, void *)
Definition: video_driver.h:579
unsigned width
Definition: video_driver.h:640
bool video_context_driver_input_driver(gfx_ctx_input_t *inp)
Definition: video_driver.c:3245
Definition: video_driver.h:99
bool(* get_feedback_pass)(void *data, unsigned *pass)
Definition: video_driver.h:237
enum display_metric_types type
Definition: video_driver.h:647
void(* set_nonblock_state)(void *data, bool toggle)
Definition: video_driver.h:786
bool video_driver_set_rotation(unsigned rotation)
Definition: video_driver.c:1146
void(* cb_update_window_title)(void *, void *)
Definition: video_driver.h:492
float drop_alpha
Definition: video_driver.h:485
void * handle_data
Definition: video_driver.h:279
bool(* video_driver_cb_has_focus)(void)
Definition: video_driver.c:133
unsigned __int64 uint64_t
Definition: stdint.h:136
float menu_framebuffer_opacity
Definition: video_driver.h:455
bool(* suppress_screensaver)(void *data, bool enable)
Definition: video_driver.h:572
struct video_shader_ctx_ident video_shader_ctx_ident_t
const shader_backend_t gl_cg_backend
Definition: shader_gl_cg.c:1281
const gfx_ctx_driver_t orbis_ctx
Definition: orbis_ctx.c:271
struct uniform_info::@681::@684 f
unsigned char uint8_t
Definition: stdint.h:124
float font_msg_pos_x
Definition: video_driver.h:459
int32_t count
Definition: video_driver.h:160
unsigned int uint32_t
Definition: stdint.h:126
set_resize_cb set_resize
Definition: video_driver.h:566
video_driver_t video_gx
Definition: gx_gfx.c:1662
void(* cb_swap_buffers)(void *, void *)
Definition: video_driver.h:493
const gfx_ctx_driver_t gfx_ctx_x
Definition: x_ctx.c:1228
struct gfx_ctx_ident gfx_ctx_ident_t
unsigned input_scale
Definition: video_driver.h:400
uintptr_t v1
Definition: video_driver.h:187
bool(* has_windowed)(void *data)
Definition: video_driver.h:798
void video_driver_free(void)
Definition: video_driver.c:1801
bool video_shader_driver_get_current_shader(video_shader_ctx_t *shader)
Definition: video_driver.c:3498
void video_driver_get_window_title(char *buf, unsigned len)
Definition: video_driver.c:2934
unsigned(* get_prev_textures)(void *data)
Definition: video_driver.h:236
void video_viewport_get_scaled_integer(struct video_viewport *vp, unsigned width, unsigned height, float aspect_ratio, bool keep_aspect)
Definition: video_driver.c:2296
bool(* image_buffer_write)(void *, const void *frame, unsigned width, unsigned height, unsigned pitch, bool rgb32, unsigned index, void **image_handle)
Definition: video_driver.h:597
void * data
Definition: video_driver.h:294
const char * sym
Definition: video_driver.h:677
Definition: libretro.h:1961
Definition: video_driver.h:141
uint32_t idx
Definition: video_driver.h:167
struct gfx_ctx_flags gfx_ctx_flags_t
void video_driver_get_status(uint64_t *frame_count, bool *is_alive, bool *is_focused)
Definition: video_driver.c:2943
GLint GLint GLsizei GLsizei height
Definition: glext.h:6293
bool input_driver_nonblock_state
Definition: video_driver.h:408
video_driver_t video_sdl
Definition: sdl_gfx.c:577
bool video_driver_is_video_cache_context(void)
Definition: video_driver.c:2176
Definition: video_driver.h:133
GLsizei GLenum const GLvoid GLuint GLsizei GLfloat * metrics
Definition: glext.h:12652
Definition: video_driver.h:140
bool video_driver_is_stub_frame(void)
Definition: video_driver.c:1630
set set set set set set set macro pixldst1 abits if abits op else op endif endm macro pixldst2 abits if abits op else op endif endm macro pixldst4 abits if abits op else op endif endm macro pixldst0 abits op endm macro pixldst3 mem_operand op endm macro pixldst30 mem_operand op endm macro pixldst abits if abits elseif abits elseif abits elseif abits elseif abits pixldst0 abits else pixldst0 abits pixldst0 abits pixldst0 abits pixldst0 abits endif elseif abits else pixldst0 abits pixldst0 abits endif elseif abits else error unsupported bpp *numpix else pixst endif endm macro pixld1_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl mov asr adds SRC_WIDTH_FIXED bpl add asl else error unsupported endif endm macro pixld2_s mem_operand if mov asr add asl add asl mov asr sub UNIT_X add asl mov asr add asl add asl mov asr add UNIT_X add asl else pixld1_s mem_operand pixld1_s mem_operand endif endm macro pixld0_s mem_operand if asr adds SRC_WIDTH_FIXED bpl add asl elseif asr adds SRC_WIDTH_FIXED bpl add asl endif endm macro pixld_s_internal mem_operand if mem_operand pixld2_s mem_operand pixdeinterleave basereg elseif mem_operand elseif mem_operand elseif mem_operand elseif mem_operand pixld0_s mem_operand else pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else pixld0_s mem_operand pixld0_s mem_operand endif elseif mem_operand else error unsupported mem_operand if bpp mem_operand endif endm macro vuzp8 reg2 vuzp d d &reg2 endm macro vzip8 reg2 vzip d d &reg2 endm macro pixdeinterleave basereg basereg basereg basereg basereg endif endm macro pixinterleave basereg basereg basereg basereg basereg endif endm macro PF boost_increment endif if endif PF tst PF addne PF subne PF cmp ORIG_W if endif if endif if endif PF subge ORIG_W PF subges if endif if endif if endif endif endm macro cache_preload_simple endif if dst_r_bpp pld [DST_R, #(PREFETCH_DISTANCE_SIMPLE *dst_r_bpp/8)] endif if mask_bpp pld init[MASK, #(PREFETCH_DISTANCE_SIMPLE *mask_bpp/8)] endif endif endm macro fetch_mask_pixblock pixld mask_basereg pixblock_size MASK endm macro ensure_destination_ptr_alignment process_pixblock_tail_head if beq irp local skip1 beq endif SRC MASK if dst_r_bpp DST_R else add endif PF add sub src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head pixblock_size cache_preload_simple process_pixblock_tail pixinterleave dst_w_basereg irp beq endif process_pixblock_tail_head tst beq irp if pixblock_size chunk_size tst beq pixld_src SRC pixld MASK if DST_R else pixld DST_R endif if src_basereg pixdeinterleave mask_basereg pixdeinterleave dst_r_basereg process_pixblock_head if pixblock_size cache_preload_simple endif process_pixblock_tail pixinterleave dst_w_basereg irp if pixblock_size chunk_size tst beq if DST_W else pixst DST_W else mov ORIG_W endif add lsl if lsl endif if lsl endif lsl endif lsl endif lsl endif subs mov DST_W if regs_shortage str endif bge start_of_loop_label endm macro generate_composite_function
Definition: pixman-arm-neon-asm.h:600
struct video_shader_ctx_mvp video_shader_ctx_mvp_t
const void * matrix
Definition: video_driver.h:300
float v1
Definition: video_driver.h:197
unsigned full_height
Definition: video_driver.h:693
bool timedate_enable
Definition: video_driver.h:424
struct video_shader_ctx_wrap video_shader_ctx_wrap_t
bool video_context_driver_bind_hw_render(bool *enable)
void * video_driver_read_frame_raw(unsigned *width, unsigned *height, size_t *pitch)
Definition: video_driver.c:1215
uintptr_t v2
Definition: video_driver.h:188
bool video_context_driver_translate_aspect(gfx_ctx_aspect_t *aspect)
Definition: video_driver.c:3154
const void * fbo_info
Definition: video_driver.h:274
unsigned aspect_ratio_idx
Definition: video_driver.h:437