mirror of
https://github.com/libretro/RetroArch
synced 2025-04-01 04:20:27 +00:00
Merge pull request #2967 from Themaister/master
Some ioctl cleanups, XMB ribbon in Vulkan.
This commit is contained in:
commit
b9d3de70ab
6
.gitmodules
vendored
6
.gitmodules
vendored
@ -1,6 +1,6 @@
|
||||
[submodule "deps/glslang/glslang"]
|
||||
path = deps/glslang/glslang
|
||||
url = git://github.com/KhronosGroup/glslang.git
|
||||
[submodule "deps/spir2cross"]
|
||||
path = deps/spir2cross
|
||||
url = git://github.com/ARM-software/spir2cross
|
||||
[submodule "deps/SPIRV-Cross"]
|
||||
path = deps/SPIRV-Cross
|
||||
url = git://github.com/KhronosGroup/SPIRV-Cross
|
||||
|
@ -752,7 +752,7 @@ ifeq ($(HAVE_VULKAN), 1)
|
||||
$(wildcard deps/glslang/glslang/glslang/MachineIndependent/preprocessor/*.cpp) \
|
||||
$(wildcard deps/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM)/*.cpp)
|
||||
|
||||
SPIR2CROSS_SOURCES := deps/spir2cross/spir2cross.cpp
|
||||
SPIRV_CROSS_SOURCES := deps/SPIRV-Cross/spirv_cross.cpp
|
||||
|
||||
DEFINES += \
|
||||
-Ideps/glslang/glslang/glslang/OSDependent/$(GLSLANG_PLATFORM) \
|
||||
@ -761,13 +761,13 @@ ifeq ($(HAVE_VULKAN), 1)
|
||||
-Ideps/glslang/glslang/glslang/Public \
|
||||
-Ideps/glslang/glslang/SPIRV \
|
||||
-Ideps/glslang \
|
||||
-Ideps/spir2cross
|
||||
-Ideps/SPIRV-Cross
|
||||
|
||||
CXXFLAGS += -Wno-switch -Wno-sign-compare -fno-strict-aliasing -Wno-maybe-uninitialized -Wno-reorder -I./gfx/include/vulkan
|
||||
CFLAGS += -I./gfx/include/vulkan
|
||||
|
||||
GLSLANG_OBJ := $(GLSLANG_SOURCES:.cpp=.o)
|
||||
SPIR2CROSS_OBJ := $(SPIR2CROSS_SOURCES:.cpp=.o)
|
||||
SPIRV_CROSS_OBJ := $(SPIRV_CROSS_SOURCES:.cpp=.o)
|
||||
|
||||
OBJ += gfx/drivers/vulkan.o \
|
||||
gfx/common/vulkan_common.o \
|
||||
@ -776,7 +776,7 @@ ifeq ($(HAVE_VULKAN), 1)
|
||||
gfx/drivers_shader/glslang_util.o \
|
||||
gfx/drivers_shader/slang_reflection.o \
|
||||
$(GLSLANG_OBJ) \
|
||||
$(SPIR2CROSS_OBJ)
|
||||
$(SPIRV_CROSS_OBJ)
|
||||
ifeq ($(HAVE_MENU_COMMON), 1)
|
||||
OBJ += menu/drivers_display/menu_display_vulkan.o
|
||||
endif
|
||||
@ -1014,7 +1014,7 @@ ifeq ($(HAVE_FFMPEG), 1)
|
||||
cores/libretro-ffmpeg/ffmpeg_core.o
|
||||
LIBS += $(AVCODEC_LIBS) $(AVFORMAT_LIBS) $(AVUTIL_LIBS) $(SWSCALE_LIBS) $(SWRESAMPLE_LIBS) $(FFMPEG_LIBS)
|
||||
DEFINES += $(AVCODEC_CFLAGS) $(AVFORMAT_CFLAGS) $(AVUTIL_CFLAGS) $(SWSCALE_CFLAGS) $(SWRESAMPLE_CFLAGS)
|
||||
DEFINES += -DHAVE_FFMPEG -Iffmpeg
|
||||
DEFINES += -Wno-deprecated-declarations -DHAVE_FFMPEG -Iffmpeg
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_COMPRESSION), 1)
|
||||
|
@ -1131,29 +1131,23 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
break;
|
||||
case EVENT_CMD_REINIT:
|
||||
{
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
|
||||
if (hwr->cache_context)
|
||||
video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT, NULL);
|
||||
video_driver_set_video_cache_context();
|
||||
else
|
||||
video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT, NULL);
|
||||
video_driver_unset_video_cache_context();
|
||||
|
||||
video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT_ACK, NULL);
|
||||
video_driver_unset_video_cache_context_ack();
|
||||
event_cmd_ctl(EVENT_CMD_RESET_CONTEXT, NULL);
|
||||
video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT, NULL);
|
||||
video_driver_unset_video_cache_context();
|
||||
|
||||
/* Poll input to avoid possibly stale data to corrupt things. */
|
||||
input_driver_ctl(RARCH_INPUT_CTL_POLL, NULL);
|
||||
|
||||
#ifdef HAVE_MENU
|
||||
menu_display_ctl(
|
||||
MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG, NULL);
|
||||
|
||||
menu_display_set_framebuffer_dirty_flag();
|
||||
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL))
|
||||
event_cmd_ctl(EVENT_CMD_VIDEO_SET_BLOCKING_STATE, NULL);
|
||||
#endif
|
||||
@ -1278,7 +1272,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
audio_driver_dsp_filter_init(settings->path.audio_dsp_plugin);
|
||||
break;
|
||||
case EVENT_CMD_GPU_RECORD_DEINIT:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GPU_RECORD_DEINIT, NULL);
|
||||
video_driver_gpu_record_deinit();
|
||||
break;
|
||||
case EVENT_CMD_RECORD_DEINIT:
|
||||
if (!recording_deinit())
|
||||
@ -1319,8 +1313,8 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
break;
|
||||
case EVENT_CMD_CORE_DEINIT:
|
||||
{
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
hwr = video_driver_get_hw_context();
|
||||
event_deinit_core(true);
|
||||
|
||||
if (hwr)
|
||||
@ -1333,15 +1327,15 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
return false;
|
||||
break;
|
||||
case EVENT_CMD_VIDEO_APPLY_STATE_CHANGES:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_APPLY_STATE_CHANGES, NULL);
|
||||
video_driver_apply_state_changes();
|
||||
break;
|
||||
case EVENT_CMD_VIDEO_SET_NONBLOCKING_STATE:
|
||||
boolean = true; /* fall-through */
|
||||
case EVENT_CMD_VIDEO_SET_BLOCKING_STATE:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_NONBLOCK_STATE, &boolean);
|
||||
video_driver_set_nonblock_state(boolean);
|
||||
break;
|
||||
case EVENT_CMD_VIDEO_SET_ASPECT_RATIO:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_ASPECT_RATIO, NULL);
|
||||
video_driver_set_aspect_ratio();
|
||||
break;
|
||||
case EVENT_CMD_AUDIO_SET_NONBLOCKING_STATE:
|
||||
boolean = true; /* fall-through */
|
||||
@ -1373,8 +1367,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
struct retro_hw_render_callback hwr_copy;
|
||||
int flags = DRIVERS_CMD_ALL;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
|
||||
hwr = video_driver_get_hw_context();
|
||||
memcpy(&hwr_copy, hwr, sizeof(hwr_copy));
|
||||
|
||||
driver_ctl(RARCH_DRIVER_CTL_UNINIT, &flags);
|
||||
@ -1429,7 +1422,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
event_cmd_ctl(EVENT_CMD_AUDIO_STOP, NULL);
|
||||
|
||||
if (settings->video.black_frame_insertion)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1565,7 +1558,7 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
#endif
|
||||
break;
|
||||
case EVENT_CMD_FULLSCREEN_TOGGLE:
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL))
|
||||
if (!video_driver_has_windowed())
|
||||
return false;
|
||||
|
||||
/* If we go fullscreen we drop all drivers and
|
||||
@ -1696,9 +1689,9 @@ bool event_cmd_ctl(enum event_command cmd, void *data)
|
||||
grab_mouse_state ? "yes" : "no");
|
||||
|
||||
if (grab_mouse_state)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HIDE_MOUSE, NULL);
|
||||
video_driver_hide_mouse();
|
||||
else
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SHOW_MOUSE, NULL);
|
||||
video_driver_show_mouse();
|
||||
}
|
||||
break;
|
||||
case EVENT_CMD_PERFCNT_REPORT_FRONTEND_LOG:
|
||||
|
@ -720,7 +720,7 @@ static void config_set_defaults(void)
|
||||
|
||||
settings->set_supports_no_game_enable = true;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_RESET_CUSTOM_VIEWPORT, NULL);
|
||||
video_driver_reset_custom_viewport();
|
||||
|
||||
/* Make sure settings from other configs carry over into defaults
|
||||
* for another config. */
|
||||
@ -803,7 +803,7 @@ static void config_set_defaults(void)
|
||||
|
||||
global->console.sound.system_bgm_enable = false;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DEFAULT_SETTINGS, NULL);
|
||||
video_driver_default_settings();
|
||||
|
||||
if (*g_defaults.dir.wallpapers)
|
||||
strlcpy(settings->directory.dynamic_wallpapers,
|
||||
@ -1406,7 +1406,7 @@ static bool config_load_file(const char *path, bool set_defaults)
|
||||
* important that it works for consoles right now */
|
||||
config_get_bool(conf, "custom_bgm_enable",
|
||||
&global->console.sound.system_bgm_enable);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOAD_SETTINGS, conf);
|
||||
video_driver_load_settings(conf);
|
||||
#endif
|
||||
CONFIG_GET_INT_BASE(conf, settings, state_slot, "state_slot");
|
||||
|
||||
@ -2846,7 +2846,7 @@ bool config_save_file(const char *path)
|
||||
config_set_int(conf, "custom_viewport_y",
|
||||
settings->video_viewport_custom.y);
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SAVE_SETTINGS, conf);
|
||||
video_driver_save_settings(conf);
|
||||
|
||||
config_set_float(conf, "video_font_size", settings->video.font_size);
|
||||
|
||||
|
@ -335,7 +335,7 @@ bool core_unload(void)
|
||||
|
||||
bool core_unload_game(void)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DEINIT_HW_CONTEXT, NULL);
|
||||
video_driver_deinit_hw_context();
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_STOP, NULL);
|
||||
core.retro_unload_game();
|
||||
return true;
|
||||
|
1
deps/SPIRV-Cross
vendored
Submodule
1
deps/SPIRV-Cross
vendored
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 44ef367141f9935bc719c9cc25693a9055f61efa
|
31
driver.c
31
driver.c
@ -201,7 +201,7 @@ bool driver_find_next(const char *label, char *s, size_t len)
|
||||
static void driver_adjust_system_rates(void)
|
||||
{
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_MONITOR_ADJUST_SYSTEM_RATES, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_MONITOR_ADJUST_SYSTEM_RATES, NULL);
|
||||
video_driver_monitor_adjust_system_rates();
|
||||
|
||||
if (!video_driver_get_ptr(false))
|
||||
return;
|
||||
@ -227,15 +227,14 @@ static void driver_set_nonblock_state(void)
|
||||
RARCH_INPUT_CTL_IS_NONBLOCK_STATE, NULL);
|
||||
|
||||
/* Only apply non-block-state for video if we're using vsync. */
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_ACTIVE, NULL)
|
||||
&& video_driver_get_ptr(false))
|
||||
if (video_driver_is_active() && video_driver_get_ptr(false))
|
||||
{
|
||||
bool video_nonblock = enable;
|
||||
|
||||
if ( !settings->video.vsync
|
||||
|| runloop_ctl(RUNLOOP_CTL_IS_NONBLOCK_FORCED, NULL))
|
||||
video_nonblock = true;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_NONBLOCK_STATE, &video_nonblock);
|
||||
video_driver_set_nonblock_state(video_nonblock);
|
||||
}
|
||||
|
||||
audio_driver_set_nonblocking_state(enable);
|
||||
@ -303,7 +302,7 @@ static void menu_update_libretro_info(void)
|
||||
static void init_drivers(int flags)
|
||||
{
|
||||
if (flags & DRIVER_VIDEO)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_OWN_DRIVER, NULL);
|
||||
video_driver_unset_own_driver();
|
||||
if (flags & DRIVER_AUDIO)
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_UNSET_OWN_DRIVER, NULL);
|
||||
if (flags & DRIVER_INPUT)
|
||||
@ -323,16 +322,16 @@ static void init_drivers(int flags)
|
||||
|
||||
if (flags & DRIVER_VIDEO)
|
||||
{
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_MONITOR_RESET, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_INIT, NULL);
|
||||
video_driver_monitor_reset();
|
||||
video_driver_init();
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT_ACK, NULL)
|
||||
if (!video_driver_is_video_cache_context_ack()
|
||||
&& hwr->context_reset)
|
||||
hwr->context_reset();
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT_ACK, NULL);
|
||||
video_driver_unset_video_cache_context_ack();
|
||||
|
||||
runloop_ctl(RUNLOOP_CTL_SET_FRAME_TIME_LAST, NULL);
|
||||
}
|
||||
@ -411,10 +410,10 @@ static void uninit_drivers(int flags)
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_DEINIT, NULL);
|
||||
|
||||
if (flags & DRIVERS_VIDEO_INPUT)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DEINIT, NULL);
|
||||
video_driver_deinit();
|
||||
|
||||
if ((flags & DRIVER_VIDEO) && !video_driver_ctl(RARCH_DISPLAY_CTL_OWNS_DRIVER, NULL))
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DESTROY_DATA, NULL);
|
||||
if ((flags & DRIVER_VIDEO) && !video_driver_owns_driver())
|
||||
video_driver_destroy_data();
|
||||
|
||||
if ((flags & DRIVER_INPUT) && !input_driver_ctl(RARCH_INPUT_CTL_OWNS_DRIVER, NULL))
|
||||
input_driver_ctl(RARCH_INPUT_CTL_DESTROY_DATA, NULL);
|
||||
@ -428,7 +427,7 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
||||
switch (state)
|
||||
{
|
||||
case RARCH_DRIVER_CTL_DEINIT:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DESTROY, NULL);
|
||||
video_driver_destroy();
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_DESTROY, NULL);
|
||||
input_driver_ctl(RARCH_INPUT_CTL_DESTROY, NULL);
|
||||
#ifdef HAVE_MENU
|
||||
@ -466,7 +465,7 @@ bool driver_ctl(enum driver_ctl_state state, void *data)
|
||||
}
|
||||
case RARCH_DRIVER_CTL_INIT_PRE:
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_FIND_DRIVER, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_FIND_DRIVER, NULL);
|
||||
video_driver_find_driver();
|
||||
input_driver_ctl(RARCH_INPUT_CTL_FIND_DRIVER, NULL);
|
||||
camera_driver_ctl(RARCH_CAMERA_CTL_FIND_DRIVER, NULL);
|
||||
find_location_driver();
|
||||
|
@ -911,7 +911,7 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
struct retro_hw_render_callback *cb =
|
||||
(struct retro_hw_render_callback*)data;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
hwr = video_driver_get_hw_context();
|
||||
|
||||
RARCH_LOG("Environ SET_HW_RENDER.\n");
|
||||
|
||||
@ -1253,13 +1253,11 @@ bool rarch_environment_cb(unsigned cmd, void *data)
|
||||
}
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER:
|
||||
return video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_GET_CURRENT_SOFTWARE_FRAMEBUFFER,
|
||||
return video_driver_get_current_software_framebuffer(
|
||||
(struct retro_framebuffer*)data);
|
||||
|
||||
case RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE:
|
||||
return video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_GET_HW_RENDER_INTERFACE,
|
||||
return video_driver_get_hw_render_interface(
|
||||
(const struct retro_hw_render_interface**)data);
|
||||
|
||||
/* Private extensions for internal use, not part of libretro API. */
|
||||
|
@ -523,14 +523,9 @@ static void vulkan_write_quad_descriptors(
|
||||
const struct vk_texture *texture,
|
||||
VkSampler sampler)
|
||||
{
|
||||
VkDescriptorImageInfo image_info;
|
||||
VkDescriptorBufferInfo buffer_info;
|
||||
VkWriteDescriptorSet write = { VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET };
|
||||
|
||||
image_info.sampler = sampler;
|
||||
image_info.imageView = texture->view;
|
||||
image_info.imageLayout = texture->layout;
|
||||
|
||||
buffer_info.buffer = buffer;
|
||||
buffer_info.offset = offset;
|
||||
buffer_info.range = range;
|
||||
@ -542,12 +537,21 @@ static void vulkan_write_quad_descriptors(
|
||||
write.pBufferInfo = &buffer_info;
|
||||
VKFUNC(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
||||
|
||||
if (texture)
|
||||
{
|
||||
VkDescriptorImageInfo image_info;
|
||||
|
||||
image_info.sampler = sampler;
|
||||
image_info.imageView = texture->view;
|
||||
image_info.imageLayout = texture->layout;
|
||||
|
||||
write.dstSet = set;
|
||||
write.dstBinding = 1;
|
||||
write.descriptorCount = 1;
|
||||
write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||
write.pImageInfo = &image_info;
|
||||
VKFUNC(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void vulkan_transition_texture(vk_t *vk, struct vk_texture *texture)
|
||||
@ -606,6 +610,7 @@ static void vulkan_check_dynamic_state(
|
||||
|
||||
void vulkan_draw_triangles(vk_t *vk, const struct vk_draw_triangles *call)
|
||||
{
|
||||
if (call->texture)
|
||||
vulkan_transition_texture(vk, call->texture);
|
||||
|
||||
if (call->pipeline != vk->tracker.pipeline)
|
||||
@ -624,26 +629,24 @@ void vulkan_draw_triangles(vk_t *vk, const struct vk_draw_triangles *call)
|
||||
{
|
||||
VkDescriptorSet set;
|
||||
|
||||
if (memcmp(call->mvp, &vk->tracker.mvp, sizeof(*call->mvp))
|
||||
|| (call->texture->view != vk->tracker.view)
|
||||
|| (call->sampler != vk->tracker.sampler))
|
||||
{
|
||||
/* Upload UBO */
|
||||
struct vk_buffer_range range;
|
||||
if (!vulkan_buffer_chain_alloc(vk->context, &vk->chain->ubo,
|
||||
sizeof(*call->mvp), &range))
|
||||
call->uniform_size, &range))
|
||||
return;
|
||||
memcpy(range.data, call->mvp, sizeof(*call->mvp));
|
||||
|
||||
memcpy(range.data, call->uniform, call->uniform_size);
|
||||
|
||||
set = vulkan_descriptor_manager_alloc(
|
||||
vk->context->device,
|
||||
&vk->chain->descriptor_manager);
|
||||
|
||||
vulkan_write_quad_descriptors(
|
||||
vk->context->device,
|
||||
set,
|
||||
range.buffer,
|
||||
range.offset,
|
||||
sizeof(*call->mvp),
|
||||
call->uniform_size,
|
||||
call->texture,
|
||||
call->sampler);
|
||||
|
||||
@ -651,10 +654,9 @@ void vulkan_draw_triangles(vk_t *vk, const struct vk_draw_triangles *call)
|
||||
vk->pipelines.layout, 0,
|
||||
1, &set, 0, NULL);
|
||||
|
||||
vk->tracker.view = call->texture->view;
|
||||
vk->tracker.sampler = call->sampler;
|
||||
vk->tracker.mvp = *call->mvp;
|
||||
}
|
||||
vk->tracker.view = VK_NULL_HANDLE;
|
||||
vk->tracker.sampler = VK_NULL_HANDLE;
|
||||
memset(&vk->tracker.mvp, 0, sizeof(vk->tracker.mvp));
|
||||
}
|
||||
|
||||
/* VBO is already uploaded. */
|
||||
@ -1371,7 +1373,7 @@ bool vulkan_context_init(gfx_ctx_vulkan_data_t *vk,
|
||||
vk->context.device = cached_device;
|
||||
cached_device = NULL;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT_ACK, NULL);
|
||||
video_driver_set_video_cache_context_ack();
|
||||
RARCH_LOG("[Vulkan]: Using cached Vulkan context.\n");
|
||||
}
|
||||
else if (VKFUNC(vkCreateDevice)(vk->context.gpu, &device_info,
|
||||
@ -1612,7 +1614,7 @@ void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk,
|
||||
vk->context.swapchain_fences[i], NULL);
|
||||
}
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT, NULL))
|
||||
if (video_driver_is_video_cache_context())
|
||||
{
|
||||
cached_device = vk->context.device;
|
||||
cached_instance = vk->context.instance;
|
||||
|
@ -249,7 +249,9 @@ struct vk_draw_triangles
|
||||
VkPipeline pipeline;
|
||||
struct vk_texture *texture;
|
||||
VkSampler sampler;
|
||||
const math_matrix_4x4 *mvp;
|
||||
|
||||
const void *uniform;
|
||||
size_t uniform_size;
|
||||
|
||||
const struct vk_buffer_range *vbo;
|
||||
unsigned vertices;
|
||||
@ -312,7 +314,7 @@ typedef struct vk
|
||||
struct
|
||||
{
|
||||
bool blend;
|
||||
VkPipeline pipelines[4];
|
||||
VkPipeline pipelines[8];
|
||||
struct vk_texture blank_texture;
|
||||
} display;
|
||||
|
||||
|
@ -913,29 +913,25 @@ static bool d3d_has_windowed(void *data)
|
||||
static void d3d_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
d3d_video_t *d3d = (d3d_video_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
if (!d3d)
|
||||
@ -1129,7 +1125,7 @@ static void *d3d_init(const video_info_t *info,
|
||||
|
||||
input_driver_set(input, input_data);
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_OWN_DRIVER, NULL);
|
||||
video_driver_set_own_driver();
|
||||
return d3d;
|
||||
}
|
||||
}
|
||||
@ -1168,8 +1164,8 @@ static void *d3d_init(const video_info_t *info,
|
||||
|
||||
d3d->keep_aspect = info->force_aspect;
|
||||
#ifdef _XBOX
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_OWN_DRIVER, NULL);
|
||||
video_driver_ctl(RARCH_INPUT_CTL_SET_OWN_DRIVER, NULL);
|
||||
video_driver_set_own_driver();
|
||||
video_input_ctl(RARCH_INPUT_CTL_SET_OWN_DRIVER, NULL);
|
||||
#endif
|
||||
|
||||
return d3d;
|
||||
|
@ -398,7 +398,7 @@ static bool xdk_renderchain_render(void *data, const void *frame,
|
||||
settings_t *settings = config_get_ptr();
|
||||
xdk_renderchain_t *chain = (xdk_renderchain_t*)d3d->renderchain_data;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
|
@ -961,29 +961,25 @@ static void ctr_set_filtering(void* data, unsigned index, bool smooth)
|
||||
static void ctr_set_aspect_ratio(void* data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
ctr_video_t *ctr = (ctr_video_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
ctr->keep_aspect = true;
|
||||
|
@ -1402,29 +1402,25 @@ static void exynos_gfx_viewport_info(void *data, struct video_viewport *vp)
|
||||
static void exynos_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
struct exynos_video *vid = (struct exynos_video*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
vid->aspect_changed = true;
|
||||
}
|
||||
|
@ -755,8 +755,8 @@ static bool gl_init_hw_render(gl_t *gl, unsigned width, unsigned height)
|
||||
bool stencil = false;
|
||||
GLint max_fbo_size = 0;
|
||||
GLint max_renderbuffer_size = 0;
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
|
||||
/* We can only share texture objects through contexts.
|
||||
* FBOs are "abstract" objects and are not shared. */
|
||||
@ -1480,7 +1480,7 @@ static INLINE void gl_copy_frame(gl_t *gl, const void *frame,
|
||||
else
|
||||
#endif
|
||||
{
|
||||
bool use_rgba = video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_RGBA, NULL);
|
||||
bool use_rgba = video_driver_supports_rgba();
|
||||
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT,
|
||||
video_pixel_get_alignment(width * gl->base_size));
|
||||
@ -2157,8 +2157,8 @@ static bool resolve_extensions(gl_t *gl, const char *context_ident)
|
||||
#if defined(HAVE_GL_SYNC) || defined(HAVE_FBO)
|
||||
settings_t *settings = config_get_ptr();
|
||||
#endif
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
|
||||
(void)vendor;
|
||||
(void)renderer;
|
||||
@ -2222,7 +2222,7 @@ static bool resolve_extensions(gl_t *gl, const char *context_ident)
|
||||
RARCH_LOG("[GL]: Using ARB_sync to reduce latency.\n");
|
||||
#endif
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_RGBA, NULL);
|
||||
video_driver_unset_rgba();
|
||||
#if defined(HAVE_OPENGLES) || defined(HAVE_OPENGLES2)
|
||||
bool gles3 = false;
|
||||
|
||||
@ -2253,7 +2253,7 @@ static bool resolve_extensions(gl_t *gl, const char *context_ident)
|
||||
RARCH_LOG("[GL]: BGRA8888 extension found for GLES.\n");
|
||||
else
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_RGBA, NULL);
|
||||
video_driver_set_rgba();
|
||||
RARCH_WARN("[GL]: GLES implementation does not have BGRA8888 extension.\n"
|
||||
"32-bit path will require conversion.\n");
|
||||
}
|
||||
@ -2329,8 +2329,7 @@ static INLINE void gl_set_texture_fmts(gl_t *gl, bool rgb32)
|
||||
|
||||
if (rgb32)
|
||||
{
|
||||
bool use_rgba =
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_RGBA, NULL);
|
||||
bool use_rgba = video_driver_supports_rgba();
|
||||
|
||||
gl->internal_fmt = RARCH_GL_INTERNAL_FORMAT32;
|
||||
gl->texture_type = RARCH_GL_TEXTURE_TYPE32;
|
||||
@ -2417,7 +2416,7 @@ static const gfx_ctx_driver_t *gl_get_context(gl_t *gl)
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
hwr = video_driver_get_hw_context();
|
||||
|
||||
major = hwr->version_major;
|
||||
minor = hwr->version_minor;
|
||||
@ -2695,7 +2694,7 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
|
||||
|
||||
RARCH_LOG("GL: Using resolution %ux%u\n", temp_width, temp_height);
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
hwr = video_driver_get_hw_context();
|
||||
|
||||
gl->vertex_ptr = hwr->bottom_left_origin
|
||||
? vertexes : vertexes_flipped;
|
||||
@ -3176,7 +3175,7 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
|
||||
goto error;
|
||||
}
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
|
||||
video_frame_convert_rgba_to_bgr(
|
||||
(const void*)gl->readback_buffer_screenshot,
|
||||
@ -3268,7 +3267,7 @@ void gl_load_texture_data(uint32_t id_data,
|
||||
{
|
||||
GLint mag_filter, min_filter;
|
||||
bool want_mipmap = false;
|
||||
bool use_rgba = video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_RGBA, NULL);
|
||||
bool use_rgba = video_driver_supports_rgba();
|
||||
bool rgb32 = (base_size == (sizeof(uint32_t)));
|
||||
GLenum wrap = gl_wrap_type_to_enum(wrap_type);
|
||||
GLuint id = (GLuint)id_data;
|
||||
@ -3588,29 +3587,25 @@ static retro_proc_address_t gl_get_proc_address(void *data, const char *sym)
|
||||
static void gl_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
gl_t *gl = (gl_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(
|
||||
aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
|
@ -413,9 +413,9 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||
|
||||
new_fb_pitch = new_fb_width * 2;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_WIDTH, &new_fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEIGHT, &new_fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FB_PITCH, &new_fb_pitch);
|
||||
menu_display_set_width(new_fb_width);
|
||||
menu_display_set_height(new_fb_height);
|
||||
menu_display_set_framebuffer_pitch(new_fb_pitch);
|
||||
|
||||
GX_SetViewportJitter(0, 0, gx_mode.fbWidth, gx_mode.efbHeight, 0, 1, 1);
|
||||
GX_SetDispCopySrc(0, 0, gx_mode.fbWidth, gx_mode.efbHeight);
|
||||
@ -472,29 +472,25 @@ static void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines,
|
||||
static void gx_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
gx_video_t *gx = (gx_video_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(
|
||||
aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
@ -555,8 +551,8 @@ static void init_texture(void *data, unsigned width, unsigned height)
|
||||
menu_w = 320;
|
||||
menu_h = 240;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &menu_w);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &menu_h);
|
||||
menu_w = menu_display_get_width();
|
||||
menu_h = menu_display_get_height();
|
||||
|
||||
GX_InitTexObj(fb_ptr, g_tex.data, width, height,
|
||||
(gx->rgb32) ? GX_TF_RGBA8 : gx->menu_texture_enable ?
|
||||
@ -1496,9 +1492,9 @@ static bool gx_frame(void *data, const void *frame,
|
||||
size_t fb_pitch;
|
||||
unsigned fb_width, fb_height;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FB_PITCH, &fb_pitch);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
fb_pitch = menu_display_get_framebuffer_pitch();
|
||||
|
||||
convert_texture16(
|
||||
gx->menu_data,
|
||||
|
@ -793,29 +793,25 @@ static void psp_set_filtering(void *data, unsigned index, bool smooth)
|
||||
static void psp_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
psp1_video_t *psp = (psp1_video_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
psp->keep_aspect = true;
|
||||
|
@ -629,7 +629,7 @@ static bool sdl2_gfx_read_viewport(void *data, uint8_t *buffer)
|
||||
rarch_perf_init(&sdl2_gfx_read_viewport, "sdl2_gfx_read_viewport");
|
||||
retro_perf_start(&sdl2_gfx_read_viewport);
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
|
||||
surf = SDL_GetWindowSurface(vid->window);
|
||||
bgr24 = SDL_ConvertSurfaceFormat(surf, SDL_PIXELFORMAT_BGR24, 0);
|
||||
@ -658,29 +658,25 @@ static void sdl2_poke_set_filtering(void *data, unsigned index, bool smooth)
|
||||
static void sdl2_poke_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
sdl2_video_t *vid = (sdl2_video_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
vid->video.force_aspect = true;
|
||||
|
@ -433,29 +433,24 @@ static void sdl_set_filtering(void *data, unsigned index, bool smooth)
|
||||
|
||||
static void sdl_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
}
|
||||
|
||||
|
@ -489,29 +489,25 @@ static void vita_set_filtering(void *data, unsigned index, bool smooth)
|
||||
static void vita_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
vita_video_t *vita = (vita_video_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
vita->keep_aspect = true;
|
||||
|
@ -17,6 +17,10 @@
|
||||
#include "vulkan_shaders/alpha_blend.vert.inc"
|
||||
#include "vulkan_shaders/alpha_blend.frag.inc"
|
||||
#include "vulkan_shaders/font.frag.inc"
|
||||
#include "vulkan_shaders/ribbon.vert.inc"
|
||||
#include "vulkan_shaders/ribbon.frag.inc"
|
||||
#include "vulkan_shaders/ribbon_simple.vert.inc"
|
||||
#include "vulkan_shaders/ribbon_simple.frag.inc"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
@ -172,7 +176,7 @@ static void vulkan_init_pipeline_layout(
|
||||
bindings[0].binding = 0;
|
||||
bindings[0].descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||
bindings[0].descriptorCount = 1;
|
||||
bindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT;
|
||||
bindings[0].stageFlags = VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||
bindings[0].pImmutableSamplers = NULL;
|
||||
|
||||
bindings[1].binding = 1;
|
||||
@ -360,6 +364,49 @@ static void vulkan_init_pipelines(
|
||||
|
||||
VKFUNC(vkDestroyShaderModule)(vk->context->device, shader_stages[0].module, NULL);
|
||||
VKFUNC(vkDestroyShaderModule)(vk->context->device, shader_stages[1].module, NULL);
|
||||
|
||||
/* Other menu pipelines. */
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
if (i & 2)
|
||||
{
|
||||
module_info.codeSize = ribbon_simple_vert_spv_len;
|
||||
module_info.pCode = (const uint32_t*)ribbon_simple_vert_spv;
|
||||
}
|
||||
else
|
||||
{
|
||||
module_info.codeSize = ribbon_vert_spv_len;
|
||||
module_info.pCode = (const uint32_t*)ribbon_vert_spv;
|
||||
}
|
||||
|
||||
shader_stages[0].stage = VK_SHADER_STAGE_VERTEX_BIT;
|
||||
shader_stages[0].pName = "main";
|
||||
VKFUNC(vkCreateShaderModule)(vk->context->device,
|
||||
&module_info, NULL, &shader_stages[0].module);
|
||||
|
||||
if (i & 2)
|
||||
{
|
||||
module_info.codeSize = ribbon_simple_frag_spv_len;
|
||||
module_info.pCode = (const uint32_t*)ribbon_simple_frag_spv;
|
||||
}
|
||||
else
|
||||
{
|
||||
module_info.codeSize = ribbon_frag_spv_len;
|
||||
module_info.pCode = (const uint32_t*)ribbon_frag_spv;
|
||||
}
|
||||
|
||||
shader_stages[1].stage = VK_SHADER_STAGE_FRAGMENT_BIT;
|
||||
shader_stages[1].pName = "main";
|
||||
VKFUNC(vkCreateShaderModule)(vk->context->device,
|
||||
&module_info, NULL, &shader_stages[1].module);
|
||||
|
||||
input_assembly.topology = i & 1 ?
|
||||
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP :
|
||||
VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST;
|
||||
|
||||
VKFUNC(vkCreateGraphicsPipelines)(vk->context->device, vk->pipelines.cache,
|
||||
1, &pipe, NULL, &vk->display.pipelines[4 + i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void vulkan_init_command_buffers(vk_t *vk)
|
||||
@ -550,7 +597,7 @@ static void vulkan_deinit_pipelines(vk_t *vk)
|
||||
VKFUNC(vkDestroyPipeline)(vk->context->device,
|
||||
vk->pipelines.font, NULL);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
for (i = 0; i < 8; i++)
|
||||
VKFUNC(vkDestroyPipeline)(vk->context->device,
|
||||
vk->display.pipelines[i], NULL);
|
||||
}
|
||||
@ -849,8 +896,8 @@ static void vulkan_init_hw_render(vk_t *vk)
|
||||
{
|
||||
struct retro_hw_render_interface_vulkan *iface =
|
||||
&vk->hw.iface;
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
|
||||
if (hwr->context_type != RETRO_HW_CONTEXT_VULKAN)
|
||||
return;
|
||||
@ -1723,29 +1770,25 @@ static bool vulkan_frame(void *data, const void *frame,
|
||||
static void vulkan_set_aspect_ratio(void *data, unsigned aspect_ratio_idx)
|
||||
{
|
||||
vk_t *vk = (vk_t*)data;
|
||||
enum rarch_display_ctl_state cmd = RARCH_DISPLAY_CTL_NONE;
|
||||
|
||||
switch (aspect_ratio_idx)
|
||||
{
|
||||
case ASPECT_RATIO_SQUARE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL;
|
||||
video_driver_set_viewport_square_pixel();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CORE:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE;
|
||||
video_driver_set_viewport_core();
|
||||
break;
|
||||
|
||||
case ASPECT_RATIO_CONFIG:
|
||||
cmd = RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG;
|
||||
video_driver_set_viewport_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (cmd != RARCH_DISPLAY_CTL_NONE)
|
||||
video_driver_ctl(cmd, NULL);
|
||||
|
||||
video_driver_set_aspect_ratio_value(
|
||||
aspectratio_lut[aspect_ratio_idx].value);
|
||||
|
||||
@ -2034,7 +2077,7 @@ static bool vulkan_read_viewport(void *data, uint8_t *buffer)
|
||||
* with conversion. */
|
||||
|
||||
vk->readback.pending = true;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
VKFUNC(vkQueueWaitIdle)(vk->context->queue);
|
||||
|
||||
if (!staging->mapped)
|
||||
@ -2149,7 +2192,8 @@ static void vulkan_render_overlay(vk_t *vk)
|
||||
call.pipeline = vk->display.pipelines[3]; /* Strip with blend */
|
||||
call.texture = &vk->overlay.images[i];
|
||||
call.sampler = vk->samplers.linear;
|
||||
call.mvp = &vk->mvp;
|
||||
call.uniform = &vk->mvp;
|
||||
call.uniform_size = sizeof(vk->mvp);
|
||||
call.vbo = ⦥
|
||||
call.vertices = 4;
|
||||
vulkan_draw_triangles(vk, &call);
|
||||
|
21
gfx/drivers/vulkan_shaders/ribbon.frag
Normal file
21
gfx/drivers/vulkan_shaders/ribbon.frag
Normal file
@ -0,0 +1,21 @@
|
||||
#version 310 es
|
||||
precision highp float;
|
||||
|
||||
layout(std140, set = 0, binding = 0) uniform UBO
|
||||
{
|
||||
float time;
|
||||
} constants;
|
||||
|
||||
layout(location = 0) in vec3 vEC;
|
||||
layout(location = 0) out vec4 FragColor;
|
||||
|
||||
void main()
|
||||
{
|
||||
const vec3 up = vec3(0.0, 0.0, 1.0);
|
||||
vec3 x = dFdx(vEC);
|
||||
vec3 y = dFdy(vEC);
|
||||
vec3 normal = normalize(cross(x, y));
|
||||
float c = 1.0 - dot(normal, up);
|
||||
c = (1.0 - cos(c * c)) / 3.0;
|
||||
FragColor = vec4(1.0, 1.0, 1.0, c);
|
||||
}
|
101
gfx/drivers/vulkan_shaders/ribbon.frag.inc
Normal file
101
gfx/drivers/vulkan_shaders/ribbon.frag.inc
Normal file
@ -0,0 +1,101 @@
|
||||
unsigned char ribbon_frag_spv[] = {
|
||||
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00,
|
||||
0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0b, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x76, 0x45, 0x43, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x11, 0x00, 0x00, 0x00, 0x6e, 0x6f, 0x72, 0x6d,
|
||||
0x61, 0x6c, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00,
|
||||
0x63, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||
0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x55, 0x42, 0x4f, 0x00,
|
||||
0x06, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74,
|
||||
0x73, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00,
|
||||
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||
0x27, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x48, 0x00, 0x05, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
||||
0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x47, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x1b, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x17, 0x00, 0x04, 0x00,
|
||||
0x25, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x25, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||
0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00,
|
||||
0x2a, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x2b, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||
0x11, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x0b, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
|
||||
0xd0, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||
0x0f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||
0x13, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
|
||||
0x14, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x11, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x19, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x94, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||
0x1b, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x1d, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x17, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
|
||||
0x17, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x22, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||
0x22, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x17, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x07, 0x00, 0x25, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
|
||||
0x28, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00
|
||||
};
|
||||
unsigned int ribbon_frag_spv_len = 1176;
|
53
gfx/drivers/vulkan_shaders/ribbon.vert
Normal file
53
gfx/drivers/vulkan_shaders/ribbon.vert
Normal file
@ -0,0 +1,53 @@
|
||||
#version 310 es
|
||||
|
||||
layout(location = 0) in vec3 VertexCoord;
|
||||
layout(location = 0) out vec3 vEC;
|
||||
|
||||
layout(std140, set = 0, binding = 0) uniform UBO
|
||||
{
|
||||
float time;
|
||||
} constants;
|
||||
|
||||
float iqhash(float n)
|
||||
{
|
||||
return fract(sin(n) * 43758.5453);
|
||||
}
|
||||
|
||||
float noise(vec3 x)
|
||||
{
|
||||
vec3 p = floor(x);
|
||||
vec3 f = fract(x);
|
||||
f = f * f * (3.0 - 2.0 * f);
|
||||
float n = p.x + p.y * 57.0 + 113.0 * p.z;
|
||||
return mix(mix(mix(iqhash(n), iqhash(n + 1.0), f.x),
|
||||
mix(iqhash(n + 57.0), iqhash(n + 58.0), f.x), f.y),
|
||||
mix(mix(iqhash(n + 113.0), iqhash(n + 114.0), f.x),
|
||||
mix(iqhash(n + 170.0), iqhash(n + 171.0), f.x), f.y), f.z);
|
||||
}
|
||||
|
||||
float xmb_noise2(vec3 x)
|
||||
{
|
||||
return cos(x.z * 2.0);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 v = vec3(VertexCoord.x, 0.0, VertexCoord.y);
|
||||
vec3 v2 = v;
|
||||
vec3 v3 = v;
|
||||
|
||||
v.y = xmb_noise2(v2) / 6.0;
|
||||
|
||||
v3.x += constants.time / 5.0;
|
||||
v3.x /= 2.0;
|
||||
|
||||
v3.z += constants.time / 10.0;
|
||||
v3.y += constants.time / 100.0;
|
||||
|
||||
v.z += noise(v3 * 7.0) / 15.0;
|
||||
v.y += noise(v3 * 7.0) / 15.0 + cos(v.x * 2.0 - constants.time / 5.0) / 5.0 - 0.3;
|
||||
|
||||
v.y = -v.y;
|
||||
vEC = v;
|
||||
gl_Position = vec4(v, 1.0);
|
||||
}
|
437
gfx/drivers/vulkan_shaders/ribbon.vert.inc
Normal file
437
gfx/drivers/vulkan_shaders/ribbon.vert.inc
Normal file
@ -0,0 +1,437 @@
|
||||
unsigned char ribbon_vert_spv[] = {
|
||||
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00,
|
||||
0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e,
|
||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x69, 0x71, 0x68, 0x61, 0x73, 0x68, 0x28, 0x66, 0x31, 0x3b, 0x00, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x6e, 0x6f, 0x69, 0x73,
|
||||
0x65, 0x28, 0x76, 0x66, 0x33, 0x3b, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x0f, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00,
|
||||
0x13, 0x00, 0x00, 0x00, 0x78, 0x6d, 0x62, 0x5f, 0x6e, 0x6f, 0x69, 0x73,
|
||||
0x65, 0x32, 0x28, 0x76, 0x66, 0x33, 0x3b, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x3d, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x43, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x4a, 0x00, 0x00, 0x00,
|
||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x4f, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x59, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x5e, 0x00, 0x00, 0x00,
|
||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x66, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00,
|
||||
0x76, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x80, 0x00, 0x00, 0x00,
|
||||
0x56, 0x65, 0x72, 0x74, 0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00, 0x76, 0x32, 0x00, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x76, 0x33, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x92, 0x00, 0x00, 0x00,
|
||||
0x55, 0x42, 0x4f, 0x00, 0x06, 0x00, 0x05, 0x00, 0x92, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x05, 0x00, 0x94, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73,
|
||||
0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0xb7, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0xd9, 0x00, 0x00, 0x00,
|
||||
0x76, 0x45, 0x43, 0x00, 0x05, 0x00, 0x06, 0x00, 0xdc, 0x00, 0x00, 0x00,
|
||||
0x67, 0x6c, 0x5f, 0x50, 0x65, 0x72, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xdc, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x00, 0x06, 0x00, 0x07, 0x00, 0xdc, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x69, 0x6e, 0x74,
|
||||
0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x48, 0x00, 0x05, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
||||
0x92, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||
0x94, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x47, 0x00, 0x04, 0x00, 0x94, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0xd9, 0x00, 0x00, 0x00,
|
||||
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00,
|
||||
0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xdc, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x47, 0x00, 0x03, 0x00, 0xdc, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x13, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x21, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x21, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x17, 0x00, 0x00, 0x00, 0x8c, 0xee, 0x2a, 0x47, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x2d, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x42, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x42,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x42,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xe4, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2a, 0x43, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x43,
|
||||
0x20, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x8f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x1e, 0x00, 0x03, 0x00,
|
||||
0x92, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x93, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x93, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x95, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x95, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x04, 0x00, 0x97, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x9a, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x40, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x41,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xc8, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x40, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x41,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xce, 0x00, 0x00, 0x00,
|
||||
0x9a, 0x99, 0x99, 0x3e, 0x20, 0x00, 0x04, 0x00, 0xd8, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0xd8, 0x00, 0x00, 0x00, 0xd9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x17, 0x00, 0x04, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00, 0xdc, 0x00, 0x00, 0x00,
|
||||
0xdb, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0xdd, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xdc, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0xdd, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0xe4, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0xb7, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x81, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
|
||||
0x83, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00,
|
||||
0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x88, 0x00, 0x00, 0x00,
|
||||
0x89, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x8b, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x8a, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
|
||||
0x13, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00,
|
||||
0x8f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x91, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x91, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
|
||||
0x94, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00,
|
||||
0x99, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00,
|
||||
0x9b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x9f, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x8a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00,
|
||||
0xa1, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xa3, 0x00, 0x00, 0x00,
|
||||
0xa2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00,
|
||||
0xa4, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00,
|
||||
0xa4, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xa7, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x8a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00,
|
||||
0xa9, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
|
||||
0x38, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xab, 0x00, 0x00, 0x00,
|
||||
0xaa, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00,
|
||||
0xac, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00,
|
||||
0xac, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xaf, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00,
|
||||
0x8a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00,
|
||||
0xb1, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xb3, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
|
||||
0x31, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb3, 0x00, 0x00, 0x00,
|
||||
0xb2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0xb4, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xb4, 0x00, 0x00, 0x00,
|
||||
0xb5, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xb7, 0x00, 0x00, 0x00,
|
||||
0xb6, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xb8, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xb7, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00,
|
||||
0xb8, 0x00, 0x00, 0x00, 0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
|
||||
0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xbc, 0x00, 0x00, 0x00, 0xbb, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00, 0xbc, 0x00, 0x00, 0x00,
|
||||
0xba, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0xbe, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0xbe, 0x00, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00,
|
||||
0x8a, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0xc0, 0x00, 0x00, 0x00, 0xbf, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0xc1, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x00, 0x00,
|
||||
0xb9, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0xc4, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00,
|
||||
0xc4, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xc6, 0x00, 0x00, 0x00, 0xc5, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x97, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00,
|
||||
0x94, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xc9, 0x00, 0x00, 0x00,
|
||||
0xc8, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xca, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x00,
|
||||
0xc9, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xcb, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||
0xca, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xcc, 0x00, 0x00, 0x00, 0xcb, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00,
|
||||
0xc3, 0x00, 0x00, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x00, 0x00,
|
||||
0xce, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0xd0, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00,
|
||||
0xd0, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xd2, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x00, 0xcf, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00,
|
||||
0x7e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0xd3, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
|
||||
0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xd5, 0x00, 0x00, 0x00, 0xd4, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x00,
|
||||
0x7e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0xd7, 0x00, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0xd9, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00,
|
||||
0x7e, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xe0, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x51, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00,
|
||||
0xdf, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0xdf, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0xdb, 0x00, 0x00, 0x00,
|
||||
0xe3, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x00,
|
||||
0xe2, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0xe4, 0x00, 0x00, 0x00, 0xe5, 0x00, 0x00, 0x00, 0xde, 0x00, 0x00, 0x00,
|
||||
0x96, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0xe5, 0x00, 0x00, 0x00,
|
||||
0xe3, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00,
|
||||
0x36, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x37, 0x00, 0x03, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
|
||||
0x0b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||
0x17, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x18, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x02, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||
0x38, 0x00, 0x01, 0x00, 0x36, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00,
|
||||
0x37, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
|
||||
0xf8, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x4a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x5e, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x27, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||
0x26, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00,
|
||||
0x25, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x2a, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
|
||||
0x85, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
|
||||
0x24, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x30, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x33, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
|
||||
0x34, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x36, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
|
||||
0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
|
||||
0x37, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x2c, 0x00, 0x00, 0x00,
|
||||
0x3c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x40, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x43, 0x00, 0x00, 0x00,
|
||||
0x42, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x44, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
|
||||
0x44, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00,
|
||||
0x48, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x4a, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x4a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00,
|
||||
0x4d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x4f, 0x00, 0x00, 0x00,
|
||||
0x4e, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
|
||||
0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00,
|
||||
0x55, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x57, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
|
||||
0x37, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x59, 0x00, 0x00, 0x00,
|
||||
0x58, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x5a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x5d, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00,
|
||||
0x61, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x63, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00,
|
||||
0x64, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x66, 0x00, 0x00, 0x00,
|
||||
0x65, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x67, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x6a, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00,
|
||||
0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x70, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
|
||||
0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x62, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
|
||||
0x1f, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00,
|
||||
0x72, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x02, 0x00,
|
||||
0x75, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0x00, 0x36, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x0e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||
0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
|
||||
0x79, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x02, 0x00,
|
||||
0x7b, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0x00
|
||||
};
|
||||
unsigned int ribbon_vert_spv_len = 5204;
|
8
gfx/drivers/vulkan_shaders/ribbon_simple.frag
Normal file
8
gfx/drivers/vulkan_shaders/ribbon_simple.frag
Normal file
@ -0,0 +1,8 @@
|
||||
#version 310 es
|
||||
precision mediump float;
|
||||
|
||||
layout(location = 0) out vec4 FragColor;
|
||||
void main()
|
||||
{
|
||||
FragColor = vec4(1.0, 1.0, 1.0, 0.05);
|
||||
}
|
34
gfx/drivers/vulkan_shaders/ribbon_simple.frag.inc
Normal file
34
gfx/drivers/vulkan_shaders/ribbon_simple.frag.inc
Normal file
@ -0,0 +1,34 @@
|
||||
unsigned char ribbon_simple_frag_spv[] = {
|
||||
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x10, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x36, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x46, 0x72, 0x61, 0x67, 0x43, 0x6f, 0x6c, 0x6f,
|
||||
0x72, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||
0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0xcd, 0xcc, 0x4c, 0x3d,
|
||||
0x2c, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x0b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0xf8, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00,
|
||||
0x38, 0x00, 0x01, 0x00
|
||||
};
|
||||
unsigned int ribbon_simple_frag_spv_len = 364;
|
35
gfx/drivers/vulkan_shaders/ribbon_simple.vert
Normal file
35
gfx/drivers/vulkan_shaders/ribbon_simple.vert
Normal file
@ -0,0 +1,35 @@
|
||||
#version 310 es
|
||||
|
||||
layout(location = 0) in vec3 VertexCoord;
|
||||
|
||||
layout(std140, set = 0, binding = 0) uniform UBO
|
||||
{
|
||||
float time;
|
||||
} constants;
|
||||
|
||||
float iqhash(float n)
|
||||
{
|
||||
return fract(sin(n) * 43758.5453);
|
||||
}
|
||||
|
||||
float noise(vec3 x)
|
||||
{
|
||||
vec3 p = floor(x);
|
||||
vec3 f = fract(x);
|
||||
f = f * f * (3.0 - 2.0 * f);
|
||||
float n = p.x + p.y * 57.0 + 113.0 * p.z;
|
||||
return mix(mix(mix(iqhash(n), iqhash(n + 1.0), f.x),
|
||||
mix(iqhash(n + 57.0), iqhash(n + 58.0), f.x), f.y),
|
||||
mix(mix(iqhash(n + 113.0), iqhash(n + 114.0), f.x),
|
||||
mix(iqhash(n + 170.0), iqhash(n + 171.0), f.x), f.y), f.z);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 v = vec3(VertexCoord.x, 0.0, VertexCoord.y);
|
||||
vec3 v2 = v;
|
||||
v2.x = v2.x + constants.time / 2.0;
|
||||
v2.z = v.z * 3.0;
|
||||
v.y = -cos((v.x + v.z / 3.0 + constants.time) * 2.0) / 10.0 - noise(v2.xyz) / 4.0;
|
||||
gl_Position = vec4(v.x, -v.y, v.z, 1.0);
|
||||
}
|
347
gfx/drivers/vulkan_shaders/ribbon_simple.vert.inc
Normal file
347
gfx/drivers/vulkan_shaders/ribbon_simple.vert.inc
Normal file
@ -0,0 +1,347 @@
|
||||
unsigned char ribbon_simple_vert_spv[] = {
|
||||
0x03, 0x02, 0x23, 0x07, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x08, 0x00,
|
||||
0xb5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x77, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x03, 0x00, 0x03, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x36, 0x01, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x04, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x00, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x69, 0x71, 0x68, 0x61,
|
||||
0x73, 0x68, 0x28, 0x66, 0x31, 0x3b, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0x6e, 0x6f, 0x69, 0x73, 0x65, 0x28, 0x76, 0x66,
|
||||
0x33, 0x3b, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00,
|
||||
0x78, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||
0x70, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x66, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||
0x6e, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00,
|
||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x40, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x47, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x4c, 0x00, 0x00, 0x00,
|
||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x56, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x63, 0x00, 0x00, 0x00,
|
||||
0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00,
|
||||
0x68, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x03, 0x00, 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x05, 0x00, 0x77, 0x00, 0x00, 0x00, 0x56, 0x65, 0x72, 0x74,
|
||||
0x65, 0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x7f, 0x00, 0x00, 0x00, 0x76, 0x32, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0x83, 0x00, 0x00, 0x00, 0x55, 0x42, 0x4f, 0x00, 0x06, 0x00, 0x05, 0x00,
|
||||
0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6d, 0x65,
|
||||
0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x85, 0x00, 0x00, 0x00,
|
||||
0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00,
|
||||
0x05, 0x00, 0x04, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x70, 0x61, 0x72, 0x61,
|
||||
0x6d, 0x00, 0x00, 0x00, 0x05, 0x00, 0x06, 0x00, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x67, 0x6c, 0x5f, 0x50, 0x65, 0x72, 0x56, 0x65, 0x72, 0x74, 0x65, 0x78,
|
||||
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74,
|
||||
0x69, 0x6f, 0x6e, 0x00, 0x06, 0x00, 0x07, 0x00, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x67, 0x6c, 0x5f, 0x50, 0x6f, 0x69, 0x6e, 0x74,
|
||||
0x53, 0x69, 0x7a, 0x65, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x03, 0x00,
|
||||
0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||
0x77, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x48, 0x00, 0x05, 0x00, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
||||
0x83, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00,
|
||||
0x85, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x47, 0x00, 0x04, 0x00, 0x85, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0xa8, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x48, 0x00, 0x05, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00,
|
||||
0xa8, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x21, 0x00, 0x04, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x17, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x04, 0x00,
|
||||
0x0e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||
0x8c, 0xee, 0x2a, 0x47, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0x15, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x2a, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x64, 0x42, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x42, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x2a, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x42, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x42,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x2a, 0x43, 0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x43, 0x20, 0x00, 0x04, 0x00,
|
||||
0x76, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x76, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x1e, 0x00, 0x03, 0x00, 0x83, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
||||
0x83, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x84, 0x00, 0x00, 0x00,
|
||||
0x85, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00,
|
||||
0x86, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x86, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x88, 0x00, 0x00, 0x00,
|
||||
0x02, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x41,
|
||||
0x2b, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x80, 0x40, 0x17, 0x00, 0x04, 0x00, 0xa7, 0x00, 0x00, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x04, 0x00,
|
||||
0xa8, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x20, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
|
||||
0xa8, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0xa9, 0x00, 0x00, 0x00,
|
||||
0xaa, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00,
|
||||
0xb3, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00,
|
||||
0x36, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
|
||||
0x05, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x75, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||
0x79, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00,
|
||||
0x79, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x78, 0x00, 0x00, 0x00,
|
||||
0x7c, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00,
|
||||
0x7c, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x7e, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00,
|
||||
0x7d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x75, 0x00, 0x00, 0x00,
|
||||
0x7e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x80, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x7f, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x82, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x88, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00,
|
||||
0x87, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x8a, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00,
|
||||
0x23, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x8c, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00,
|
||||
0x7f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x8d, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
|
||||
0x35, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x8f, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00,
|
||||
0x22, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x91, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x91, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
|
||||
0x75, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
|
||||
0x75, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00,
|
||||
0x95, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00,
|
||||
0x96, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x88, 0x00, 0x00, 0x00,
|
||||
0x98, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00,
|
||||
0x98, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x9a, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00,
|
||||
0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00,
|
||||
0x9a, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0e, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00,
|
||||
0x88, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00,
|
||||
0x9d, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00,
|
||||
0x10, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00,
|
||||
0xa3, 0x00, 0x00, 0x00, 0x83, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xa5, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00,
|
||||
0x75, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0xa6, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xac, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0xae, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xae, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00,
|
||||
0x75, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x07, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00,
|
||||
0xac, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0xb1, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0xb3, 0x00, 0x00, 0x00,
|
||||
0xb4, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0xb4, 0x00, 0x00, 0x00, 0xb2, 0x00, 0x00, 0x00,
|
||||
0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x36, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x08, 0x00, 0x00, 0x00, 0x37, 0x00, 0x03, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x0b, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00,
|
||||
0x09, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x12, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x06, 0x00, 0x06, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00,
|
||||
0xfe, 0x00, 0x02, 0x00, 0x16, 0x00, 0x00, 0x00, 0x38, 0x00, 0x01, 0x00,
|
||||
0x36, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x37, 0x00, 0x03, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00,
|
||||
0x11, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00,
|
||||
0x19, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x0d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x4c, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x63, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00,
|
||||
0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
|
||||
0x1a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||
0x1b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x1d, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x21, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00,
|
||||
0x25, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00,
|
||||
0x50, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00,
|
||||
0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00,
|
||||
0x83, 0x00, 0x05, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00,
|
||||
0x26, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x0c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00,
|
||||
0x27, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x28, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00,
|
||||
0x2c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x2f, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00,
|
||||
0x2f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x32, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00,
|
||||
0x2d, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00,
|
||||
0x35, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x37, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||
0x37, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x29, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x3a, 0x00, 0x00, 0x00,
|
||||
0x3b, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x3c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x3f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x43, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
|
||||
0x43, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x45, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00,
|
||||
0x31, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x47, 0x00, 0x00, 0x00,
|
||||
0x46, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x48, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x4b, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x2b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00,
|
||||
0x4f, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x51, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
|
||||
0x51, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x53, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x44, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00,
|
||||
0x58, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x5b, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x5b, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x5d, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
|
||||
0x5d, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x5f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x57, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00,
|
||||
0x29, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x62, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00,
|
||||
0x3e, 0x00, 0x03, 0x00, 0x63, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00,
|
||||
0x39, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
|
||||
0x0a, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00,
|
||||
0x81, 0x00, 0x05, 0x00, 0x06, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00,
|
||||
0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00,
|
||||
0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x39, 0x00, 0x05, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00,
|
||||
0x68, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00,
|
||||
0x6a, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00,
|
||||
0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
|
||||
0x6a, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00,
|
||||
0x64, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00,
|
||||
0x41, 0x00, 0x05, 0x00, 0x07, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x1c, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00,
|
||||
0x0c, 0x00, 0x08, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
|
||||
0x01, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00,
|
||||
0x6c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00,
|
||||
0x07, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00,
|
||||
0x35, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00,
|
||||
0x71, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x08, 0x00,
|
||||
0x06, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
|
||||
0x2e, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00,
|
||||
0x71, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00,
|
||||
0x38, 0x00, 0x01, 0x00
|
||||
};
|
||||
unsigned int ribbon_simple_vert_spv_len = 4120;
|
@ -468,9 +468,7 @@ static EGLint *gfx_ctx_drm_egl_fill_attribs(
|
||||
#ifdef GL_DEBUG
|
||||
debug = true;
|
||||
#else
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr = video_driver_get_hw_context();
|
||||
debug = hwr->debug_context;
|
||||
#endif
|
||||
|
||||
|
@ -200,7 +200,7 @@ static bool sdl_ctx_set_video_mode(void *data, unsigned width, unsigned height,
|
||||
|
||||
#ifdef HAVE_SDL2
|
||||
if (sdl->g_ctx)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT_ACK, NULL);
|
||||
video_driver_set_video_cache_context_ack();
|
||||
else
|
||||
{
|
||||
sdl->g_ctx = SDL_GL_CreateContext(sdl->g_win);
|
||||
|
@ -639,8 +639,8 @@ static EGLint *egl_fill_attribs(gfx_ctx_wayland_data_t *wl, EGLint *attr)
|
||||
#ifdef GL_DEBUG
|
||||
debug = true;
|
||||
#else
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
debug = hwr->debug_context;
|
||||
#endif
|
||||
|
||||
|
@ -102,7 +102,7 @@ void create_gl_context(HWND hwnd, bool *quit)
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
bool debug = false;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
hwr = video_driver_get_hw_context();
|
||||
|
||||
debug = hwr->debug_context;
|
||||
#ifdef _WIN32
|
||||
@ -119,7 +119,7 @@ void create_gl_context(HWND hwnd, bool *quit)
|
||||
if (g_hrc)
|
||||
{
|
||||
RARCH_LOG("[WGL]: Using cached GL context.\n");
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT_ACK, NULL);
|
||||
video_driver_set_video_cache_context_ack();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -329,7 +329,7 @@ static void gfx_ctx_wgl_destroy(void *data)
|
||||
glFinish();
|
||||
wglMakeCurrent(NULL, NULL);
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT, NULL))
|
||||
if (!video_driver_is_video_cache_context())
|
||||
{
|
||||
if (g_hw_hrc)
|
||||
wglDeleteContext(g_hw_hrc);
|
||||
|
@ -91,7 +91,7 @@ static void gfx_ctx_x_destroy_resources(gfx_ctx_x_data_t *x)
|
||||
glFinish();
|
||||
glXMakeContextCurrent(g_x11_dpy, None, None, NULL);
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT, NULL))
|
||||
if (!video_driver_is_video_cache_context())
|
||||
{
|
||||
if (x->g_hw_ctx)
|
||||
glXDestroyContext(g_x11_dpy, x->g_hw_ctx);
|
||||
@ -139,7 +139,7 @@ static void gfx_ctx_x_destroy_resources(gfx_ctx_x_data_t *x)
|
||||
x->g_should_reset_mode = false;
|
||||
}
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT, NULL)
|
||||
if (!video_driver_is_video_cache_context()
|
||||
&& g_x11_dpy)
|
||||
{
|
||||
XCloseDisplay(g_x11_dpy);
|
||||
@ -333,8 +333,8 @@ static void *gfx_ctx_x_init(void *data)
|
||||
gfx_ctx_x_data_t *x = (gfx_ctx_x_data_t*)
|
||||
calloc(1, sizeof(gfx_ctx_x_data_t));
|
||||
#ifndef GL_DEBUG
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
#endif
|
||||
|
||||
if (!x)
|
||||
@ -646,7 +646,7 @@ static bool gfx_ctx_x_set_video_mode(void *data,
|
||||
}
|
||||
else
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT_ACK, NULL);
|
||||
video_driver_set_video_cache_context_ack();
|
||||
RARCH_LOG("[GLX]: Using cached GL context.\n");
|
||||
}
|
||||
|
||||
|
@ -194,7 +194,7 @@ static EGLint *xegl_fill_attribs(xegl_ctx_data_t *xegl, EGLint *attr)
|
||||
bool core = version >= 3001;
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
hwr = video_driver_get_hw_context();
|
||||
#ifdef GL_DEBUG
|
||||
debug = true;
|
||||
#else
|
||||
|
@ -61,7 +61,7 @@ static bool gl_raster_font_upload_atlas(gl_raster_t *font,
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
bool ancient = false; /* add a check here if needed */
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
hwr = video_driver_get_hw_context();
|
||||
|
||||
if (ancient)
|
||||
{
|
||||
|
@ -243,6 +243,7 @@ static void vulkan_raster_font_flush(vulkan_raster_t *font)
|
||||
&font->texture,
|
||||
font->vk->samplers.nearest,
|
||||
&font->vk->mvp,
|
||||
sizeof(font->vk->mvp),
|
||||
&font->range,
|
||||
font->vertices,
|
||||
};
|
||||
|
@ -13,14 +13,14 @@
|
||||
* If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "spir2cross.hpp"
|
||||
#include "spirv_cross.hpp"
|
||||
#include "slang_reflection.hpp"
|
||||
#include <vector>
|
||||
#include <stdio.h>
|
||||
#include "../../verbosity.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace spir2cross;
|
||||
using namespace spirv_cross;
|
||||
|
||||
static bool slang_texture_semantic_is_array(slang_texture_semantic sem)
|
||||
{
|
||||
|
@ -312,7 +312,7 @@ bool font_driver_init_first(
|
||||
|
||||
if (threading_hint
|
||||
&& settings->video.threaded
|
||||
&& !video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL))
|
||||
&& !video_driver_is_hw_context())
|
||||
return rarch_threaded_video_font_init(new_font_driver, new_font_handle,
|
||||
data, font_path, font_size, api, font_init_first);
|
||||
#endif
|
||||
|
@ -266,8 +266,7 @@ bool gfx_ctx_ctl(enum gfx_ctx_ctl_state state, void *data)
|
||||
{
|
||||
uint64_t *frame_count = NULL;
|
||||
gfx_ctx_size_t *size_data = (gfx_ctx_size_t*)data;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
if (!video_context_data || !size_data)
|
||||
return false;
|
||||
|
@ -286,7 +286,7 @@ void *video_driver_get_ptr(bool force_nonthreaded_data)
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
if (settings->video.threaded
|
||||
&& !(video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL))
|
||||
&& !video_driver_is_hw_context()
|
||||
&& !force_nonthreaded_data)
|
||||
return rarch_threaded_video_get_ptr(NULL);
|
||||
#endif
|
||||
@ -363,7 +363,7 @@ static void init_video_filter(enum retro_pixel_format colfmt)
|
||||
if (colfmt == RETRO_PIXEL_FORMAT_0RGB1555)
|
||||
colfmt = RETRO_PIXEL_FORMAT_RGB565;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL))
|
||||
if (video_driver_is_hw_context())
|
||||
{
|
||||
RARCH_WARN("Cannot use CPU filters when hardware rendering is used.\n");
|
||||
return;
|
||||
@ -510,8 +510,8 @@ static bool uninit_video_input(void)
|
||||
{
|
||||
event_cmd_ctl(EVENT_CMD_OVERLAY_DEINIT, NULL);
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT, NULL))
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_DEINIT_HW_CONTEXT, NULL);
|
||||
if (!video_driver_is_video_cache_context())
|
||||
video_driver_deinit_hw_context();
|
||||
|
||||
if (
|
||||
!input_driver_ctl(RARCH_INPUT_CTL_OWNS_DRIVER, NULL) &&
|
||||
@ -520,7 +520,7 @@ static bool uninit_video_input(void)
|
||||
input_driver_ctl(RARCH_INPUT_CTL_DEINIT, NULL);
|
||||
|
||||
if (
|
||||
!video_driver_ctl(RARCH_DISPLAY_CTL_OWNS_DRIVER, NULL)
|
||||
!video_driver_owns_driver()
|
||||
&& video_driver_data
|
||||
&& current_video && current_video->free
|
||||
)
|
||||
@ -537,8 +537,8 @@ static bool uninit_video_input(void)
|
||||
|
||||
static bool init_video_pixel_converter(unsigned size)
|
||||
{
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
struct retro_hw_render_callback *hwr =
|
||||
video_driver_get_hw_context();
|
||||
|
||||
/* If pixel format is not 0RGB1555, we don't need to do
|
||||
* any internal pixel conversion. */
|
||||
@ -622,9 +622,9 @@ static bool init_video(void)
|
||||
scale = video_driver_state.filter.scale;
|
||||
|
||||
/* Update core-dependent aspect ratio values. */
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG, NULL);
|
||||
video_driver_set_viewport_square_pixel();
|
||||
video_driver_set_viewport_core();
|
||||
video_driver_set_viewport_config();
|
||||
|
||||
/* Update CUSTOM viewport. */
|
||||
custom_vp = video_viewport_get_custom();
|
||||
@ -691,11 +691,11 @@ static bool init_video(void)
|
||||
|
||||
tmp = input_get_ptr();
|
||||
/* Need to grab the "real" video driver interface on a reinit. */
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_FIND_DRIVER, NULL);
|
||||
video_driver_find_driver();
|
||||
|
||||
#ifdef HAVE_THREADS
|
||||
if (settings->video.threaded
|
||||
&& !video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL))
|
||||
&& !video_driver_is_hw_context())
|
||||
{
|
||||
/* Can't do hardware rendering with threaded driver currently. */
|
||||
RARCH_LOG("Starting threaded video driver ...\n");
|
||||
@ -731,7 +731,7 @@ static bool init_video(void)
|
||||
custom_vp->width = width;
|
||||
custom_vp->height = height;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, custom_vp);
|
||||
video_driver_get_viewport_info(custom_vp);
|
||||
}
|
||||
|
||||
video_driver_set_rotation(
|
||||
@ -856,7 +856,7 @@ void video_driver_set_filtering(unsigned index, bool smooth)
|
||||
void video_driver_cached_frame_set(const void *data, unsigned width,
|
||||
unsigned height, size_t pitch)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_SET_PTR, (void*)data);
|
||||
video_driver_set_cached_frame_ptr(data);
|
||||
video_driver_state.frame_cache.width = width;
|
||||
video_driver_state.frame_cache.height = height;
|
||||
video_driver_state.frame_cache.pitch = pitch;
|
||||
@ -1114,7 +1114,7 @@ static bool video_driver_cached_frame(void)
|
||||
return true;
|
||||
}
|
||||
|
||||
static void video_monitor_adjust_system_rates(void)
|
||||
void video_driver_monitor_adjust_system_rates(void)
|
||||
{
|
||||
float timing_skew;
|
||||
const struct retro_system_timing *info = NULL;
|
||||
@ -1252,62 +1252,66 @@ void video_driver_menu_settings(void **list_data, void *list_info_data,
|
||||
#endif
|
||||
}
|
||||
|
||||
bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
{
|
||||
/* Graphics driver requires RGBA byte order data (ABGR on little-endian)
|
||||
/* Graphics driver requires RGBA byte order data (ABGR on little-endian)
|
||||
* for 32-bit.
|
||||
* This takes effect for overlay and shader cores that wants to load
|
||||
* data into graphics driver. Kinda hackish to place it here, it is only
|
||||
* used for GLES.
|
||||
* TODO: Refactor this better. */
|
||||
static struct retro_hw_render_callback hw_render;
|
||||
static bool video_driver_use_rgba = false;
|
||||
static bool video_driver_data_own = false;
|
||||
static bool video_driver_active = false;
|
||||
static video_driver_frame_t frame_bak = NULL;
|
||||
/* If set during context deinit, the driver should keep
|
||||
static struct retro_hw_render_callback hw_render;
|
||||
static bool video_driver_use_rgba = false;
|
||||
static bool video_driver_data_own = false;
|
||||
static bool video_driver_active = false;
|
||||
static video_driver_frame_t frame_bak = NULL;
|
||||
/* If set during context deinit, the driver should keep
|
||||
* graphics context alive to avoid having to reset all
|
||||
* context state. */
|
||||
static bool video_driver_cache_context = false;
|
||||
/* Set to true by driver if context caching succeeded. */
|
||||
static bool video_driver_cache_context_ack = false;
|
||||
static uint8_t *video_driver_record_gpu_buffer = NULL;
|
||||
static bool video_driver_cache_context = false;
|
||||
/* Set to true by driver if context caching succeeded. */
|
||||
static bool video_driver_cache_context_ack = false;
|
||||
static uint8_t *video_driver_record_gpu_buffer = NULL;
|
||||
#ifdef HAVE_THREADS
|
||||
static slock_t *display_lock = NULL;
|
||||
static slock_t *display_lock = NULL;
|
||||
#endif
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case RARCH_DISPLAY_CTL_LOCK:
|
||||
void video_driver_lock(void)
|
||||
{
|
||||
#ifdef HAVE_THREADS
|
||||
if (!display_lock)
|
||||
return false;
|
||||
return;
|
||||
slock_lock(display_lock);
|
||||
#endif
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNLOCK:
|
||||
}
|
||||
|
||||
void video_driver_unlock(void)
|
||||
{
|
||||
#ifdef HAVE_THREADS
|
||||
if (!display_lock)
|
||||
return false;
|
||||
return;
|
||||
slock_unlock(display_lock);
|
||||
#endif
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_LOCK_FREE:
|
||||
}
|
||||
|
||||
void video_driver_lock_free(void)
|
||||
{
|
||||
#ifdef HAVE_THREADS
|
||||
slock_free(display_lock);
|
||||
display_lock = NULL;
|
||||
#endif
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_LOCK_NEW:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOCK_FREE, NULL);
|
||||
}
|
||||
|
||||
void video_driver_lock_new(void)
|
||||
{
|
||||
video_driver_lock_free();
|
||||
#ifdef HAVE_THREADS
|
||||
if (!display_lock)
|
||||
display_lock = slock_new();
|
||||
retro_assert(display_lock);
|
||||
#endif
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_DESTROY:
|
||||
}
|
||||
|
||||
void video_driver_destroy(void)
|
||||
{
|
||||
video_driver_use_rgba = false;
|
||||
video_driver_data_own = false;
|
||||
video_driver_active = false;
|
||||
@ -1315,32 +1319,50 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
video_driver_cache_context_ack = false;
|
||||
video_driver_record_gpu_buffer = NULL;
|
||||
current_video = NULL;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_CACHED_FRAME_SET_PTR:
|
||||
if (!data)
|
||||
return false;
|
||||
video_driver_state.frame_cache.data = (const void*)data;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_STUB_FRAME:
|
||||
}
|
||||
|
||||
void video_driver_set_cached_frame_ptr(const void *data)
|
||||
{
|
||||
if (data)
|
||||
video_driver_state.frame_cache.data = data;
|
||||
}
|
||||
|
||||
void video_driver_set_stub_frame(void)
|
||||
{
|
||||
frame_bak = current_video->frame;
|
||||
current_video->frame = video_null.frame;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNSET_STUB_FRAME:
|
||||
}
|
||||
|
||||
void video_driver_unset_stub_frame(void)
|
||||
{
|
||||
if (frame_bak != NULL)
|
||||
current_video->frame = frame_bak;
|
||||
|
||||
frame_bak = NULL;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SUPPORTS_RECORDING:
|
||||
}
|
||||
|
||||
bool video_driver_supports_recording(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
return settings->video.gpu_record && current_video->read_viewport;
|
||||
case RARCH_DISPLAY_CTL_SUPPORTS_VIEWPORT_READ:
|
||||
}
|
||||
|
||||
bool video_driver_supports_viewport_read(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
return (settings->video.gpu_screenshot ||
|
||||
(video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL)
|
||||
&& !current_video->read_frame_raw))
|
||||
(video_driver_is_hw_context() && !current_video->read_frame_raw))
|
||||
&& current_video->read_viewport && current_video->viewport_info;
|
||||
case RARCH_DISPLAY_CTL_SUPPORTS_READ_FRAME_RAW:
|
||||
}
|
||||
|
||||
bool video_driver_supports_read_frame_raw(void)
|
||||
{
|
||||
return current_video->read_frame_raw;
|
||||
case RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG:
|
||||
{
|
||||
}
|
||||
|
||||
void video_driver_set_viewport_config(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
struct retro_system_av_info *av_info = video_viewport_get_system_av_info();
|
||||
|
||||
if (settings->video.aspect_ratio < 0.0f)
|
||||
@ -1348,7 +1370,7 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
struct retro_game_geometry *geom = &av_info->geometry;
|
||||
|
||||
if (!geom)
|
||||
return false;
|
||||
return;
|
||||
|
||||
if (geom->aspect_ratio > 0.0f && settings->video.aspect_ratio_auto)
|
||||
aspectratio_lut[ASPECT_RATIO_CONFIG].value = geom->aspect_ratio;
|
||||
@ -1367,12 +1389,14 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
aspectratio_lut[ASPECT_RATIO_CONFIG].value =
|
||||
settings->video.aspect_ratio;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL:
|
||||
{
|
||||
}
|
||||
|
||||
void video_driver_set_viewport_square_pixel(void)
|
||||
{
|
||||
unsigned len, highest, i, aspect_x, aspect_y;
|
||||
unsigned width, height;
|
||||
struct retro_game_geometry *geom = NULL;
|
||||
@ -1383,13 +1407,13 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
geom = &av_info->geometry;
|
||||
|
||||
if (!geom)
|
||||
return false;
|
||||
return;
|
||||
|
||||
width = geom->base_width;
|
||||
height = geom->base_height;
|
||||
|
||||
if (width == 0 || height == 0)
|
||||
return false;
|
||||
return;
|
||||
|
||||
len = MIN(width, height);
|
||||
highest = 1;
|
||||
@ -1408,132 +1432,150 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
"%u:%u (1:1 PAR)", aspect_x, aspect_y);
|
||||
|
||||
aspectratio_lut[ASPECT_RATIO_SQUARE].value = (float)aspect_x / aspect_y;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE:
|
||||
{
|
||||
}
|
||||
|
||||
void video_driver_set_viewport_core(void)
|
||||
{
|
||||
struct retro_system_av_info *av_info =
|
||||
video_viewport_get_system_av_info();
|
||||
struct retro_game_geometry *geom = &av_info->geometry;
|
||||
|
||||
if (!geom || geom->base_width <= 0.0f || geom->base_height <= 0.0f)
|
||||
return false;
|
||||
return;
|
||||
|
||||
/* Fallback to 1:1 pixel ratio if none provided */
|
||||
if (geom->aspect_ratio > 0.0f)
|
||||
{
|
||||
aspectratio_lut[ASPECT_RATIO_CORE].value = geom->aspect_ratio;
|
||||
}
|
||||
else
|
||||
{
|
||||
aspectratio_lut[ASPECT_RATIO_CORE].value =
|
||||
(float)geom->base_width / geom->base_height;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_RESET_CUSTOM_VIEWPORT:
|
||||
{
|
||||
}
|
||||
|
||||
void video_driver_reset_custom_viewport(void)
|
||||
{
|
||||
struct video_viewport *custom_vp = video_viewport_get_custom();
|
||||
if (!custom_vp)
|
||||
return false;
|
||||
return;
|
||||
|
||||
custom_vp->width = 0;
|
||||
custom_vp->height = 0;
|
||||
custom_vp->x = 0;
|
||||
custom_vp->y = 0;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_RGBA:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOCK, NULL);
|
||||
video_driver_use_rgba = true;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNLOCK, NULL);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNSET_RGBA:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOCK, NULL);
|
||||
video_driver_use_rgba = false;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNLOCK, NULL);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SUPPORTS_RGBA:
|
||||
{
|
||||
bool tmp = false;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOCK, NULL);
|
||||
tmp = video_driver_use_rgba;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNLOCK, NULL);
|
||||
}
|
||||
|
||||
if (!tmp)
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_GET_NEXT_VIDEO_OUT:
|
||||
void video_driver_set_rgba(void)
|
||||
{
|
||||
video_driver_lock();
|
||||
video_driver_use_rgba = true;
|
||||
video_driver_unlock();
|
||||
}
|
||||
|
||||
void video_driver_unset_rgba(void)
|
||||
{
|
||||
video_driver_lock();
|
||||
video_driver_use_rgba = false;
|
||||
video_driver_unlock();
|
||||
}
|
||||
|
||||
bool video_driver_supports_rgba(void)
|
||||
{
|
||||
bool tmp;
|
||||
video_driver_lock();
|
||||
tmp = video_driver_use_rgba;
|
||||
video_driver_unlock();
|
||||
return tmp;
|
||||
}
|
||||
|
||||
bool video_driver_get_next_video_out(void)
|
||||
{
|
||||
if (!video_driver_poke)
|
||||
return false;
|
||||
|
||||
if (!video_driver_poke->get_video_output_next)
|
||||
return gfx_ctx_ctl(GFX_CTL_GET_VIDEO_OUTPUT_NEXT, NULL);
|
||||
video_driver_poke->get_video_output_next(video_driver_data);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_GET_PREV_VIDEO_OUT:
|
||||
return true;
|
||||
}
|
||||
|
||||
bool video_driver_get_prev_video_out(void)
|
||||
{
|
||||
if (!video_driver_poke)
|
||||
return false;
|
||||
|
||||
if (!video_driver_poke->get_video_output_prev)
|
||||
return gfx_ctx_ctl(GFX_CTL_GET_VIDEO_OUTPUT_NEXT, NULL);
|
||||
video_driver_poke->get_video_output_prev(video_driver_data);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_INIT:
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOCK_NEW, NULL);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool video_driver_init(void)
|
||||
{
|
||||
video_driver_lock_new();
|
||||
return init_video();
|
||||
case RARCH_DISPLAY_CTL_DESTROY_DATA:
|
||||
}
|
||||
|
||||
void video_driver_destroy_data(void)
|
||||
{
|
||||
video_driver_data = NULL;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_DEINIT:
|
||||
}
|
||||
|
||||
void video_driver_deinit(void)
|
||||
{
|
||||
uninit_video_input();
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_LOCK_FREE, NULL);
|
||||
video_driver_lock_free();
|
||||
video_driver_data = NULL;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_MONITOR_RESET:
|
||||
}
|
||||
|
||||
void video_driver_monitor_reset(void)
|
||||
{
|
||||
video_driver_state.frame_time.count = 0;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_MONITOR_ADJUST_SYSTEM_RATES:
|
||||
video_monitor_adjust_system_rates();
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_ASPECT_RATIO:
|
||||
}
|
||||
|
||||
void video_driver_set_aspect_ratio(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (!video_driver_poke || !video_driver_poke->set_aspect_ratio)
|
||||
return false;
|
||||
return;
|
||||
video_driver_poke->set_aspect_ratio(
|
||||
video_driver_data, settings->video.aspect_ratio_idx);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SHOW_MOUSE:
|
||||
}
|
||||
|
||||
void video_driver_show_mouse(void)
|
||||
{
|
||||
if (!video_driver_poke)
|
||||
return false;
|
||||
return;
|
||||
if (video_driver_poke->show_mouse)
|
||||
video_driver_poke->show_mouse(video_driver_data, true);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_HIDE_MOUSE:
|
||||
}
|
||||
|
||||
void video_driver_hide_mouse(void)
|
||||
{
|
||||
if (!video_driver_poke)
|
||||
return false;
|
||||
return;
|
||||
if (video_driver_poke->show_mouse)
|
||||
video_driver_poke->show_mouse(video_driver_data, false);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_NONBLOCK_STATE:
|
||||
{
|
||||
bool *toggle = (bool*)data;
|
||||
|
||||
if (!toggle)
|
||||
return false;
|
||||
}
|
||||
|
||||
void video_driver_set_nonblock_state(bool toggle)
|
||||
{
|
||||
if (current_video->set_nonblock_state)
|
||||
current_video->set_nonblock_state(video_driver_data, *toggle);
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_FIND_DRIVER:
|
||||
{
|
||||
current_video->set_nonblock_state(video_driver_data, toggle);
|
||||
}
|
||||
|
||||
bool video_driver_find_driver(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
int i;
|
||||
driver_ctx_info_t drv;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL))
|
||||
if (video_driver_is_hw_context())
|
||||
{
|
||||
struct retro_hw_render_callback *hwr = NULL;
|
||||
current_video = NULL;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_HW_CONTEXT_GET, &hwr);
|
||||
(void)hwr;
|
||||
struct retro_hw_render_callback *hwr = video_driver_get_hw_context();
|
||||
|
||||
if (hwr && hw_render_context_is_vulkan(hwr->context_type))
|
||||
{
|
||||
@ -1588,79 +1630,98 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
if (!current_video)
|
||||
retro_fail(1, "find_video_driver()");
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_APPLY_STATE_CHANGES:
|
||||
return true;
|
||||
}
|
||||
|
||||
void video_driver_apply_state_changes(void)
|
||||
{
|
||||
if (!video_driver_poke)
|
||||
return false;
|
||||
return;
|
||||
if (video_driver_poke->apply_state_changes)
|
||||
video_driver_poke->apply_state_changes(video_driver_data);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_READ_VIEWPORT:
|
||||
}
|
||||
|
||||
bool video_driver_read_viewport(uint8_t *buffer)
|
||||
{
|
||||
if (!current_video->read_viewport)
|
||||
return false;
|
||||
if (!current_video->read_viewport(video_driver_data,
|
||||
(uint8_t*)data))
|
||||
if (!current_video->read_viewport(video_driver_data, buffer))
|
||||
return false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_CACHED_FRAME_HAS_VALID_FB:
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool video_driver_cached_frame_has_valid_framebuffer(void)
|
||||
{
|
||||
if (!video_driver_state.frame_cache.data)
|
||||
return false;
|
||||
return (video_driver_state.frame_cache.data
|
||||
== RETRO_HW_FRAME_BUFFER_VALID);
|
||||
case RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER:
|
||||
return video_driver_state.frame_cache.data == RETRO_HW_FRAME_BUFFER_VALID;
|
||||
}
|
||||
|
||||
bool video_driver_cached_frame_render(void)
|
||||
{
|
||||
if (!current_video)
|
||||
return false;
|
||||
return video_driver_cached_frame();
|
||||
case RARCH_DISPLAY_CTL_IS_ALIVE:
|
||||
}
|
||||
|
||||
bool video_driver_is_alive(void)
|
||||
{
|
||||
if (current_video)
|
||||
return current_video->alive(video_driver_data);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_IS_FOCUSED:
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
bool video_driver_is_focused(void)
|
||||
{
|
||||
return current_video->focus(video_driver_data);
|
||||
case RARCH_DISPLAY_CTL_HAS_WINDOWED:
|
||||
}
|
||||
|
||||
bool video_driver_has_windowed(void)
|
||||
{
|
||||
#if defined(RARCH_CONSOLE) || defined(RARCH_MOBILE)
|
||||
return false;
|
||||
#else
|
||||
if (!current_video->has_windowed(video_driver_data))
|
||||
return false;
|
||||
break;
|
||||
return current_video->has_windowed(video_driver_data);
|
||||
#endif
|
||||
case RARCH_DISPLAY_CTL_GET_FRAME_COUNT:
|
||||
{
|
||||
uint64_t **ptr = (uint64_t**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = &video_driver_frame_count;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_FRAME_FILTER_ALIVE:
|
||||
if (!video_driver_state.filter.filter)
|
||||
return false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_FRAME_FILTER_IS_32BIT:
|
||||
}
|
||||
|
||||
uint64_t *video_driver_get_frame_count_ptr(void)
|
||||
{
|
||||
return &video_driver_frame_count;
|
||||
}
|
||||
|
||||
bool video_driver_frame_filter_alive(void)
|
||||
{
|
||||
return !!video_driver_state.filter.filter;
|
||||
}
|
||||
|
||||
bool video_driver_frame_filter_is_32bit(void)
|
||||
{
|
||||
return video_driver_state.filter.out_rgb32;
|
||||
case RARCH_DISPLAY_CTL_DEFAULT_SETTINGS:
|
||||
{
|
||||
}
|
||||
|
||||
void video_driver_default_settings(void)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
if (!global)
|
||||
return false;
|
||||
return;
|
||||
|
||||
global->console.screen.gamma_correction = DEFAULT_GAMMA;
|
||||
global->console.flickerfilter_enable = false;
|
||||
global->console.softfilter_enable = false;
|
||||
|
||||
global->console.screen.resolutions.current.id = 0;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_LOAD_SETTINGS:
|
||||
{
|
||||
}
|
||||
|
||||
void video_driver_load_settings(config_file_t *conf)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
config_file_t *conf = (config_file_t*)data;
|
||||
|
||||
if (!conf)
|
||||
return false;
|
||||
return;
|
||||
|
||||
CONFIG_GET_BOOL_BASE(conf, global,
|
||||
console.screen.gamma_correction, "gamma_correction");
|
||||
@ -1678,15 +1739,13 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
CONFIG_GET_INT_BASE(conf, global,
|
||||
console.screen.flicker_filter_index,
|
||||
"flicker_filter_index");
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SAVE_SETTINGS:
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
config_file_t *conf = (config_file_t*)data;
|
||||
}
|
||||
|
||||
void video_driver_save_settings(config_file_t *conf)
|
||||
{
|
||||
global_t *global = global_get_ptr();
|
||||
if (!conf)
|
||||
return false;
|
||||
return;
|
||||
|
||||
config_set_bool(conf, "gamma_correction",
|
||||
global->console.screen.gamma_correction);
|
||||
@ -1701,108 +1760,146 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
global->console.screen.resolutions.current.id);
|
||||
config_set_int(conf, "flicker_filter_index",
|
||||
global->console.screen.flicker_filter_index);
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_OWN_DRIVER:
|
||||
}
|
||||
|
||||
void video_driver_set_own_driver(void)
|
||||
{
|
||||
video_driver_data_own = true;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNSET_OWN_DRIVER:
|
||||
}
|
||||
|
||||
void video_driver_unset_own_driver(void)
|
||||
{
|
||||
video_driver_data_own = false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_OWNS_DRIVER:
|
||||
}
|
||||
|
||||
bool video_driver_owns_driver(void)
|
||||
{
|
||||
return video_driver_data_own;
|
||||
case RARCH_DISPLAY_CTL_IS_HW_CONTEXT:
|
||||
return (hw_render.context_type != RETRO_HW_CONTEXT_NONE);
|
||||
case RARCH_DISPLAY_CTL_DEINIT_HW_CONTEXT:
|
||||
}
|
||||
|
||||
bool video_driver_is_hw_context(void)
|
||||
{
|
||||
return hw_render.context_type != RETRO_HW_CONTEXT_NONE;
|
||||
}
|
||||
|
||||
void video_driver_deinit_hw_context(void)
|
||||
{
|
||||
if (hw_render.context_destroy)
|
||||
hw_render.context_destroy();
|
||||
|
||||
memset(&hw_render, 0, sizeof(hw_render));
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_HW_CONTEXT_GET:
|
||||
{
|
||||
struct retro_hw_render_callback **hw_cb =
|
||||
(struct retro_hw_render_callback**)data;
|
||||
if (!hw_cb)
|
||||
return false;
|
||||
*hw_cb = &hw_render;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT:
|
||||
video_driver_cache_context = true;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT:
|
||||
video_driver_cache_context = false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT:
|
||||
return video_driver_cache_context;
|
||||
case RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT_ACK:
|
||||
video_driver_cache_context_ack = true;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT_ACK:
|
||||
video_driver_cache_context_ack = false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT_ACK:
|
||||
return video_driver_cache_context_ack;
|
||||
case RARCH_DISPLAY_CTL_SET_ACTIVE:
|
||||
video_driver_active = true;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_UNSET_ACTIVE:
|
||||
video_driver_active = false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_IS_ACTIVE:
|
||||
return video_driver_active;
|
||||
case RARCH_DISPLAY_CTL_HAS_GPU_RECORD:
|
||||
return (video_driver_record_gpu_buffer != NULL);
|
||||
case RARCH_DISPLAY_CTL_GPU_RECORD_GET:
|
||||
{
|
||||
uint8_t **new_data = (uint8_t**)data;
|
||||
}
|
||||
|
||||
if (!new_data)
|
||||
return false;
|
||||
*new_data = video_driver_record_gpu_buffer;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_GPU_RECORD_INIT:
|
||||
{
|
||||
unsigned *new_size = (unsigned*)data;
|
||||
if (!new_size)
|
||||
return false;
|
||||
video_driver_record_gpu_buffer = (uint8_t*)malloc(*new_size);
|
||||
struct retro_hw_render_callback *video_driver_get_hw_context(void)
|
||||
{
|
||||
return &hw_render;
|
||||
}
|
||||
|
||||
void video_driver_set_video_cache_context(void)
|
||||
{
|
||||
video_driver_cache_context = true;
|
||||
}
|
||||
|
||||
void video_driver_unset_video_cache_context(void)
|
||||
{
|
||||
video_driver_cache_context = false;
|
||||
}
|
||||
|
||||
bool video_driver_is_video_cache_context(void)
|
||||
{
|
||||
return video_driver_cache_context;
|
||||
}
|
||||
|
||||
void video_driver_set_video_cache_context_ack(void)
|
||||
{
|
||||
video_driver_cache_context_ack = true;
|
||||
}
|
||||
|
||||
void video_driver_unset_video_cache_context_ack(void)
|
||||
{
|
||||
video_driver_cache_context_ack = false;
|
||||
}
|
||||
|
||||
bool video_driver_is_video_cache_context_ack(void)
|
||||
{
|
||||
return video_driver_cache_context_ack;
|
||||
}
|
||||
|
||||
void video_driver_set_active(void)
|
||||
{
|
||||
video_driver_active = true;
|
||||
}
|
||||
|
||||
void video_driver_unset_active(void)
|
||||
{
|
||||
video_driver_active = false;
|
||||
}
|
||||
|
||||
bool video_driver_is_active(void)
|
||||
{
|
||||
return video_driver_active;
|
||||
}
|
||||
|
||||
bool video_driver_has_gpu_record(void)
|
||||
{
|
||||
return video_driver_record_gpu_buffer != NULL;
|
||||
}
|
||||
|
||||
uint8_t *video_driver_get_gpu_record(void)
|
||||
{
|
||||
return video_driver_record_gpu_buffer;
|
||||
}
|
||||
|
||||
bool video_driver_gpu_record_init(unsigned size)
|
||||
{
|
||||
video_driver_record_gpu_buffer = (uint8_t*)malloc(size);
|
||||
if (!video_driver_record_gpu_buffer)
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_GPU_RECORD_DEINIT:
|
||||
if (video_driver_record_gpu_buffer)
|
||||
return true;
|
||||
}
|
||||
|
||||
void video_driver_gpu_record_deinit(void)
|
||||
{
|
||||
free(video_driver_record_gpu_buffer);
|
||||
video_driver_record_gpu_buffer = NULL;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_GET_CURRENT_SOFTWARE_FRAMEBUFFER:
|
||||
}
|
||||
|
||||
bool video_driver_get_current_software_framebuffer(struct retro_framebuffer *fb)
|
||||
{
|
||||
if (
|
||||
!video_driver_poke ||
|
||||
!video_driver_poke->get_current_software_framebuffer)
|
||||
return false;
|
||||
if (!video_driver_poke->get_current_software_framebuffer(
|
||||
video_driver_data, (struct retro_framebuffer *)data))
|
||||
video_driver_data, fb))
|
||||
return false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_GET_HW_RENDER_INTERFACE:
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool video_driver_get_hw_render_interface(const struct retro_hw_render_interface **iface)
|
||||
{
|
||||
if (
|
||||
!video_driver_poke ||
|
||||
!video_driver_poke->get_hw_render_interface)
|
||||
return false;
|
||||
if (!video_driver_poke->get_hw_render_interface(video_driver_data,
|
||||
(const struct retro_hw_render_interface**)data))
|
||||
|
||||
if (!video_driver_poke->get_hw_render_interface(video_driver_data, iface))
|
||||
return false;
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_VIEWPORT_INFO:
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool video_driver_get_viewport_info(struct video_viewport *viewport)
|
||||
{
|
||||
if (!current_video || !current_video->viewport_info)
|
||||
return false;
|
||||
current_video->viewport_info(video_driver_data, (struct video_viewport*)data);
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_SET_TITLE_BUF:
|
||||
{
|
||||
current_video->viewport_info(video_driver_data, viewport);
|
||||
return true;
|
||||
}
|
||||
|
||||
void video_driver_set_title_buf(void)
|
||||
{
|
||||
struct retro_system_info info;
|
||||
core_get_system_info(&info);
|
||||
strlcpy(video_driver_title_buf,
|
||||
@ -1818,17 +1915,8 @@ bool video_driver_ctl(enum rarch_display_ctl_state state, void *data)
|
||||
strlcat(video_driver_title_buf,
|
||||
info.library_version,
|
||||
sizeof(video_driver_title_buf));
|
||||
}
|
||||
break;
|
||||
case RARCH_DISPLAY_CTL_NONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* video_viewport_get_scaled_integer:
|
||||
* @vp : Viewport handle
|
||||
@ -1991,7 +2079,7 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
|
||||
runloop_ctl(RUNLOOP_CTL_MSG_QUEUE_PULL, &msg);
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_IS_ACTIVE, NULL))
|
||||
if (!video_driver_is_active())
|
||||
return;
|
||||
|
||||
if (video_driver_scaler_ptr &&
|
||||
@ -2012,7 +2100,7 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
!video_driver_state.filter.filter
|
||||
|| !settings->video.post_filter_record
|
||||
|| !data
|
||||
|| video_driver_ctl(RARCH_DISPLAY_CTL_HAS_GPU_RECORD, NULL)
|
||||
|| video_driver_has_gpu_record()
|
||||
)
|
||||
)
|
||||
recording_dump_frame(data, width, height, pitch);
|
||||
@ -2034,7 +2122,9 @@ void video_driver_frame(const void *data, unsigned width,
|
||||
video_driver_data, data, width, height,
|
||||
video_driver_frame_count,
|
||||
pitch, video_driver_msg))
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_ACTIVE, NULL);
|
||||
{
|
||||
video_driver_unset_active();
|
||||
}
|
||||
|
||||
video_driver_frame_count++;
|
||||
}
|
||||
@ -2083,7 +2173,7 @@ bool video_driver_texture_load(void *data,
|
||||
*id = video_driver_poke->load_texture(video_driver_data, data,
|
||||
#ifdef HAVE_THREADS
|
||||
settings->video.threaded
|
||||
&& !video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL),
|
||||
&& !video_driver_is_hw_context(),
|
||||
#else
|
||||
false,
|
||||
#endif
|
||||
|
@ -92,81 +92,6 @@ enum rarch_display_type
|
||||
RARCH_DISPLAY_OSX
|
||||
};
|
||||
|
||||
enum rarch_display_ctl_state
|
||||
{
|
||||
RARCH_DISPLAY_CTL_NONE = 0,
|
||||
RARCH_DISPLAY_CTL_INIT,
|
||||
RARCH_DISPLAY_CTL_DEINIT,
|
||||
RARCH_DISPLAY_CTL_DESTROY,
|
||||
RARCH_DISPLAY_CTL_DESTROY_DATA,
|
||||
RARCH_DISPLAY_CTL_LOCK,
|
||||
RARCH_DISPLAY_CTL_UNLOCK,
|
||||
RARCH_DISPLAY_CTL_LOCK_FREE,
|
||||
RARCH_DISPLAY_CTL_LOCK_NEW,
|
||||
RARCH_DISPLAY_CTL_SUPPORTS_RGBA,
|
||||
RARCH_DISPLAY_CTL_SET_RGBA,
|
||||
RARCH_DISPLAY_CTL_UNSET_RGBA,
|
||||
RARCH_DISPLAY_CTL_DEFAULT_SETTINGS,
|
||||
RARCH_DISPLAY_CTL_LOAD_SETTINGS,
|
||||
RARCH_DISPLAY_CTL_SAVE_SETTINGS,
|
||||
RARCH_DISPLAY_CTL_MONITOR_RESET,
|
||||
RARCH_DISPLAY_CTL_MONITOR_ADJUST_SYSTEM_RATES,
|
||||
RARCH_DISPLAY_CTL_APPLY_STATE_CHANGES,
|
||||
RARCH_DISPLAY_CTL_FIND_DRIVER,
|
||||
RARCH_DISPLAY_CTL_FRAME_FILTER_ALIVE,
|
||||
RARCH_DISPLAY_CTL_FRAME_FILTER_IS_32BIT,
|
||||
RARCH_DISPLAY_CTL_GET_PREV_VIDEO_OUT,
|
||||
RARCH_DISPLAY_CTL_GET_NEXT_VIDEO_OUT,
|
||||
RARCH_DISPLAY_CTL_HAS_WINDOWED,
|
||||
RARCH_DISPLAY_CTL_SUPPORTS_RECORDING,
|
||||
RARCH_DISPLAY_CTL_SUPPORTS_VIEWPORT_READ,
|
||||
RARCH_DISPLAY_CTL_SUPPORTS_READ_FRAME_RAW,
|
||||
RARCH_DISPLAY_CTL_IS_FOCUSED,
|
||||
RARCH_DISPLAY_CTL_IS_ALIVE,
|
||||
RARCH_DISPLAY_CTL_SET_ASPECT_RATIO,
|
||||
/* Sets viewport to aspect ratio set by core. */
|
||||
RARCH_DISPLAY_CTL_SET_VIEWPORT_CORE,
|
||||
/* Sets viewport to config aspect ratio. */
|
||||
RARCH_DISPLAY_CTL_SET_VIEWPORT_CONFIG,
|
||||
/* Sets viewport to square pixel aspect ratio based on width/height. */
|
||||
RARCH_DISPLAY_CTL_SET_VIEWPORT_SQUARE_PIXEL,
|
||||
RARCH_DISPLAY_CTL_RESET_CUSTOM_VIEWPORT,
|
||||
RARCH_DISPLAY_CTL_READ_VIEWPORT,
|
||||
RARCH_DISPLAY_CTL_SET_NONBLOCK_STATE,
|
||||
RARCH_DISPLAY_CTL_SET_STUB_FRAME,
|
||||
RARCH_DISPLAY_CTL_UNSET_STUB_FRAME,
|
||||
/* Renders the current video frame. */
|
||||
RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER,
|
||||
RARCH_DISPLAY_CTL_CACHED_FRAME_HAS_VALID_FB,
|
||||
RARCH_DISPLAY_CTL_CACHED_FRAME_SET_PTR,
|
||||
RARCH_DISPLAY_CTL_SHOW_MOUSE,
|
||||
RARCH_DISPLAY_CTL_HIDE_MOUSE,
|
||||
RARCH_DISPLAY_CTL_GET_FRAME_COUNT,
|
||||
RARCH_DISPLAY_CTL_SET_OWN_DRIVER,
|
||||
RARCH_DISPLAY_CTL_UNSET_OWN_DRIVER,
|
||||
RARCH_DISPLAY_CTL_OWNS_DRIVER,
|
||||
RARCH_DISPLAY_CTL_DEINIT_HW_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_IS_HW_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_HW_CONTEXT_GET,
|
||||
RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT,
|
||||
RARCH_DISPLAY_CTL_SET_VIDEO_CACHE_CONTEXT_ACK,
|
||||
RARCH_DISPLAY_CTL_UNSET_VIDEO_CACHE_CONTEXT_ACK,
|
||||
RARCH_DISPLAY_CTL_IS_VIDEO_CACHE_CONTEXT_ACK,
|
||||
RARCH_DISPLAY_CTL_SET_ACTIVE,
|
||||
RARCH_DISPLAY_CTL_UNSET_ACTIVE,
|
||||
RARCH_DISPLAY_CTL_IS_ACTIVE,
|
||||
RARCH_DISPLAY_CTL_HAS_GPU_RECORD,
|
||||
RARCH_DISPLAY_CTL_GPU_RECORD_GET,
|
||||
RARCH_DISPLAY_CTL_GPU_RECORD_INIT,
|
||||
RARCH_DISPLAY_CTL_GPU_RECORD_DEINIT,
|
||||
RARCH_DISPLAY_CTL_GET_CURRENT_SOFTWARE_FRAMEBUFFER,
|
||||
RARCH_DISPLAY_CTL_GET_HW_RENDER_INTERFACE,
|
||||
RARCH_DISPLAY_CTL_VIEWPORT_INFO,
|
||||
RARCH_DISPLAY_CTL_SET_TITLE_BUF
|
||||
};
|
||||
|
||||
typedef struct video_info
|
||||
{
|
||||
unsigned width;
|
||||
@ -341,7 +266,72 @@ struct aspect_ratio_elem
|
||||
|
||||
extern struct aspect_ratio_elem aspectratio_lut[ASPECT_RATIO_END];
|
||||
|
||||
bool video_driver_ctl(enum rarch_display_ctl_state state, void *data);
|
||||
void video_driver_lock(void);
|
||||
void video_driver_unlock(void);
|
||||
void video_driver_lock_free(void);
|
||||
void video_driver_lock_new(void);
|
||||
void video_driver_destroy(void);
|
||||
void video_driver_set_cached_frame_ptr(const void *data);
|
||||
void video_driver_set_stub_frame(void);
|
||||
void video_driver_unset_stub_frame(void);
|
||||
bool video_driver_supports_recording(void);
|
||||
bool video_driver_supports_viewport_read(void);
|
||||
bool video_driver_supports_read_frame_raw(void);
|
||||
void video_driver_set_viewport_config(void);
|
||||
void video_driver_set_viewport_square_pixel(void);
|
||||
void video_driver_set_viewport_core(void);
|
||||
void video_driver_reset_custom_viewport(void);
|
||||
void video_driver_set_rgba(void);
|
||||
void video_driver_unset_rgba(void);
|
||||
bool video_driver_supports_rgba(void);
|
||||
bool video_driver_get_next_video_out(void);
|
||||
bool video_driver_get_prev_video_out(void);
|
||||
bool video_driver_init(void);
|
||||
void video_driver_destroy_data(void);
|
||||
void video_driver_deinit(void);
|
||||
void video_driver_monitor_reset(void);
|
||||
void video_driver_set_aspect_ratio(void);
|
||||
void video_driver_show_mouse(void);
|
||||
void video_driver_hide_mouse(void);
|
||||
void video_driver_set_nonblock_state(bool toggle);
|
||||
bool video_driver_find_driver(void);
|
||||
void video_driver_apply_state_changes(void);
|
||||
bool video_driver_read_viewport(uint8_t *buffer);
|
||||
bool video_driver_cached_frame_has_valid_framebuffer(void);
|
||||
bool video_driver_cached_frame_render(void);
|
||||
bool video_driver_is_alive(void);
|
||||
bool video_driver_is_focused(void);
|
||||
bool video_driver_has_windowed(void);
|
||||
uint64_t *video_driver_get_frame_count_ptr(void);
|
||||
bool video_driver_frame_filter_alive(void);
|
||||
bool video_driver_frame_filter_is_32bit(void);
|
||||
void video_driver_default_settings(void);
|
||||
void video_driver_load_settings(config_file_t *conf);
|
||||
void video_driver_save_settings(config_file_t *conf);
|
||||
void video_driver_set_own_driver(void);
|
||||
void video_driver_unset_own_driver(void);
|
||||
bool video_driver_owns_driver(void);
|
||||
bool video_driver_is_hw_context(void);
|
||||
void video_driver_deinit_hw_context(void);
|
||||
struct retro_hw_render_callback *video_driver_get_hw_context(void);
|
||||
void video_driver_set_video_cache_context(void);
|
||||
void video_driver_unset_video_cache_context(void);
|
||||
bool video_driver_is_video_cache_context(void);
|
||||
void video_driver_set_video_cache_context_ack(void);
|
||||
void video_driver_unset_video_cache_context_ack(void);
|
||||
bool video_driver_is_video_cache_context_ack(void);
|
||||
void video_driver_set_active(void);
|
||||
void video_driver_unset_active(void);
|
||||
bool video_driver_is_active(void);
|
||||
bool video_driver_has_gpu_record(void);
|
||||
uint8_t *video_driver_get_gpu_record(void);
|
||||
bool video_driver_gpu_record_init(unsigned size);
|
||||
void video_driver_gpu_record_deinit(void);
|
||||
bool video_driver_get_current_software_framebuffer(struct retro_framebuffer *fb);
|
||||
bool video_driver_get_hw_render_interface(const struct retro_hw_render_interface **iface);
|
||||
bool video_driver_get_viewport_info(struct video_viewport *viewport);
|
||||
void video_driver_set_title_buf(void);
|
||||
void video_driver_monitor_adjust_system_rates(void);
|
||||
|
||||
/**
|
||||
* video_driver_find_handle:
|
||||
|
@ -51,8 +51,7 @@ bool video_texture_image_set_color_shifts(
|
||||
*g_shift = 8;
|
||||
*b_shift = 0;
|
||||
|
||||
if (video_driver_ctl(
|
||||
RARCH_DISPLAY_CTL_SUPPORTS_RGBA, NULL))
|
||||
if (video_driver_supports_rgba())
|
||||
{
|
||||
*r_shift = 0;
|
||||
*b_shift = 16;
|
||||
|
@ -340,8 +340,7 @@ static void android_input_poll_main_cmd(void)
|
||||
runloop_ctl(RUNLOOP_CTL_SET_PAUSED, &boolean);
|
||||
runloop_ctl(RUNLOOP_CTL_SET_IDLE, &boolean);
|
||||
#ifdef HAVE_MENU
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_STUB_DRAW_FRAME, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_UNSET_STUB_FRAME, NULL);
|
||||
video_driver_unset_stub_frame();
|
||||
#endif
|
||||
|
||||
if ((android_app->sensor_state_mask
|
||||
@ -363,8 +362,7 @@ static void android_input_poll_main_cmd(void)
|
||||
runloop_ctl(RUNLOOP_CTL_SET_PAUSED, &boolean);
|
||||
runloop_ctl(RUNLOOP_CTL_SET_IDLE, &boolean);
|
||||
#ifdef HAVE_MENU
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_STUB_DRAW_FRAME, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_STUB_FRAME, NULL);
|
||||
video_driver_set_stub_frame();
|
||||
#endif
|
||||
|
||||
/* Avoid draining battery while app is not being used. */
|
||||
|
@ -312,12 +312,12 @@ static void x_input_poll_mouse(x11_input_t *x11)
|
||||
x11->mouse_r = mask & Button3Mask;
|
||||
|
||||
/* Somewhat hacky, but seem to do the job. */
|
||||
if (x11->grab_mouse && video_driver_ctl(RARCH_DISPLAY_CTL_IS_FOCUSED, NULL))
|
||||
if (x11->grab_mouse && video_driver_is_focused())
|
||||
{
|
||||
int mid_w, mid_h;
|
||||
struct video_viewport vp = {0};
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
mid_w = vp.full_width >> 1;
|
||||
mid_h = vp.full_height >> 1;
|
||||
@ -338,7 +338,7 @@ static void x_input_poll(void *data)
|
||||
{
|
||||
x11_input_t *x11 = (x11_input_t*)data;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_IS_FOCUSED, NULL))
|
||||
if (video_driver_is_focused())
|
||||
XQueryKeymap(x11->display, x11->state);
|
||||
else
|
||||
memset(x11->state, 0, sizeof(x11->state));
|
||||
|
@ -379,7 +379,7 @@ bool input_translate_coord_viewport(int mouse_x, int mouse_y,
|
||||
int scaled_screen_x, scaled_screen_y, scaled_x, scaled_y;
|
||||
struct video_viewport vp = {0};
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp))
|
||||
if (!video_driver_get_viewport_info(&vp))
|
||||
return false;
|
||||
|
||||
scaled_screen_x = (2 * mouse_x * 0x7fff) / (int)vp.full_width - 0x7fff;
|
||||
|
@ -429,7 +429,7 @@ static INLINE void rjpeg_decode_block(
|
||||
struct rjpeg_component *c,
|
||||
unsigned char* out)
|
||||
{
|
||||
unsigned char code;
|
||||
unsigned char code = 0;
|
||||
int coef = 0;
|
||||
|
||||
memset(ctx->block, 0, sizeof(ctx->block));
|
||||
|
@ -299,8 +299,7 @@ static int action_left_shader_num_passes(unsigned type, const char *label,
|
||||
static int action_left_video_resolution(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_PREV_VIDEO_OUT, NULL);
|
||||
|
||||
video_driver_get_prev_video_out();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -768,10 +768,9 @@ static int generic_action_ok(const char *path,
|
||||
break;
|
||||
case ACTION_OK_LOAD_CONFIG_FILE:
|
||||
{
|
||||
bool msg_force = true;
|
||||
flush_char = NULL;
|
||||
flush_type = MENU_SETTINGS;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||
menu_display_set_msg_force(true);
|
||||
|
||||
if (rarch_ctl(RARCH_CTL_REPLACE_CONFIG, action_path))
|
||||
{
|
||||
|
@ -322,8 +322,7 @@ static int action_right_shader_num_passes(unsigned type, const char *label,
|
||||
static int action_right_video_resolution(unsigned type, const char *label,
|
||||
bool wraparound)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_NEXT_VIDEO_OUT, NULL);
|
||||
|
||||
video_driver_get_next_video_out();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -180,7 +180,7 @@ static void mui_draw_icon(
|
||||
struct gfx_coords coords;
|
||||
math_matrix_4x4 mymat;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
rotate_draw.matrix = &mymat;
|
||||
rotate_draw.rotation = rotation;
|
||||
@ -189,7 +189,7 @@ static void mui_draw_icon(
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_ROTATE_Z, &rotate_draw);
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
|
||||
coords.vertices = 4;
|
||||
coords.vertex = NULL;
|
||||
@ -205,13 +205,12 @@ static void mui_draw_icon(
|
||||
draw.matrix_data = &mymat;
|
||||
draw.texture = texture;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
|
||||
static void mui_draw_tab(mui_handle_t *mui,
|
||||
unsigned i,
|
||||
unsigned width, unsigned height,
|
||||
@ -255,7 +254,7 @@ static void mui_draw_text(float x, float y, unsigned width, unsigned height,
|
||||
int font_size;
|
||||
struct font_params params;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
|
||||
font_size = menu_display_get_font_size();
|
||||
|
||||
params.x = x / width;
|
||||
params.y = 1.0f - (y + font_size / 3) / height;
|
||||
@ -284,7 +283,7 @@ static void mui_render_quad(mui_handle_t *mui,
|
||||
coords.lut_tex_coord = NULL;
|
||||
coords.color = coord_color;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
draw.x = x;
|
||||
draw.y = (int)height - y - (int)h;
|
||||
@ -294,18 +293,17 @@ static void mui_render_quad(mui_handle_t *mui,
|
||||
draw.matrix_data = NULL;
|
||||
draw.texture = menu_display_white_texture;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
static void mui_draw_tab_begin(mui_handle_t *mui,
|
||||
unsigned width, unsigned height,
|
||||
float *white_bg, float *grey_bg)
|
||||
{
|
||||
float scale_factor;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_GET_DPI, &scale_factor);
|
||||
float scale_factor = menu_display_get_dpi();
|
||||
|
||||
mui->tabs_height = scale_factor / 3;
|
||||
|
||||
@ -348,7 +346,7 @@ static void mui_draw_scrollbar(mui_handle_t *mui,
|
||||
if (!mui)
|
||||
return;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
content_height = menu_entries_get_end() * mui->line_height;
|
||||
total_height = height - header_height - mui->tabs_height;
|
||||
@ -402,7 +400,7 @@ static void mui_render_messagebox(const char *message)
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
|
||||
font_size = menu_display_get_font_size();
|
||||
|
||||
x = width / 2;
|
||||
y = height / 2 - list->size * font_size / 2;
|
||||
@ -443,9 +441,9 @@ static void mui_render(void *data)
|
||||
if (menu_animation_ctl(MENU_ANIMATION_CTL_IDEAL_DELTA_TIME_GET, &delta))
|
||||
menu_animation_ctl(MENU_ANIMATION_CTL_UPDATE, &delta.ideal);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_WIDTH, &width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEIGHT, &height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
menu_display_set_width(width);
|
||||
menu_display_set_height(height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
if (settings->menu.pointer.enable)
|
||||
{
|
||||
@ -620,12 +618,12 @@ static void mui_render_menu_list(mui_handle_t *mui,
|
||||
uint64_t *frame_count;
|
||||
size_t i = 0;
|
||||
size_t end = menu_entries_get_end();
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_UPDATE_PENDING, NULL))
|
||||
if (!menu_display_get_update_pending())
|
||||
return;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
mui->list_block.carr.coords.vertices = 0;
|
||||
|
||||
@ -709,12 +707,15 @@ static int mui_get_core_title(char *s, size_t len)
|
||||
|
||||
static void mui_draw_bg(menu_display_ctx_draw_t *draw)
|
||||
{
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
draw->x = 0;
|
||||
draw->y = 0;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
draw->pipeline.id = 0;
|
||||
|
||||
menu_display_draw_bg(draw);
|
||||
menu_display_draw(draw);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
static void mui_frame(void *data)
|
||||
@ -786,10 +787,8 @@ static void mui_frame(void *data)
|
||||
const uint32_t activetab_color = 0x0096f2ff;
|
||||
const uint32_t passivetab_color = 0x9e9e9eff;
|
||||
bool background_rendered = false;
|
||||
bool libretro_running = menu_display_ctl(
|
||||
MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL);
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
bool libretro_running = menu_display_libretro_running();
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
(void)passivetab_color;
|
||||
(void)activetab_color;
|
||||
@ -799,8 +798,8 @@ static void mui_frame(void *data)
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
menu_display_set_viewport();
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
if (libretro_running)
|
||||
{
|
||||
@ -815,8 +814,7 @@ static void mui_frame(void *data)
|
||||
draw.vertex_count = 4;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL)
|
||||
&& draw.texture)
|
||||
if (!menu_display_libretro_running() && draw.texture)
|
||||
draw.color = &white_bg[0];
|
||||
|
||||
mui_draw_bg(&draw);
|
||||
@ -830,7 +828,7 @@ static void mui_frame(void *data)
|
||||
clearcolor.b = 1.0f;
|
||||
clearcolor.a = 0.75f;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_CLEAR_COLOR, &clearcolor);
|
||||
menu_display_clear_color(&clearcolor);
|
||||
|
||||
if (mui->textures.bg)
|
||||
{
|
||||
@ -849,8 +847,7 @@ static void mui_frame(void *data)
|
||||
draw.vertex_count = 4;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL)
|
||||
&& draw.texture)
|
||||
if (!menu_display_libretro_running() && draw.texture)
|
||||
draw.color = &white_bg[0];
|
||||
|
||||
mui_draw_bg(&draw);
|
||||
@ -877,12 +874,12 @@ static void mui_frame(void *data)
|
||||
width, height,
|
||||
&lightblue_bg[0]);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_BIND_BLOCK, &mui->list_block);
|
||||
menu_display_font_bind_block(&mui->list_block);
|
||||
|
||||
mui_render_menu_list(mui, width, height,
|
||||
normal_color, hover_color, &pure_white[0]);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_FLUSH_BLOCK, NULL);
|
||||
menu_display_font_flush_block();
|
||||
menu_animation_ctl(MENU_ANIMATION_CTL_SET_ACTIVE, NULL);
|
||||
|
||||
/* header */
|
||||
@ -994,8 +991,8 @@ static void mui_frame(void *data)
|
||||
width,
|
||||
height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_RESTORE_CLEAR_COLOR, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL);
|
||||
menu_display_restore_clear_color();
|
||||
menu_display_unset_viewport();
|
||||
}
|
||||
|
||||
static void mui_font(void)
|
||||
@ -1005,7 +1002,7 @@ static void mui_font(void)
|
||||
menu_display_ctx_font_t font_info;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
|
||||
font_size = menu_display_get_font_size();
|
||||
|
||||
fill_pathname_join(mediapath, settings->directory.assets,
|
||||
"glui", sizeof(mediapath));
|
||||
@ -1015,7 +1012,7 @@ static void mui_font(void)
|
||||
font_info.path = fontpath;
|
||||
font_info.size = font_size;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_INIT, &font_info))
|
||||
if (!menu_display_font_main_init(&font_info))
|
||||
RARCH_WARN("Failed to load font.");
|
||||
}
|
||||
|
||||
@ -1034,7 +1031,7 @@ static void mui_layout(mui_handle_t *mui)
|
||||
*
|
||||
* On desktops, we just care about readability, with every widget
|
||||
* size proportional to the display width. */
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_GET_DPI, &scale_factor);
|
||||
scale_factor = menu_display_get_dpi();
|
||||
|
||||
new_header_height = scale_factor / 3;
|
||||
new_font_size = scale_factor / 9;
|
||||
@ -1046,17 +1043,15 @@ static void mui_layout(mui_handle_t *mui)
|
||||
mui->margin = scale_factor / 9;
|
||||
mui->icon_size = scale_factor / 3;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT,
|
||||
&new_header_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_SIZE,
|
||||
&new_font_size);
|
||||
menu_display_set_header_height(new_header_height);
|
||||
menu_display_set_font_size(new_font_size);
|
||||
|
||||
/* we assume the average glyph aspect ratio is close to 3:4 */
|
||||
mui->glyph_width = new_font_size * 3/4;
|
||||
|
||||
mui_font();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_BUF, &fb_buf);
|
||||
fb_buf = menu_display_get_font_buffer();
|
||||
|
||||
if (fb_buf) /* calculate a more realistic ticker_limit */
|
||||
{
|
||||
@ -1077,7 +1072,7 @@ static void *mui_init(void **userdata)
|
||||
if (!menu)
|
||||
goto error;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_INIT_FIRST_DRIVER, NULL))
|
||||
if (!menu_display_init_first_driver())
|
||||
goto error;
|
||||
|
||||
mui = (mui_handle_t*)calloc(1, sizeof(mui_handle_t));
|
||||
@ -1131,7 +1126,7 @@ static void mui_context_destroy(void *data)
|
||||
for (i = 0; i < MUI_TEXTURE_LAST; i++)
|
||||
video_driver_texture_unload(&mui->textures.list[i]);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_DEINIT, NULL);
|
||||
menu_display_font_main_deinit();
|
||||
|
||||
mui_context_bg_destroy(mui);
|
||||
}
|
||||
@ -1495,7 +1490,7 @@ static int mui_pointer_tap(void *userdata,
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
if (y < header_height)
|
||||
{
|
||||
|
@ -289,7 +289,7 @@ int generic_menu_iterate(void *data, void *userdata, enum menu_action action)
|
||||
|
||||
if ( action != MENU_ACTION_NOOP
|
||||
|| menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL)
|
||||
|| menu_display_ctl(MENU_DISPLAY_CTL_UPDATE_PENDING, NULL))
|
||||
|| menu_display_get_update_pending())
|
||||
{
|
||||
BIT64_SET(menu->state, MENU_STATE_RENDER_FRAMEBUFFER);
|
||||
}
|
||||
|
@ -180,7 +180,7 @@ void nk_common_device_draw(struct nk_device *dev,
|
||||
glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &last_vbo);
|
||||
#endif
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
#if defined(HAVE_OPENGL) || defined(HAVE_OPENGLES)
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
@ -262,7 +262,7 @@ void nk_common_device_draw(struct nk_device *dev,
|
||||
glBindVertexArray((GLuint)last_vao);
|
||||
#endif
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
//void nk_mem_alloc(nk_handle a, void *old, nk_size b);
|
||||
|
@ -174,15 +174,14 @@ static void nk_menu_frame(void *data)
|
||||
nk_menu_handle_t *nk = (nk_menu_handle_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
bool libretro_running = menu_display_ctl(
|
||||
MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL);
|
||||
bool libretro_running = menu_display_libretro_running();
|
||||
|
||||
if (!nk)
|
||||
return;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||
menu_display_set_viewport();
|
||||
|
||||
nk_input_begin(&nk->ctx);
|
||||
nk_menu_input_gamepad(nk);
|
||||
@ -212,22 +211,19 @@ static void nk_menu_frame(void *data)
|
||||
width,
|
||||
height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_RESTORE_CLEAR_COLOR, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL);
|
||||
menu_display_restore_clear_color();
|
||||
menu_display_unset_viewport();
|
||||
}
|
||||
|
||||
static void nk_menu_layout(nk_menu_handle_t *nk)
|
||||
{
|
||||
void *fb_buf;
|
||||
float scale_factor;
|
||||
unsigned width, height, new_header_height;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_GET_DPI, &scale_factor);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT,
|
||||
&new_header_height);
|
||||
|
||||
scale_factor = menu_display_get_dpi();
|
||||
menu_display_set_header_height(new_header_height);
|
||||
}
|
||||
|
||||
static void nk_menu_init_device(nk_menu_handle_t *nk)
|
||||
@ -285,7 +281,7 @@ static void *nk_menu_init(void **userdata)
|
||||
if (!menu)
|
||||
goto error;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_INIT_FIRST_DRIVER, NULL))
|
||||
if (!menu_display_init_first_driver())
|
||||
goto error;
|
||||
|
||||
nk = (nk_menu_handle_t*)calloc(1, sizeof(nk_menu_handle_t));
|
||||
@ -339,8 +335,7 @@ static void nk_menu_context_destroy(void *data)
|
||||
for (i = 0; i < NK_TEXTURE_LAST; i++)
|
||||
video_driver_texture_unload((uintptr_t*)&nk->textures.list[i]);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_DEINIT, NULL);
|
||||
|
||||
menu_display_font_main_deinit();
|
||||
wimp_context_bg_destroy(nk);
|
||||
}
|
||||
|
||||
|
@ -202,20 +202,16 @@ static void blit_line(int x, int y,
|
||||
const char *message, uint16_t color)
|
||||
{
|
||||
unsigned i, j;
|
||||
size_t pitch = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FB_PITCH, &pitch);
|
||||
size_t pitch = menu_display_get_framebuffer_pitch();
|
||||
|
||||
if (!rgui_framebuf_data)
|
||||
return;
|
||||
|
||||
while (*message)
|
||||
{
|
||||
uint8_t *font_fb = NULL;
|
||||
const uint8_t *font_fb = menu_display_get_font_framebuffer();
|
||||
uint32_t symbol = string_walk(&message);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_FB, &font_fb);
|
||||
|
||||
for (j = 0; j < FONT_HEIGHT; j++)
|
||||
{
|
||||
for (i = 0; i < FONT_WIDTH; i++)
|
||||
@ -244,7 +240,7 @@ static bool init_font(menu_handle_t *menu, const uint8_t *font_bmp_buf)
|
||||
if (!font)
|
||||
return false;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_DATA_INIT, &fb_font_inited);
|
||||
menu_display_set_font_data_init(fb_font_inited);
|
||||
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
@ -254,7 +250,7 @@ static bool init_font(menu_handle_t *menu, const uint8_t *font_bmp_buf)
|
||||
font_bmp_buf + 54 + 3 * (256 * (255 - 16 * y) + 16 * x));
|
||||
}
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_FB, &font);
|
||||
menu_display_set_font_framebuffer(font);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -273,7 +269,7 @@ static bool rguidisp_init_font(menu_handle_t *menu)
|
||||
if (!font_bin_buf)
|
||||
return false;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_FB, &font_bin_buf);
|
||||
menu_display_set_font_framebuffer(font_bin_buf);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -285,9 +281,9 @@ static void rgui_render_background(void)
|
||||
uint16_t *src = NULL;
|
||||
uint16_t *dst = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FB_PITCH, &fb_pitch);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
fb_pitch = menu_display_get_framebuffer_pitch();
|
||||
|
||||
pitch_in_pixels = fb_pitch >> 1;
|
||||
size = fb_pitch * 4;
|
||||
@ -343,9 +339,9 @@ static void rgui_render_messagebox(const char *message)
|
||||
width = 0;
|
||||
glyphs_width = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FB_PITCH, &fb_pitch);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
fb_pitch = menu_display_get_framebuffer_pitch();
|
||||
|
||||
for (i = 0; i < list->size; i++)
|
||||
{
|
||||
@ -403,9 +399,9 @@ static void rgui_blit_cursor(void)
|
||||
int16_t x = menu_input_mouse_state(MENU_MOUSE_X_AXIS);
|
||||
int16_t y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FB_PITCH, &fb_pitch);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
fb_pitch = menu_display_get_framebuffer_pitch();
|
||||
|
||||
rgui_color_rect(fb_pitch, fb_width, fb_height, x, y - 5, 1, 11, 0xFFFF);
|
||||
rgui_color_rect(fb_pitch, fb_width, fb_height, x - 5, y, 11, 1, 0xFFFF);
|
||||
@ -426,7 +422,7 @@ static void rgui_render(void *data)
|
||||
settings_t *settings = config_get_ptr();
|
||||
rgui_t *rgui = (rgui_t*)data;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
msg[0] = '\0';
|
||||
title[0] = '\0';
|
||||
@ -438,7 +434,7 @@ static void rgui_render(void *data)
|
||||
|
||||
if (!rgui->force_redraw)
|
||||
{
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
|
||||
msg_force = menu_display_get_msg_force();
|
||||
|
||||
if (menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL)
|
||||
&& menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL) && !msg_force)
|
||||
@ -447,13 +443,13 @@ static void rgui_render(void *data)
|
||||
if (runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL))
|
||||
return;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_UPDATE_PENDING, NULL))
|
||||
if (!menu_display_get_update_pending())
|
||||
return;
|
||||
}
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FB_PITCH, &fb_pitch);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
fb_pitch = menu_display_get_framebuffer_pitch();
|
||||
|
||||
/* if the framebuffer changed size, recache the background */
|
||||
if (rgui->last_width != fb_width || rgui->last_height != fb_height)
|
||||
@ -463,12 +459,11 @@ static void rgui_render(void *data)
|
||||
rgui->last_height = fb_height;
|
||||
}
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG, NULL);
|
||||
menu_display_set_framebuffer_dirty_flag();
|
||||
menu_animation_ctl(MENU_ANIMATION_CTL_CLEAR_ACTIVE, NULL);
|
||||
|
||||
rgui->force_redraw = false;
|
||||
|
||||
|
||||
if (settings->menu.pointer.enable)
|
||||
{
|
||||
unsigned new_val;
|
||||
@ -574,7 +569,7 @@ static void rgui_render(void *data)
|
||||
datetime.len = sizeof(timedate);
|
||||
datetime.time_mode = 3;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_TIMEDATE, &datetime);
|
||||
menu_display_timedate(&datetime);
|
||||
|
||||
blit_line(
|
||||
RGUI_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE - RGUI_TERM_START_X(fb_width),
|
||||
@ -663,7 +658,7 @@ static void rgui_render(void *data)
|
||||
|
||||
if (settings->menu.mouse.enable
|
||||
&& (settings->video.fullscreen
|
||||
|| !video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL))
|
||||
|| !video_driver_has_windowed())
|
||||
)
|
||||
rgui_blit_cursor();
|
||||
}
|
||||
@ -705,10 +700,10 @@ static void *rgui_init(void **userdata)
|
||||
fb_pitch = fb_width * sizeof(uint16_t);
|
||||
new_font_height = FONT_HEIGHT_STRIDE * 2;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT, &new_font_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FB_PITCH, &fb_pitch);
|
||||
menu_display_set_width(fb_width);
|
||||
menu_display_set_height(fb_height);
|
||||
menu_display_set_header_height(new_font_height);
|
||||
menu_display_set_framebuffer_pitch(fb_pitch);
|
||||
|
||||
start = 0;
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start);
|
||||
@ -736,31 +731,30 @@ error:
|
||||
|
||||
static void rgui_free(void *data)
|
||||
{
|
||||
uint8_t *font_fb;
|
||||
const uint8_t *font_fb;
|
||||
bool fb_font_inited = false;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_DATA_INIT, &fb_font_inited);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_FB, &font_fb);
|
||||
fb_font_inited = menu_display_get_font_data_init();
|
||||
font_fb = menu_display_get_font_framebuffer();
|
||||
|
||||
if (fb_font_inited)
|
||||
free(font_fb);
|
||||
free((void*)font_fb);
|
||||
|
||||
fb_font_inited = false;
|
||||
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_DATA_INIT, &fb_font_inited);
|
||||
menu_display_set_font_data_init(fb_font_inited);
|
||||
}
|
||||
|
||||
static void rgui_set_texture(void)
|
||||
{
|
||||
unsigned fb_width, fb_height;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_GET_FRAMEBUFFER_DIRTY_FLAG, NULL))
|
||||
if (!menu_display_get_framebuffer_dirty_flag())
|
||||
return;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_FRAMEBUFFER_DIRTY_FLAG, NULL);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
|
||||
menu_display_unset_framebuffer_dirty_flag();
|
||||
|
||||
video_driver_set_texture_frame(rgui_framebuf_data,
|
||||
false, fb_width, fb_height, 1.0f);
|
||||
@ -789,8 +783,8 @@ static void rgui_navigation_set(void *data, bool scroll)
|
||||
if (!scroll)
|
||||
return;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
|
||||
if (selection < RGUI_TERM_HEIGHT(fb_width, fb_height) /2)
|
||||
{
|
||||
@ -859,7 +853,7 @@ static int rgui_pointer_tap(void *data,
|
||||
bool scroll = false;
|
||||
|
||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
if (y < header_height)
|
||||
{
|
||||
|
@ -498,6 +498,7 @@ static void xmb_draw_icon(
|
||||
draw.matrix_data = mymat;
|
||||
draw.texture = texture;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
if (settings->menu.xmb_shadows_enable)
|
||||
{
|
||||
@ -510,14 +511,14 @@ static void xmb_draw_icon(
|
||||
draw.x = x + 2;
|
||||
draw.y = height - y - 2;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_draw(&draw);
|
||||
}
|
||||
|
||||
coords.color = (const float*)color;
|
||||
draw.x = x;
|
||||
draw.y = height - y;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_draw(&draw);
|
||||
}
|
||||
|
||||
static void xmb_draw_thumbnail(xmb_handle_t *xmb, float *color,
|
||||
@ -541,7 +542,7 @@ static void xmb_draw_thumbnail(xmb_handle_t *xmb, float *color,
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_ROTATE_Z, &rotate_draw);
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
|
||||
coords.vertices = 4;
|
||||
coords.vertex = NULL;
|
||||
@ -554,6 +555,7 @@ static void xmb_draw_thumbnail(xmb_handle_t *xmb, float *color,
|
||||
draw.matrix_data = &mymat;
|
||||
draw.texture = xmb->thumbnail;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
if (settings->menu.xmb_shadows_enable)
|
||||
{
|
||||
@ -566,14 +568,14 @@ static void xmb_draw_thumbnail(xmb_handle_t *xmb, float *color,
|
||||
draw.x = x + 2;
|
||||
draw.y = height - y - 2;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_draw(&draw);
|
||||
}
|
||||
|
||||
coords.color = (const float*)color;
|
||||
draw.x = x;
|
||||
draw.y = height - y;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_draw(&draw);
|
||||
}
|
||||
|
||||
static void xmb_draw_text(xmb_handle_t *xmb,
|
||||
@ -648,7 +650,7 @@ static void xmb_render_messagebox_internal(
|
||||
if (list->elems == 0)
|
||||
goto end;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
|
||||
font_size = menu_display_get_font_size();
|
||||
|
||||
x = width / 2 - strlen(list->elems[0].data) * font_size / 4;
|
||||
y = height / 2 - list->size * font_size / 2;
|
||||
@ -1638,8 +1640,7 @@ static void xmb_draw_items(xmb_handle_t *xmb,
|
||||
uint64_t *frame_count = NULL;
|
||||
xmb_node_t *core_node = NULL;
|
||||
size_t end = 0;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
if (!list || !list->size)
|
||||
return;
|
||||
@ -1657,14 +1658,14 @@ static void xmb_draw_items(xmb_handle_t *xmb,
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_ROTATE_Z, &rotate_draw);
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i);
|
||||
|
||||
if (list == xmb->selection_buf_old)
|
||||
i = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
for (; i < end; i++)
|
||||
{
|
||||
@ -1824,7 +1825,7 @@ static void xmb_draw_items(xmb_handle_t *xmb,
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_ROTATE_Z, &rotate_draw);
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
|
||||
xmb_draw_icon(
|
||||
xmb->icon.size,
|
||||
@ -1857,7 +1858,7 @@ static void xmb_draw_items(xmb_handle_t *xmb,
|
||||
1, &color[0]);
|
||||
}
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
static void xmb_render(void *data)
|
||||
@ -1931,7 +1932,8 @@ static void xmb_draw_bg(
|
||||
{
|
||||
menu_display_ctx_draw_t draw;
|
||||
settings_t *settings = config_get_ptr();
|
||||
bool running = menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL);
|
||||
|
||||
bool running = menu_display_libretro_running();
|
||||
|
||||
draw.x = 0;
|
||||
draw.y = 0;
|
||||
@ -1943,9 +1945,10 @@ static void xmb_draw_bg(
|
||||
draw.tex_coord = NULL;
|
||||
draw.vertex_count = 4;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||
menu_display_blend_begin();
|
||||
menu_display_set_viewport();
|
||||
|
||||
if (settings->menu.shader_pipeline > 0)
|
||||
{
|
||||
@ -1956,24 +1959,24 @@ static void xmb_draw_bg(
|
||||
else
|
||||
menu_display_set_alpha(draw.color, coord_white[3]);
|
||||
|
||||
menu_display_draw_gradient(&draw);
|
||||
|
||||
draw.pipeline.id = VIDEO_SHADER_MENU_SEC;
|
||||
if (settings->menu.shader_pipeline == 2)
|
||||
draw.pipeline.id = VIDEO_SHADER_MENU;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_GRADIENT, &draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_PIPELINE, &draw);
|
||||
menu_display_draw_pipeline(&draw);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!running && draw.texture)
|
||||
draw.color = &coord_white[0];
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, &draw);
|
||||
menu_display_draw_bg(&draw);
|
||||
}
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
static void xmb_draw_dark_layer(
|
||||
@ -1981,7 +1984,6 @@ static void xmb_draw_dark_layer(
|
||||
unsigned width,
|
||||
unsigned height)
|
||||
{
|
||||
|
||||
menu_display_ctx_draw_t draw;
|
||||
struct gfx_coords coords;
|
||||
float black[16] = {
|
||||
@ -2007,10 +2009,11 @@ static void xmb_draw_dark_layer(
|
||||
draw.matrix_data = NULL;
|
||||
draw.texture = menu_display_white_texture;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_blend_begin();
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
static void xmb_frame(void *data)
|
||||
@ -2036,7 +2039,7 @@ static void xmb_frame(void *data)
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_BIND_BLOCK, &xmb->raster_block);
|
||||
menu_display_font_bind_block(&xmb->raster_block);
|
||||
|
||||
xmb->raster_block.carr.coords.vertices = 0;
|
||||
|
||||
@ -2087,8 +2090,8 @@ static void xmb_frame(void *data)
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_ROTATE_Z, &rotate_draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
menu_display_blend_begin();
|
||||
|
||||
if (strcmp(xmb_thumbnails_ident(), "OFF") && xmb->thumbnail)
|
||||
xmb_draw_thumbnail(xmb, &coord_white[0], width, height);
|
||||
@ -2118,7 +2121,7 @@ static void xmb_frame(void *data)
|
||||
datetime.len = sizeof(timedate);
|
||||
datetime.time_mode = 4;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_TIMEDATE, &datetime);
|
||||
menu_display_timedate(&datetime);
|
||||
|
||||
xmb_draw_text(xmb, timedate,
|
||||
width - xmb->margins.title.left - xmb->icon.size / 4,
|
||||
@ -2145,7 +2148,7 @@ static void xmb_frame(void *data)
|
||||
0,
|
||||
1, &coord_white[0]);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
/* Horizontal tab icons */
|
||||
for (i = 0; i <= xmb_list_get_size(xmb, MENU_LIST_HORIZONTAL)
|
||||
@ -2177,7 +2180,7 @@ static void xmb_frame(void *data)
|
||||
rotate_draw.scale_z = 1;
|
||||
rotate_draw.scale_enable = true;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_ROTATE_Z, &rotate_draw);
|
||||
menu_display_rotate_z(&rotate_draw);
|
||||
|
||||
xmb_draw_icon(
|
||||
xmb->icon.size,
|
||||
@ -2194,7 +2197,7 @@ static void xmb_frame(void *data)
|
||||
}
|
||||
}
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_blend_end();
|
||||
|
||||
/* Vertical icons */
|
||||
xmb_draw_items(xmb,
|
||||
@ -2223,7 +2226,7 @@ static void xmb_frame(void *data)
|
||||
width,
|
||||
height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_FLUSH_BLOCK, NULL);
|
||||
menu_display_font_flush_block();
|
||||
|
||||
menu_input_ctl(MENU_INPUT_CTL_KEYBOARD_DISPLAY, &display_kb);
|
||||
|
||||
@ -2265,7 +2268,7 @@ static void xmb_frame(void *data)
|
||||
width,
|
||||
height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL);
|
||||
menu_display_unset_viewport();
|
||||
}
|
||||
|
||||
|
||||
@ -2277,7 +2280,7 @@ static void xmb_font(xmb_handle_t *xmb)
|
||||
menu_display_ctx_font_t font_info;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
|
||||
font_size = menu_display_get_font_size();
|
||||
|
||||
fill_pathname_join(
|
||||
mediapath,
|
||||
@ -2294,7 +2297,7 @@ static void xmb_font(xmb_handle_t *xmb)
|
||||
font_info.path = fontpath;
|
||||
font_info.size = font_size;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_INIT, &font_info))
|
||||
if (!menu_display_font_main_init(&font_info))
|
||||
RARCH_WARN("Failed to load font.");
|
||||
}
|
||||
|
||||
@ -2341,8 +2344,8 @@ static void xmb_layout(xmb_handle_t *xmb)
|
||||
xmb->margins.setting.left = 600.0 * scale_factor;
|
||||
xmb->icon.size = 128.0 * scale_factor;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_SIZE, &new_font_size);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT, &new_header_height);
|
||||
menu_display_set_font_size(new_font_size);
|
||||
menu_display_set_header_height(new_header_height);
|
||||
|
||||
current = selection;
|
||||
end = menu_entries_get_end();
|
||||
@ -2414,7 +2417,7 @@ static void xmb_init_ribbon(xmb_handle_t * xmb)
|
||||
gfx_coord_array_t *ca = NULL;
|
||||
|
||||
memset(&dummy[0], 0, 4 * XMB_RIBBON_VERTICES * sizeof(float));
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
||||
ca = menu_display_get_coords_array();
|
||||
|
||||
/* Set up vertices */
|
||||
i = 0;
|
||||
@ -2447,7 +2450,7 @@ static void *xmb_init(void **userdata)
|
||||
if (!menu)
|
||||
goto error;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_INIT_FIRST_DRIVER, NULL))
|
||||
if (!menu_display_init_first_driver())
|
||||
goto error;
|
||||
|
||||
video_driver_get_size(&width, &height);
|
||||
@ -2483,8 +2486,8 @@ static void *xmb_init(void **userdata)
|
||||
* for XMB, we should refactor this dependency
|
||||
* away. */
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_WIDTH, &width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEIGHT, &height);
|
||||
menu_display_set_width(width);
|
||||
menu_display_set_height(height);
|
||||
|
||||
menu_display_allocate_white_texture();
|
||||
|
||||
@ -3013,7 +3016,7 @@ static void xmb_context_destroy(void *data)
|
||||
xmb_context_destroy_horizontal_list(xmb);
|
||||
xmb_context_bg_destroy(xmb);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_DEINIT, NULL);
|
||||
menu_display_font_main_deinit();
|
||||
}
|
||||
|
||||
static void xmb_toggle(void *userdata, bool menu_on)
|
||||
@ -3200,7 +3203,7 @@ static int xmb_pointer_tap(void *userdata,
|
||||
bool scroll = false;
|
||||
|
||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
if (y < header_height)
|
||||
{
|
||||
|
@ -417,7 +417,7 @@ static void xui_frame(void *data)
|
||||
if (!d3dr)
|
||||
return;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||
menu_display_set_viewport();
|
||||
|
||||
app.RunFrame();
|
||||
XuiTimersRun();
|
||||
@ -445,7 +445,7 @@ static void xui_frame(void *data)
|
||||
|
||||
XuiRenderEnd( app.GetDC() );
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL);
|
||||
menu_display_unset_viewport();
|
||||
}
|
||||
|
||||
static void blit_line(int x, int y, const char *message, bool green)
|
||||
@ -454,7 +454,7 @@ static void blit_line(int x, int y, const char *message, bool green)
|
||||
|
||||
static void xui_render_background(void)
|
||||
{
|
||||
if (menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL))
|
||||
if (menu_display_libretro_running())
|
||||
XuiElementSetShow(m_background, FALSE);
|
||||
else
|
||||
XuiElementSetShow(m_background, TRUE);
|
||||
@ -534,10 +534,10 @@ static void xui_render(void *data)
|
||||
const char *label = NULL;
|
||||
unsigned menu_type = 0;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_MSG_FORCE, &msg_force);
|
||||
fb_width = menu_display_get_width();
|
||||
msg_force = menu_display_get_msg_force();
|
||||
|
||||
if (
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL)
|
||||
@ -546,7 +546,7 @@ static void xui_render(void *data)
|
||||
)
|
||||
return;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_FRAMEBUFFER_DIRTY_FLAG, NULL);
|
||||
menu_display_unset_framebuffer_dirty_flag();
|
||||
menu_animation_ctl(MENU_ANIMATION_CTL_CLEAR_ACTIVE, NULL);
|
||||
|
||||
xui_render_background();
|
||||
|
@ -174,7 +174,7 @@ static void zarch_zui_font(void)
|
||||
menu_display_ctx_font_t font_info;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_SIZE, &font_size);
|
||||
font_size = menu_display_get_font_size();
|
||||
|
||||
fill_pathname_join(
|
||||
mediapath,
|
||||
@ -187,7 +187,7 @@ static void zarch_zui_font(void)
|
||||
font_info.path = fontpath;
|
||||
font_info.size = font_size;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_INIT, &font_info))
|
||||
if (!menu_display_font_main_init(&font_info))
|
||||
RARCH_WARN("Failed to load font.");
|
||||
}
|
||||
|
||||
@ -348,8 +348,7 @@ static bool zarch_zui_list_item(zui_t *zui, struct zui_tabbed *tab, int x1, int
|
||||
int y2 = y1 + 50;
|
||||
bool active = zarch_zui_check_button_up(zui, id, x1, y1, x2, y2);
|
||||
const float *bg = zui_bg_panel;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
frame_count = video_driver_get_frame_count_ptr();
|
||||
|
||||
if (tab->active_id != tab->prev_id)
|
||||
{
|
||||
@ -874,15 +873,15 @@ static void zarch_frame(void *data)
|
||||
zui_t *zui = (zui_t*)data;
|
||||
gfx_coord_array_t *ca = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
||||
ca = menu_display_get_coords_array();
|
||||
|
||||
if (!zui)
|
||||
return;
|
||||
|
||||
video_driver_get_size(&zui->width, &zui->height);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_VIEWPORT, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_BUF, &zui->fb_buf);
|
||||
menu_display_set_viewport();
|
||||
zui->fb_buf = menu_display_get_font_buffer();
|
||||
|
||||
for (i = 0; i < 16; i++)
|
||||
{
|
||||
@ -904,11 +903,11 @@ static void zarch_frame(void *data)
|
||||
zui->mouse.wheel = menu_input_mouse_state(MENU_MOUSE_WHEEL_DOWN) -
|
||||
menu_input_mouse_state(MENU_MOUSE_WHEEL_UP);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_RESET, NULL);
|
||||
menu_display_coords_array_reset();
|
||||
|
||||
zui->tmp_block.carr.coords.vertices = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_BIND_BLOCK, &zui->tmp_block);
|
||||
menu_display_font_bind_block(&zui->tmp_block);
|
||||
|
||||
menu_display_push_quad(zui->width, zui->height, zui_bg_screen,
|
||||
0, 0, zui->width, zui->height);
|
||||
@ -944,7 +943,7 @@ static void zarch_frame(void *data)
|
||||
else if (zui->item.active == 0)
|
||||
zui->item.active = -1;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
draw.x = 0;
|
||||
draw.y = 0;
|
||||
@ -954,16 +953,16 @@ static void zarch_frame(void *data)
|
||||
draw.matrix_data = &zui->mvp;
|
||||
draw.texture = menu_display_white_texture;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLES;
|
||||
draw.pipeline.id = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
|
||||
memset(&draw, 0, sizeof(menu_display_ctx_draw_t));
|
||||
|
||||
coord_draw.ptr = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_TEX_COORDS_GET, &coord_draw);
|
||||
menu_display_get_tex_coords(&coord_draw);
|
||||
|
||||
draw.width = zui->width;
|
||||
draw.height = zui->height;
|
||||
@ -974,21 +973,20 @@ static void zarch_frame(void *data)
|
||||
draw.vertex_count = 4;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL)
|
||||
&& draw.texture)
|
||||
if (!menu_display_libretro_running() && draw.texture)
|
||||
draw.color = &coord_color2[0];
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
draw.x = 0;
|
||||
draw.y = 0;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, &draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_draw_bg(&draw);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
|
||||
zui->rendering = false;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_FLUSH_BLOCK, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_UNSET_VIEWPORT, NULL);
|
||||
menu_display_font_flush_block();
|
||||
menu_display_unset_viewport();
|
||||
}
|
||||
|
||||
static void *zarch_init(void **userdata)
|
||||
@ -1002,7 +1000,7 @@ static void *zarch_init(void **userdata)
|
||||
if (!menu)
|
||||
goto error;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_INIT_FIRST_DRIVER, NULL))
|
||||
if (!menu_display_init_first_driver())
|
||||
goto error;
|
||||
|
||||
zui = (zui_t*)calloc(1, sizeof(zui_t));
|
||||
@ -1019,10 +1017,10 @@ static void *zarch_init(void **userdata)
|
||||
}
|
||||
|
||||
unused = 1000;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_HEADER_HEIGHT, &unused);
|
||||
menu_display_set_header_height(unused);
|
||||
|
||||
unused = 28;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_SIZE, &unused);
|
||||
menu_display_set_font_size(unused);
|
||||
|
||||
(void)unused;
|
||||
|
||||
@ -1066,7 +1064,7 @@ static void zarch_context_bg_destroy(void *data)
|
||||
|
||||
static void zarch_context_destroy(void *data)
|
||||
{
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_DEINIT, NULL);
|
||||
menu_display_font_main_deinit();
|
||||
zarch_context_bg_destroy(data);
|
||||
}
|
||||
|
||||
@ -1110,7 +1108,7 @@ static void zarch_context_reset(void *data)
|
||||
if (settings->video.font_enable)
|
||||
font_info.path = settings->path.font;
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_INIT, &font_info))
|
||||
if (!menu_display_font_main_init(&font_info))
|
||||
RARCH_WARN("Failed to load font.");
|
||||
|
||||
zarch_context_bg_destroy(zui);
|
||||
@ -1120,7 +1118,7 @@ static void zarch_context_reset(void *data)
|
||||
|
||||
menu_display_allocate_white_texture();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FONT_SIZE, &zui->font_size);
|
||||
menu_display_set_font_size(zui->font_size);
|
||||
zarch_zui_font();
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ static void menu_display_d3d_draw_pipeline(void *data)
|
||||
static float t = 0;
|
||||
gfx_coord_array_t *ca = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
||||
ca = menu_display_get_coords_array();
|
||||
|
||||
draw->x = 0;
|
||||
draw->y = 0;
|
||||
|
@ -160,7 +160,7 @@ static void menu_display_gl_draw_pipeline(void *data)
|
||||
static float t = 0;
|
||||
gfx_coord_array_t *ca = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
||||
ca = menu_display_get_coords_array();
|
||||
|
||||
draw->x = 0;
|
||||
draw->y = 0;
|
||||
|
@ -20,6 +20,7 @@
|
||||
#include "../../gfx/font_driver.h"
|
||||
#include "../../gfx/video_context_driver.h"
|
||||
#include "../../gfx/common/vulkan_common.h"
|
||||
#include "../../gfx/video_shader_driver.h"
|
||||
|
||||
#include "../menu_display.h"
|
||||
|
||||
@ -61,6 +62,20 @@ static unsigned to_display_pipeline(
|
||||
return ((type == MENU_DISPLAY_PRIM_TRIANGLESTRIP) << 1) | (blend << 0);
|
||||
}
|
||||
|
||||
static unsigned to_menu_pipeline(
|
||||
enum menu_display_prim_type type, unsigned pipeline)
|
||||
{
|
||||
switch (pipeline)
|
||||
{
|
||||
case VIDEO_SHADER_MENU:
|
||||
return 4 + (type == MENU_DISPLAY_PRIM_TRIANGLESTRIP);
|
||||
case VIDEO_SHADER_MENU_SEC:
|
||||
return 6 + (type == MENU_DISPLAY_PRIM_TRIANGLESTRIP);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void menu_display_vk_viewport(void *data)
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
@ -81,14 +96,20 @@ static void menu_display_vk_draw_pipeline(void *data)
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
vk_t *vk = (vk_t*)video_driver_get_ptr(false);
|
||||
gfx_coord_array_t *ca = NULL;
|
||||
static float t = 0.0f;
|
||||
|
||||
if (!vk || !draw)
|
||||
return;
|
||||
|
||||
(void)draw;
|
||||
(void)vk;
|
||||
ca = menu_display_get_coords_array();
|
||||
draw->x = 0;
|
||||
draw->y = 0;
|
||||
draw->coords = (struct gfx_coords*)&ca->coords;
|
||||
draw->matrix_data = NULL;
|
||||
draw->pipeline.backend_data = &t;
|
||||
|
||||
/* TODO/FIXME - to implement */
|
||||
t += 0.01;
|
||||
}
|
||||
|
||||
static void menu_display_vk_draw(void *data)
|
||||
@ -142,6 +163,26 @@ static void menu_display_vk_draw(void *data)
|
||||
pv->color.a = *color++;
|
||||
}
|
||||
|
||||
switch (draw->pipeline.id)
|
||||
{
|
||||
case VIDEO_SHADER_MENU:
|
||||
case VIDEO_SHADER_MENU_SEC:
|
||||
{
|
||||
const struct vk_draw_triangles call = {
|
||||
vk->display.pipelines[
|
||||
to_menu_pipeline(draw->prim_type, draw->pipeline.id)],
|
||||
NULL,
|
||||
VK_NULL_HANDLE,
|
||||
draw->pipeline.backend_data,
|
||||
sizeof(float),
|
||||
&range,
|
||||
draw->coords->vertices,
|
||||
};
|
||||
vulkan_draw_triangles(vk, &call);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
const struct vk_draw_triangles call = {
|
||||
vk->display.pipelines[
|
||||
@ -149,12 +190,15 @@ static void menu_display_vk_draw(void *data)
|
||||
texture,
|
||||
texture->default_smooth
|
||||
? vk->samplers.linear : vk->samplers.nearest,
|
||||
draw->matrix_data ? (math_matrix_4x4*)draw->matrix_data
|
||||
: (math_matrix_4x4*)menu_display_vk_get_default_mvp(),
|
||||
draw->matrix_data
|
||||
? draw->matrix_data : menu_display_vk_get_default_mvp(),
|
||||
sizeof(math_matrix_4x4),
|
||||
&range,
|
||||
draw->coords->vertices,
|
||||
};
|
||||
vulkan_draw_triangles(vk, &call);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -89,12 +89,11 @@ static bool menu_content_load(void)
|
||||
content_ctx_info_t content_info;
|
||||
char name[PATH_MAX_LENGTH];
|
||||
char msg[PATH_MAX_LENGTH];
|
||||
bool msg_force = true;
|
||||
char *fullpath = NULL;
|
||||
|
||||
runloop_ctl(RUNLOOP_CTL_GET_CONTENT_PATH, &fullpath);
|
||||
/* redraw menu frame */
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||
menu_display_set_msg_force(true);
|
||||
menu_driver_ctl(RARCH_MENU_CTL_RENDER, NULL);
|
||||
|
||||
if (*fullpath)
|
||||
|
@ -92,11 +92,9 @@ static bool menu_display_check_compatibility(
|
||||
return false;
|
||||
}
|
||||
|
||||
static void menu_display_timedate(void *data)
|
||||
void menu_display_timedate(menu_display_ctx_datetime_t *datetime)
|
||||
{
|
||||
time_t time_;
|
||||
menu_display_ctx_datetime_t *datetime =
|
||||
(menu_display_ctx_datetime_t *)data;
|
||||
|
||||
if (!datetime)
|
||||
return;
|
||||
@ -128,49 +126,45 @@ static void menu_display_timedate(void *data)
|
||||
}
|
||||
}
|
||||
|
||||
static gfx_coord_array_t menu_disp_ca;
|
||||
static unsigned menu_display_framebuf_width = 0;
|
||||
static unsigned menu_display_framebuf_height = 0;
|
||||
static size_t menu_display_framebuf_pitch = 0;
|
||||
static int menu_display_font_size = 0;
|
||||
static unsigned menu_display_header_height = 0;
|
||||
static bool menu_display_msg_force = false;
|
||||
static bool menu_display_font_alloc_framebuf = false;
|
||||
static bool menu_display_framebuf_dirty = false;
|
||||
static const uint8_t *menu_display_font_framebuf = NULL;
|
||||
static void *menu_display_font_buf = NULL;
|
||||
static msg_queue_t *menu_display_msg_queue = NULL;
|
||||
static menu_display_ctx_driver_t *menu_disp = NULL;
|
||||
|
||||
bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
void menu_display_blend_begin(void)
|
||||
{
|
||||
unsigned width, height;
|
||||
static gfx_coord_array_t menu_disp_ca;
|
||||
static unsigned menu_display_framebuf_width = 0;
|
||||
static unsigned menu_display_framebuf_height = 0;
|
||||
static size_t menu_display_framebuf_pitch = 0;
|
||||
static int menu_display_font_size = 0;
|
||||
static unsigned menu_display_header_height = 0;
|
||||
static bool menu_display_msg_force = false;
|
||||
static bool menu_display_font_alloc_framebuf = false;
|
||||
static bool menu_display_framebuf_dirty = false;
|
||||
static const uint8_t *menu_display_font_framebuf = NULL;
|
||||
static void *menu_display_font_buf = NULL;
|
||||
static msg_queue_t *menu_display_msg_queue = NULL;
|
||||
static menu_display_ctx_driver_t *menu_disp = NULL;
|
||||
settings_t *settings = config_get_ptr();
|
||||
|
||||
switch (state)
|
||||
{
|
||||
case MENU_DISPLAY_CTL_BLEND_BEGIN:
|
||||
if (!menu_disp || !menu_disp->blend_begin)
|
||||
return false;
|
||||
return;
|
||||
menu_disp->blend_begin();
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_BLEND_END:
|
||||
}
|
||||
|
||||
void menu_display_blend_end(void)
|
||||
{
|
||||
if (!menu_disp || !menu_disp->blend_end)
|
||||
return false;
|
||||
return;
|
||||
menu_disp->blend_end();
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_MAIN_DEINIT:
|
||||
}
|
||||
|
||||
void menu_display_font_main_deinit(void)
|
||||
{
|
||||
if (menu_display_font_buf)
|
||||
font_driver_free(menu_display_font_buf);
|
||||
menu_display_font_buf = NULL;
|
||||
menu_display_font_size = 0;
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_MAIN_INIT:
|
||||
{
|
||||
menu_display_ctx_font_t *font = (menu_display_ctx_font_t*)data;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_MAIN_DEINIT, NULL);
|
||||
}
|
||||
|
||||
bool menu_display_font_main_init(menu_display_ctx_font_t *font)
|
||||
{
|
||||
menu_display_font_main_deinit();
|
||||
if (!font || !menu_disp)
|
||||
return false;
|
||||
|
||||
@ -183,24 +177,33 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
return false;
|
||||
|
||||
menu_display_font_size = font->size;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_BIND_BLOCK:
|
||||
font_driver_bind_block(menu_display_font_buf, data);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_FLUSH_BLOCK:
|
||||
return true;
|
||||
}
|
||||
|
||||
void menu_display_font_bind_block(void *block)
|
||||
{
|
||||
font_driver_bind_block(menu_display_font_buf, block);
|
||||
}
|
||||
|
||||
bool menu_display_font_flush_block(void)
|
||||
{
|
||||
if (!menu_display_font_buf)
|
||||
return false;
|
||||
|
||||
font_driver_flush(menu_display_font_buf);
|
||||
font_driver_bind_block(menu_display_font_buf, NULL);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FRAMEBUF_DEINIT:
|
||||
return true;
|
||||
}
|
||||
|
||||
void menu_display_framebuffer_deinit(void)
|
||||
{
|
||||
menu_display_framebuf_width = 0;
|
||||
menu_display_framebuf_height = 0;
|
||||
menu_display_framebuf_pitch = 0;
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_DEINIT:
|
||||
}
|
||||
|
||||
void menu_display_deinit(void)
|
||||
{
|
||||
if (menu_display_msg_queue)
|
||||
msg_queue_free(menu_display_msg_queue);
|
||||
gfx_coord_array_free(&menu_disp_ca);
|
||||
@ -210,69 +213,63 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
menu_disp = NULL;
|
||||
|
||||
menu_animation_ctl(MENU_ANIMATION_CTL_DEINIT, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FRAMEBUF_DEINIT, NULL);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_INIT:
|
||||
menu_display_framebuffer_deinit();
|
||||
}
|
||||
|
||||
bool menu_display_init(void)
|
||||
{
|
||||
retro_assert(menu_display_msg_queue = msg_queue_new(8));
|
||||
menu_disp_ca.allocated = 0;
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_COORDS_ARRAY_RESET:
|
||||
return true;
|
||||
}
|
||||
|
||||
void menu_display_coords_array_reset(void)
|
||||
{
|
||||
menu_disp_ca.coords.vertices = 0;
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_COORDS_ARRAY_GET:
|
||||
{
|
||||
void **ptr = (void**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = &menu_disp_ca;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_STUB_DRAW_FRAME:
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_UNSET_STUB_DRAW_FRAME:
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_BUF:
|
||||
{
|
||||
void **ptr = (void**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_font_buf;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_FONT_BUF:
|
||||
{
|
||||
void **ptr = (void**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_font_buf = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_FB:
|
||||
{
|
||||
uint8_t **ptr = (uint8_t**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = (uint8_t*)menu_display_font_framebuf;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_FONT_FB:
|
||||
{
|
||||
uint8_t **ptr = (uint8_t**)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_font_framebuf = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_LIBRETRO_RUNNING:
|
||||
}
|
||||
|
||||
gfx_coord_array_t *menu_display_get_coords_array(void)
|
||||
{
|
||||
return &menu_disp_ca;
|
||||
}
|
||||
|
||||
void *menu_display_get_font_buffer(void)
|
||||
{
|
||||
return menu_display_font_buf;
|
||||
}
|
||||
|
||||
void menu_display_set_font_buffer(void *buffer)
|
||||
{
|
||||
menu_display_font_buf = buffer;
|
||||
}
|
||||
|
||||
const uint8_t *menu_display_get_font_framebuffer(void)
|
||||
{
|
||||
return menu_display_font_framebuf;
|
||||
}
|
||||
|
||||
void menu_display_set_font_framebuffer(const uint8_t *buffer)
|
||||
{
|
||||
menu_display_font_framebuf = buffer;
|
||||
}
|
||||
|
||||
bool menu_display_libretro_running(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (!settings->menu.pause_libretro)
|
||||
{
|
||||
if (rarch_ctl(RARCH_CTL_IS_INITED, NULL)
|
||||
&& !rarch_ctl(RARCH_CTL_IS_DUMMY_CORE, NULL))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case MENU_DISPLAY_CTL_LIBRETRO:
|
||||
}
|
||||
|
||||
bool menu_display_libretro(void)
|
||||
{
|
||||
video_driver_set_texture_enable(true, false);
|
||||
|
||||
if (menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO_RUNNING, NULL))
|
||||
if (menu_display_libretro_running())
|
||||
{
|
||||
bool libretro_input_is_blocked =
|
||||
input_driver_ctl(
|
||||
@ -289,166 +286,139 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
return true;
|
||||
}
|
||||
|
||||
return video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
case MENU_DISPLAY_CTL_SET_WIDTH:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_framebuf_width = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_WIDTH:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_framebuf_width;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_HEIGHT:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_framebuf_height;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_HEADER_HEIGHT:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_header_height;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_HEADER_HEIGHT:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_header_height = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_SIZE:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_font_size;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_FONT_SIZE:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_font_size = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_HEIGHT:
|
||||
{
|
||||
unsigned *ptr = (unsigned*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_framebuf_height = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FB_PITCH:
|
||||
{
|
||||
size_t *ptr = (size_t*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_framebuf_pitch;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_FB_PITCH:
|
||||
{
|
||||
size_t *ptr = (size_t*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_framebuf_pitch = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_MSG_FORCE:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_msg_force;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_SET_MSG_FORCE:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_msg_force = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_FONT_DATA_INIT:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
*ptr = menu_display_font_alloc_framebuf;
|
||||
}
|
||||
return true;
|
||||
case MENU_DISPLAY_CTL_SET_FONT_DATA_INIT:
|
||||
{
|
||||
bool *ptr = (bool*)data;
|
||||
if (!ptr)
|
||||
return false;
|
||||
menu_display_font_alloc_framebuf = *ptr;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_UPDATE_PENDING:
|
||||
{
|
||||
return video_driver_cached_frame_render();
|
||||
}
|
||||
|
||||
void menu_display_set_width(unsigned width)
|
||||
{
|
||||
menu_display_framebuf_width = width;
|
||||
}
|
||||
|
||||
unsigned menu_display_get_width(void)
|
||||
{
|
||||
return menu_display_framebuf_width;
|
||||
}
|
||||
|
||||
void menu_display_set_height(unsigned height)
|
||||
{
|
||||
menu_display_framebuf_height = height;
|
||||
}
|
||||
|
||||
unsigned menu_display_get_height(void)
|
||||
{
|
||||
return menu_display_framebuf_height;
|
||||
}
|
||||
|
||||
void menu_display_set_header_height(unsigned height)
|
||||
{
|
||||
menu_display_header_height = height;
|
||||
}
|
||||
|
||||
unsigned menu_display_get_header_height(void)
|
||||
{
|
||||
return menu_display_header_height;
|
||||
}
|
||||
|
||||
unsigned menu_display_get_font_size(void)
|
||||
{
|
||||
return menu_display_font_size;
|
||||
}
|
||||
|
||||
void menu_display_set_font_size(unsigned size)
|
||||
{
|
||||
menu_display_font_size = size;
|
||||
}
|
||||
|
||||
size_t menu_display_get_framebuffer_pitch(void)
|
||||
{
|
||||
return menu_display_framebuf_pitch;
|
||||
}
|
||||
|
||||
void menu_display_set_framebuffer_pitch(size_t pitch)
|
||||
{
|
||||
menu_display_framebuf_pitch = pitch;
|
||||
}
|
||||
|
||||
bool menu_display_get_msg_force(void)
|
||||
{
|
||||
return menu_display_msg_force;
|
||||
}
|
||||
|
||||
void menu_display_set_msg_force(bool state)
|
||||
{
|
||||
menu_display_msg_force = state;
|
||||
}
|
||||
|
||||
bool menu_display_get_font_data_init(void)
|
||||
{
|
||||
return menu_display_font_alloc_framebuf;
|
||||
}
|
||||
|
||||
void menu_display_set_font_data_init(bool state)
|
||||
{
|
||||
menu_display_font_alloc_framebuf = state;
|
||||
}
|
||||
|
||||
bool menu_display_get_update_pending(void)
|
||||
{
|
||||
if (menu_animation_ctl(MENU_ANIMATION_CTL_IS_ACTIVE, NULL))
|
||||
return true;
|
||||
if (menu_display_ctl(
|
||||
MENU_DISPLAY_CTL_GET_FRAMEBUFFER_DIRTY_FLAG, NULL))
|
||||
if (menu_display_get_framebuffer_dirty_flag())
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
case MENU_DISPLAY_CTL_SET_VIEWPORT:
|
||||
}
|
||||
|
||||
void menu_display_set_viewport(void)
|
||||
{
|
||||
unsigned width, height;
|
||||
video_driver_get_size(&width, &height);
|
||||
video_driver_set_viewport(width,
|
||||
height, true, false);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_UNSET_VIEWPORT:
|
||||
video_driver_set_viewport(width, height, true, false);
|
||||
}
|
||||
|
||||
void menu_display_unset_viewport(void)
|
||||
{
|
||||
unsigned width, height;
|
||||
video_driver_get_size(&width, &height);
|
||||
video_driver_set_viewport(width,
|
||||
height, false, true);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_GET_FRAMEBUFFER_DIRTY_FLAG:
|
||||
video_driver_set_viewport(width, height, false, true);
|
||||
}
|
||||
|
||||
bool menu_display_get_framebuffer_dirty_flag(void)
|
||||
{
|
||||
return menu_display_framebuf_dirty;
|
||||
case MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG:
|
||||
}
|
||||
|
||||
void menu_display_set_framebuffer_dirty_flag(void)
|
||||
{
|
||||
menu_display_framebuf_dirty = true;
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_UNSET_FRAMEBUFFER_DIRTY_FLAG:
|
||||
}
|
||||
|
||||
void menu_display_unset_framebuffer_dirty_flag(void)
|
||||
{
|
||||
menu_display_framebuf_dirty = false;
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_GET_DPI:
|
||||
{
|
||||
}
|
||||
|
||||
float menu_display_get_dpi(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
gfx_ctx_metrics_t metrics;
|
||||
float *dpi = (float*)data;
|
||||
*dpi = menu_dpi_override_value;
|
||||
float dpi = menu_dpi_override_value;
|
||||
|
||||
if (!settings)
|
||||
return true;
|
||||
|
||||
metrics.type = DISPLAY_METRIC_DPI;
|
||||
metrics.value = dpi;
|
||||
metrics.value = &dpi;
|
||||
|
||||
if (settings->menu.dpi.override_enable)
|
||||
*dpi = settings->menu.dpi.override_value;
|
||||
else if (!gfx_ctx_ctl(GFX_CTL_GET_METRICS, &metrics) || !*dpi)
|
||||
*dpi = menu_dpi_override_value;
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_INIT_FIRST_DRIVER:
|
||||
{
|
||||
return settings->menu.dpi.override_value;
|
||||
else if (!gfx_ctx_ctl(GFX_CTL_GET_METRICS, &metrics) || !dpi)
|
||||
return menu_dpi_override_value;
|
||||
|
||||
return dpi;
|
||||
}
|
||||
|
||||
bool menu_display_init_first_driver(void)
|
||||
{
|
||||
unsigned i;
|
||||
|
||||
for (i = 0; menu_display_ctx_drivers[i]; i++)
|
||||
@ -462,46 +432,50 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
menu_disp = menu_display_ctx_drivers[i];
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
case MENU_DISPLAY_CTL_RESTORE_CLEAR_COLOR:
|
||||
}
|
||||
|
||||
bool menu_display_restore_clear_color(void)
|
||||
{
|
||||
if (!menu_disp || !menu_disp->restore_clear_color)
|
||||
return false;
|
||||
menu_disp->restore_clear_color();
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_CLEAR_COLOR:
|
||||
return true;
|
||||
}
|
||||
|
||||
void menu_display_clear_color(menu_display_ctx_clearcolor_t *color)
|
||||
{
|
||||
if (!menu_disp || !menu_disp->clear_color)
|
||||
return false;
|
||||
menu_disp->clear_color((menu_display_ctx_clearcolor_t*)data);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_DRAW:
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
return;
|
||||
menu_disp->clear_color(color);
|
||||
}
|
||||
|
||||
void menu_display_draw(menu_display_ctx_draw_t *draw)
|
||||
{
|
||||
if (!menu_disp || !draw || !menu_disp->draw)
|
||||
return false;
|
||||
return;
|
||||
|
||||
/* TODO - edge case */
|
||||
if (draw->height <= 0)
|
||||
draw->height = 1;
|
||||
|
||||
menu_disp->draw(draw);
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_DRAW_PIPELINE:
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
}
|
||||
|
||||
void menu_display_draw_pipeline(menu_display_ctx_draw_t *draw)
|
||||
{
|
||||
if (!menu_disp || !draw || !menu_disp->draw_pipeline)
|
||||
return false;
|
||||
return;
|
||||
menu_disp->draw_pipeline(draw);
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_DRAW_BG:
|
||||
{
|
||||
}
|
||||
|
||||
void menu_display_draw_bg(menu_display_ctx_draw_t *draw)
|
||||
{
|
||||
struct gfx_coords coords;
|
||||
const float *new_vertex = NULL;
|
||||
const float *new_tex_coord = NULL;
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
if (!menu_disp || !draw)
|
||||
return false;
|
||||
return;
|
||||
|
||||
new_vertex = draw->vertex;
|
||||
new_tex_coord = draw->tex_coord;
|
||||
@ -523,29 +497,25 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
draw->texture = menu_display_white_texture;
|
||||
|
||||
draw->matrix_data = (math_matrix_4x4*)menu_disp->get_default_mvp();
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_DRAW_GRADIENT:
|
||||
{
|
||||
menu_display_ctx_draw_t *draw = (menu_display_ctx_draw_t*)data;
|
||||
}
|
||||
|
||||
void menu_display_draw_gradient(menu_display_ctx_draw_t *draw)
|
||||
{
|
||||
draw->texture = 0;
|
||||
draw->x = 0;
|
||||
draw->y = 0;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW_BG, draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, draw);
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_ROTATE_Z:
|
||||
{
|
||||
menu_display_draw_bg(draw);
|
||||
menu_display_draw(draw);
|
||||
}
|
||||
|
||||
void menu_display_rotate_z(menu_display_ctx_rotate_draw_t *draw)
|
||||
{
|
||||
math_matrix_4x4 matrix_rotated, matrix_scaled;
|
||||
math_matrix_4x4 *b = NULL;
|
||||
menu_display_ctx_rotate_draw_t *draw =
|
||||
(menu_display_ctx_rotate_draw_t*)data;
|
||||
|
||||
if (!draw || !menu_disp || !menu_disp->get_default_mvp)
|
||||
return false;
|
||||
return;
|
||||
|
||||
b = (math_matrix_4x4*)menu_disp->get_default_mvp();
|
||||
|
||||
@ -553,17 +523,15 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
matrix_4x4_multiply(draw->matrix, &matrix_rotated, b);
|
||||
|
||||
if (!draw->scale_enable)
|
||||
return false;
|
||||
return;
|
||||
|
||||
matrix_4x4_scale(&matrix_scaled,
|
||||
draw->scale_x, draw->scale_y, draw->scale_z);
|
||||
matrix_4x4_multiply(draw->matrix, &matrix_scaled, draw->matrix);
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_TEX_COORDS_GET:
|
||||
{
|
||||
menu_display_ctx_coord_draw_t *draw =
|
||||
(menu_display_ctx_coord_draw_t*)data;
|
||||
}
|
||||
|
||||
bool menu_display_get_tex_coords(menu_display_ctx_coord_draw_t *draw)
|
||||
{
|
||||
if (!draw)
|
||||
return false;
|
||||
|
||||
@ -571,16 +539,6 @@ bool menu_display_ctl(enum menu_display_ctl_state state, void *data)
|
||||
return false;
|
||||
|
||||
draw->ptr = menu_disp->get_default_tex_coords();
|
||||
}
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_TIMEDATE:
|
||||
menu_display_timedate(data);
|
||||
break;
|
||||
case MENU_DISPLAY_CTL_NONE:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -619,9 +577,9 @@ void menu_display_draw_cursor(
|
||||
struct gfx_coords coords;
|
||||
settings_t *settings = config_get_ptr();
|
||||
bool cursor_visible = settings->video.fullscreen ||
|
||||
!video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL);
|
||||
!video_driver_has_windowed();
|
||||
|
||||
if ( !settings->menu.mouse.enable)
|
||||
if (!settings->menu.mouse.enable)
|
||||
return;
|
||||
if (!cursor_visible)
|
||||
return;
|
||||
@ -632,7 +590,7 @@ void menu_display_draw_cursor(
|
||||
coords.lut_tex_coord = NULL;
|
||||
coords.color = (const float*)color;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_BEGIN, NULL);
|
||||
menu_display_blend_begin();
|
||||
|
||||
draw.x = x - (cursor_size / 2);
|
||||
draw.y = (int)height - y - (cursor_size / 2);
|
||||
@ -643,8 +601,8 @@ void menu_display_draw_cursor(
|
||||
draw.texture = texture;
|
||||
draw.prim_type = MENU_DISPLAY_PRIM_TRIANGLESTRIP;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DRAW, &draw);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_BLEND_END, NULL);
|
||||
menu_display_draw(&draw);
|
||||
menu_display_blend_end();
|
||||
}
|
||||
|
||||
static INLINE float menu_display_scalef(float val,
|
||||
@ -668,7 +626,7 @@ void menu_display_push_quad(
|
||||
float vertex[8];
|
||||
gfx_coord_array_t *ca = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_COORDS_ARRAY_GET, &ca);
|
||||
ca = menu_display_get_coords_array();
|
||||
|
||||
vertex[0] = x1 / (float)width;
|
||||
vertex[1] = y1 / (float)height;
|
||||
@ -681,7 +639,7 @@ void menu_display_push_quad(
|
||||
|
||||
coord_draw.ptr = NULL;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_TEX_COORDS_GET, &coord_draw);
|
||||
menu_display_get_tex_coords(&coord_draw);
|
||||
|
||||
coords.color = colors;
|
||||
coords.vertex = vertex;
|
||||
@ -794,8 +752,7 @@ void menu_display_draw_text(const char *msg,
|
||||
params->x = params->x;
|
||||
params->y = params->y;
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_FONT_BUF, &fb_buf);
|
||||
|
||||
fb_buf = menu_display_get_font_buffer();
|
||||
video_driver_set_osd_msg(msg, params, fb_buf);
|
||||
}
|
||||
|
||||
|
@ -29,61 +29,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum menu_display_ctl_state
|
||||
{
|
||||
MENU_DISPLAY_CTL_NONE = 0,
|
||||
MENU_DISPLAY_CTL_SET_VIEWPORT,
|
||||
MENU_DISPLAY_CTL_UNSET_VIEWPORT,
|
||||
MENU_DISPLAY_CTL_GET_FRAMEBUFFER_DIRTY_FLAG,
|
||||
MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG,
|
||||
MENU_DISPLAY_CTL_UNSET_FRAMEBUFFER_DIRTY_FLAG,
|
||||
MENU_DISPLAY_CTL_GET_DPI,
|
||||
MENU_DISPLAY_CTL_UPDATE_PENDING,
|
||||
MENU_DISPLAY_CTL_WIDTH,
|
||||
MENU_DISPLAY_CTL_HEIGHT,
|
||||
MENU_DISPLAY_CTL_HEADER_HEIGHT,
|
||||
MENU_DISPLAY_CTL_SET_HEADER_HEIGHT,
|
||||
MENU_DISPLAY_CTL_SET_WIDTH,
|
||||
MENU_DISPLAY_CTL_SET_HEIGHT,
|
||||
MENU_DISPLAY_CTL_FB_PITCH,
|
||||
MENU_DISPLAY_CTL_SET_FB_PITCH,
|
||||
MENU_DISPLAY_CTL_LIBRETRO,
|
||||
MENU_DISPLAY_CTL_LIBRETRO_RUNNING,
|
||||
MENU_DISPLAY_CTL_SET_STUB_DRAW_FRAME,
|
||||
MENU_DISPLAY_CTL_UNSET_STUB_DRAW_FRAME,
|
||||
MENU_DISPLAY_CTL_FRAMEBUF_DEINIT,
|
||||
MENU_DISPLAY_CTL_DEINIT,
|
||||
MENU_DISPLAY_CTL_INIT,
|
||||
MENU_DISPLAY_CTL_INIT_FIRST_DRIVER,
|
||||
MENU_DISPLAY_CTL_FONT_DATA_INIT,
|
||||
MENU_DISPLAY_CTL_SET_FONT_DATA_INIT,
|
||||
MENU_DISPLAY_CTL_FONT_SIZE,
|
||||
MENU_DISPLAY_CTL_SET_FONT_SIZE,
|
||||
MENU_DISPLAY_CTL_MSG_FORCE,
|
||||
MENU_DISPLAY_CTL_SET_MSG_FORCE,
|
||||
MENU_DISPLAY_CTL_FONT_BUF,
|
||||
MENU_DISPLAY_CTL_FONT_FLUSH_BLOCK,
|
||||
MENU_DISPLAY_CTL_SET_FONT_BUF,
|
||||
MENU_DISPLAY_CTL_FONT_FB,
|
||||
MENU_DISPLAY_CTL_SET_FONT_FB,
|
||||
MENU_DISPLAY_CTL_FONT_MAIN_DEINIT,
|
||||
MENU_DISPLAY_CTL_FONT_MAIN_INIT,
|
||||
MENU_DISPLAY_CTL_FONT_BIND_BLOCK,
|
||||
MENU_DISPLAY_CTL_BLEND_BEGIN,
|
||||
MENU_DISPLAY_CTL_BLEND_END,
|
||||
MENU_DISPLAY_CTL_RESTORE_CLEAR_COLOR,
|
||||
MENU_DISPLAY_CTL_CLEAR_COLOR,
|
||||
MENU_DISPLAY_CTL_DRAW,
|
||||
MENU_DISPLAY_CTL_DRAW_BG,
|
||||
MENU_DISPLAY_CTL_DRAW_GRADIENT,
|
||||
MENU_DISPLAY_CTL_DRAW_PIPELINE,
|
||||
MENU_DISPLAY_CTL_ROTATE_Z,
|
||||
MENU_DISPLAY_CTL_TEX_COORDS_GET,
|
||||
MENU_DISPLAY_CTL_TIMEDATE,
|
||||
MENU_DISPLAY_CTL_COORDS_ARRAY_RESET,
|
||||
MENU_DISPLAY_CTL_COORDS_ARRAY_GET
|
||||
};
|
||||
|
||||
enum menu_display_prim_type
|
||||
{
|
||||
MENU_DISPLAY_PRIM_NONE = 0,
|
||||
@ -124,6 +69,7 @@ typedef struct menu_display_ctx_draw
|
||||
struct
|
||||
{
|
||||
unsigned id;
|
||||
const void *backend_data;
|
||||
} pipeline;
|
||||
} menu_display_ctx_draw_t;
|
||||
|
||||
@ -176,7 +122,62 @@ typedef struct menu_display_ctx_font
|
||||
|
||||
typedef uintptr_t menu_texture_item;
|
||||
|
||||
bool menu_display_ctl(enum menu_display_ctl_state state, void *data);
|
||||
void menu_display_blend_begin(void);
|
||||
void menu_display_blend_end(void);
|
||||
|
||||
void menu_display_font_main_deinit(void);
|
||||
bool menu_display_font_main_init(menu_display_ctx_font_t *font);
|
||||
void menu_display_font_bind_block(void *block);
|
||||
bool menu_display_font_flush_block(void);
|
||||
|
||||
void menu_display_framebuffer_deinit(void);
|
||||
|
||||
void menu_display_deinit(void);
|
||||
bool menu_display_init(void);
|
||||
|
||||
void menu_display_coords_array_reset(void);
|
||||
gfx_coord_array_t *menu_display_get_coords_array(void);
|
||||
void *menu_display_get_font_buffer(void);
|
||||
void menu_display_set_font_buffer(void *buffer);
|
||||
const uint8_t *menu_display_get_font_framebuffer(void);
|
||||
void menu_display_set_font_framebuffer(const uint8_t *buffer);
|
||||
bool menu_display_libretro_running(void);
|
||||
bool menu_display_libretro(void);
|
||||
|
||||
void menu_display_set_width(unsigned width);
|
||||
unsigned menu_display_get_width(void);
|
||||
void menu_display_set_height(unsigned height);
|
||||
unsigned menu_display_get_height(void);
|
||||
void menu_display_set_header_height(unsigned height);
|
||||
unsigned menu_display_get_header_height(void);
|
||||
unsigned menu_display_get_font_size(void);
|
||||
void menu_display_set_font_size(unsigned size);
|
||||
size_t menu_display_get_framebuffer_pitch(void);
|
||||
void menu_display_set_framebuffer_pitch(size_t pitch);
|
||||
|
||||
bool menu_display_get_msg_force(void);
|
||||
void menu_display_set_msg_force(bool state);
|
||||
bool menu_display_get_font_data_init(void);
|
||||
void menu_display_set_font_data_init(bool state);
|
||||
bool menu_display_get_update_pending(void);
|
||||
void menu_display_set_viewport(void);
|
||||
void menu_display_unset_viewport(void);
|
||||
bool menu_display_get_framebuffer_dirty_flag(void);
|
||||
void menu_display_set_framebuffer_dirty_flag(void);
|
||||
void menu_display_unset_framebuffer_dirty_flag(void);
|
||||
float menu_display_get_dpi(void);
|
||||
bool menu_display_init_first_driver(void);
|
||||
bool menu_display_restore_clear_color(void);
|
||||
void menu_display_clear_color(menu_display_ctx_clearcolor_t *color);
|
||||
void menu_display_draw(menu_display_ctx_draw_t *draw);
|
||||
|
||||
void menu_display_draw_pipeline(menu_display_ctx_draw_t *draw);
|
||||
void menu_display_draw_bg(menu_display_ctx_draw_t *draw);
|
||||
void menu_display_draw_gradient(menu_display_ctx_draw_t *draw);
|
||||
void menu_display_rotate_z(menu_display_ctx_rotate_draw_t *draw);
|
||||
bool menu_display_get_tex_coords(menu_display_ctx_coord_draw_t *draw);
|
||||
|
||||
void menu_display_timedate(menu_display_ctx_datetime_t *datetime);
|
||||
|
||||
void menu_display_handle_wallpaper_upload(void *task_data,
|
||||
void *user_data, const char *err);
|
||||
|
@ -185,7 +185,7 @@ static bool menu_init(menu_handle_t *menu_data)
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SHADER_MANAGER_INIT, NULL);
|
||||
|
||||
if (!menu_display_ctl(MENU_DISPLAY_CTL_INIT, NULL))
|
||||
if (!menu_display_init())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@ -445,7 +445,7 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
BIT64_SET(menu_driver_data->state, MENU_STATE_RENDER_FRAMEBUFFER);
|
||||
|
||||
if (BIT64_GET(menu_driver_data->state, MENU_STATE_RENDER_FRAMEBUFFER))
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_FRAMEBUFFER_DIRTY_FLAG, NULL);
|
||||
menu_display_set_framebuffer_dirty_flag();
|
||||
|
||||
if (BIT64_GET(menu_driver_data->state, MENU_STATE_RENDER_MESSAGEBOX)
|
||||
&& !string_is_empty(menu_driver_data->menu_state.msg))
|
||||
@ -468,7 +468,7 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
|
||||
if (menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL)
|
||||
&& !runloop_ctl(RUNLOOP_CTL_IS_IDLE, NULL))
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_LIBRETRO, NULL);
|
||||
menu_display_libretro();
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SET_TEXTURE, NULL);
|
||||
|
||||
@ -562,7 +562,7 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
menu_userdata = NULL;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_SYSTEM_INFO_DEINIT, NULL);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_DEINIT, NULL);
|
||||
menu_display_deinit();
|
||||
menu_entries_ctl(MENU_ENTRIES_CTL_DEINIT, NULL);
|
||||
|
||||
event_cmd_ctl(EVENT_CMD_HISTORY_DEINIT, NULL);
|
||||
@ -836,11 +836,9 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
|
||||
if (menu_driver_ctl(RARCH_MENU_CTL_IS_PENDING_QUICK_MENU, NULL))
|
||||
{
|
||||
bool msg_force = true;
|
||||
|
||||
menu_driver_ctl(RARCH_MENU_CTL_UNSET_PENDING_QUICK_MENU, NULL);
|
||||
menu_entries_flush_stack(NULL, MENU_SETTINGS);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_SET_MSG_FORCE, &msg_force);
|
||||
menu_display_set_msg_force(true);
|
||||
|
||||
generic_action_ok_displaylist_push("",
|
||||
"", 0, 0, 0, ACTION_OK_DL_CONTENT_SETTINGS);
|
||||
|
@ -825,8 +825,8 @@ static int menu_input_pointer(unsigned *action)
|
||||
const struct retro_keybind *binds[MAX_USERS] = {NULL};
|
||||
menu_input_t *menu_input = menu_input_get_ptr();
|
||||
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_WIDTH, &fb_width);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEIGHT, &fb_height);
|
||||
fb_width = menu_display_get_width();
|
||||
fb_height = menu_display_get_height();
|
||||
|
||||
pointer_device = menu_driver_ctl(RARCH_MENU_CTL_IS_SET_TEXTURE, NULL) ?
|
||||
RETRO_DEVICE_POINTER : RARCH_DEVICE_POINTER_SCREEN;
|
||||
@ -940,7 +940,7 @@ static int menu_input_mouse_post_iterate(uint64_t *input_mouse,
|
||||
menu_input_t *menu_input = menu_input_get_ptr();
|
||||
|
||||
menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection);
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
header_height = menu_display_get_header_height();
|
||||
|
||||
BIT64_SET(*input_mouse, MENU_MOUSE_ACTION_BUTTON_L);
|
||||
|
||||
@ -1068,7 +1068,6 @@ static int menu_input_pointer_post_iterate(
|
||||
menu_file_list_cbs_t *cbs,
|
||||
menu_entry_t *entry, unsigned action)
|
||||
{
|
||||
unsigned header_height;
|
||||
size_t selection;
|
||||
static bool pointer_oldpressed[2];
|
||||
static bool pointer_oldback = false;
|
||||
@ -1088,7 +1087,6 @@ static int menu_input_pointer_post_iterate(
|
||||
return -1;
|
||||
if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection))
|
||||
return -1;
|
||||
menu_display_ctl(MENU_DISPLAY_CTL_HEADER_HEIGHT, &header_height);
|
||||
|
||||
#ifdef HAVE_OVERLAY
|
||||
check_overlay = check_overlay ||
|
||||
|
@ -584,7 +584,7 @@ static int setting_uint_action_left_custom_viewport_width(void *data, bool wrapa
|
||||
if (!settings || !av_info)
|
||||
return -1;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (custom->width <= 1)
|
||||
custom->width = 1;
|
||||
@ -611,7 +611,7 @@ static int setting_uint_action_right_custom_viewport_width(void *data, bool wrap
|
||||
if (!settings || !av_info)
|
||||
return -1;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (settings->video.scale_integer)
|
||||
custom->width += geom->base_width;
|
||||
@ -636,7 +636,7 @@ static int setting_uint_action_left_custom_viewport_height(void *data, bool wrap
|
||||
if (!settings || !av_info)
|
||||
return -1;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (custom->height <= 1)
|
||||
custom->height = 1;
|
||||
@ -663,7 +663,7 @@ static int setting_uint_action_right_custom_viewport_height(void *data, bool wra
|
||||
if (!settings || !av_info)
|
||||
return -1;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (settings->video.scale_integer)
|
||||
custom->height += geom->base_height;
|
||||
@ -2224,7 +2224,7 @@ static int setting_action_start_custom_viewport_width(void *data)
|
||||
if (!settings || !av_info)
|
||||
return -1;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (settings->video.scale_integer)
|
||||
custom->width = ((custom->width + geom->base_width - 1) /
|
||||
@ -2250,7 +2250,7 @@ static int setting_action_start_custom_viewport_height(void *data)
|
||||
if (!settings || !av_info)
|
||||
return -1;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (settings->video.scale_integer)
|
||||
custom->height = ((custom->height + geom->base_height - 1) /
|
||||
@ -2335,8 +2335,7 @@ static int setting_action_start_libretro_device_type(void *data)
|
||||
static int setting_action_start_video_refresh_rate_auto(
|
||||
void *data)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_MONITOR_RESET, NULL);
|
||||
|
||||
video_driver_monitor_reset();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -2925,7 +2924,7 @@ void general_write_handler(void *data)
|
||||
struct retro_game_geometry *geom = (struct retro_game_geometry*)
|
||||
&av_info->geometry;
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (*setting->value.target.boolean)
|
||||
{
|
||||
@ -4297,7 +4296,7 @@ static bool setting_append_list(
|
||||
&setting_get_string_representation_uint_video_monitor_index;
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_ADVANCED);
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL))
|
||||
if (video_driver_has_windowed())
|
||||
{
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
@ -4315,7 +4314,7 @@ static bool setting_append_list(
|
||||
menu_settings_list_current_add_cmd(list, list_info, EVENT_CMD_REINIT);
|
||||
settings_data_list_current_add_flags(list, list_info, SD_FLAG_CMD_APPLY_AUTO);
|
||||
}
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL))
|
||||
if (video_driver_has_windowed())
|
||||
{
|
||||
CONFIG_BOOL(
|
||||
list, list_info,
|
||||
@ -4489,7 +4488,7 @@ static bool setting_append_list(
|
||||
END_SUB_GROUP(list, list_info, parent_group);
|
||||
START_SUB_GROUP(list, list_info, "Scaling", &group_info, &subgroup_info, parent_group);
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_WINDOWED, NULL))
|
||||
if (video_driver_has_windowed())
|
||||
{
|
||||
CONFIG_FLOAT(
|
||||
list, list_info,
|
||||
|
@ -187,12 +187,12 @@ void recording_dump_frame(const void *data, unsigned width,
|
||||
ffemu_data.height = height;
|
||||
ffemu_data.data = data;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_HAS_GPU_RECORD, NULL))
|
||||
if (video_driver_has_gpu_record())
|
||||
{
|
||||
uint8_t *gpu_buf = NULL;
|
||||
struct video_viewport vp = {0};
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (!vp.width || !vp.height)
|
||||
{
|
||||
@ -217,13 +217,14 @@ void recording_dump_frame(const void *data, unsigned width,
|
||||
return;
|
||||
}
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_GPU_RECORD_GET, &gpu_buf))
|
||||
gpu_buf = video_driver_get_gpu_record();
|
||||
if (!gpu_buf)
|
||||
return;
|
||||
|
||||
/* Big bottleneck.
|
||||
* Since we might need to do read-backs asynchronously,
|
||||
* it might take 3-4 times before this returns true. */
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_READ_VIEWPORT, gpu_buf))
|
||||
if (!video_driver_read_viewport(gpu_buf))
|
||||
return;
|
||||
|
||||
ffemu_data.pitch = global->record.gpu_width * 3;
|
||||
@ -234,7 +235,7 @@ void recording_dump_frame(const void *data, unsigned width,
|
||||
ffemu_data.pitch = -ffemu_data.pitch;
|
||||
}
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_HAS_GPU_RECORD, NULL))
|
||||
if (!video_driver_has_gpu_record())
|
||||
ffemu_data.is_dupe = !data;
|
||||
|
||||
if (recording_driver && recording_driver->push_video)
|
||||
@ -311,7 +312,7 @@ bool recording_init(void)
|
||||
}
|
||||
|
||||
if (!settings->video.gpu_record
|
||||
&& video_driver_ctl(RARCH_DISPLAY_CTL_IS_HW_CONTEXT, NULL))
|
||||
&& video_driver_is_hw_context())
|
||||
{
|
||||
RARCH_WARN("%s.\n",
|
||||
msg_hash_to_str(MSG_HW_RENDERED_MUST_USE_POSTSHADED_RECORDING));
|
||||
@ -345,12 +346,12 @@ bool recording_init(void)
|
||||
if (*global->record.config)
|
||||
params.config = global->record.config;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_RECORDING, NULL))
|
||||
if (video_driver_supports_recording())
|
||||
{
|
||||
unsigned gpu_size;
|
||||
struct video_viewport vp = {0};
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (!vp.width || !vp.height)
|
||||
{
|
||||
@ -378,7 +379,7 @@ bool recording_init(void)
|
||||
vp.width, vp.height);
|
||||
|
||||
gpu_size = vp.width * vp.height * 3;
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_GPU_RECORD_INIT, &gpu_size))
|
||||
if (!video_driver_gpu_record_init(gpu_size))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@ -396,14 +397,14 @@ bool recording_init(void)
|
||||
params.aspect_ratio = (float)params.out_width / params.out_height;
|
||||
|
||||
if (settings->video.post_filter_record
|
||||
&& video_driver_ctl(RARCH_DISPLAY_CTL_FRAME_FILTER_ALIVE, NULL))
|
||||
&& video_driver_frame_filter_alive())
|
||||
{
|
||||
unsigned max_width = 0;
|
||||
unsigned max_height = 0;
|
||||
|
||||
params.pix_fmt = FFEMU_PIX_RGB565;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_FRAME_FILTER_IS_32BIT, NULL))
|
||||
if (video_driver_frame_filter_is_32bit())
|
||||
params.pix_fmt = FFEMU_PIX_ARGB8888;
|
||||
|
||||
rarch_softfilter_get_max_output_size(
|
||||
|
@ -1157,7 +1157,7 @@ static void rarch_init_savefile_paths(void)
|
||||
|
||||
static bool init_state(void)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_ACTIVE, NULL);
|
||||
video_driver_set_active();
|
||||
audio_driver_ctl(RARCH_AUDIO_CTL_SET_ACTIVE, NULL);
|
||||
|
||||
rarch_ctl(RARCH_CTL_UNSET_FORCE_FULLSCREEN, NULL);
|
||||
|
14
runloop.c
14
runloop.c
@ -222,7 +222,7 @@ static bool runloop_check_slowmotion(bool *ptr)
|
||||
return false;
|
||||
|
||||
if (settings->video.black_frame_insertion)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
|
||||
if (state_manager_frame_is_reversed())
|
||||
runloop_msg_queue_push(msg_hash_to_str(MSG_SLOW_MOTION_REWIND), 0, 30, true);
|
||||
@ -612,7 +612,7 @@ static bool runloop_check_pause_state(event_cmd_state_t *cmd)
|
||||
if (runloop_cmd_triggered(cmd, RARCH_FULLSCREEN_TOGGLE_KEY))
|
||||
{
|
||||
event_cmd_ctl(EVENT_CMD_FULLSCREEN_TOGGLE, NULL);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
}
|
||||
|
||||
if (!check_is_oneshot)
|
||||
@ -630,14 +630,14 @@ static bool runloop_is_focused(void)
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (settings->pause_nonactive)
|
||||
return video_driver_ctl(RARCH_DISPLAY_CTL_IS_FOCUSED, NULL);
|
||||
return video_driver_is_focused();
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool runloop_is_frame_count_end(void)
|
||||
{
|
||||
uint64_t *frame_count = NULL;
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_GET_FRAME_COUNT, &frame_count);
|
||||
uint64_t *frame_count =
|
||||
video_driver_get_frame_count_ptr();
|
||||
return runloop_max_frames && (*frame_count >= runloop_max_frames);
|
||||
}
|
||||
|
||||
@ -660,7 +660,7 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data)
|
||||
if (!runloop_system.info.library_version)
|
||||
runloop_system.info.library_version = "v0";
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_SET_TITLE_BUF, NULL);
|
||||
video_driver_set_title_buf();
|
||||
|
||||
strlcpy(runloop_system.valid_extensions,
|
||||
runloop_system.info.valid_extensions ?
|
||||
@ -1257,7 +1257,7 @@ static INLINE int runloop_iterate_time_to_exit(bool quit_key_pressed)
|
||||
settings_t *settings = NULL;
|
||||
bool time_to_exit = runloop_ctl(RUNLOOP_CTL_IS_SHUTDOWN, NULL);
|
||||
time_to_exit = time_to_exit || quit_key_pressed;
|
||||
time_to_exit = time_to_exit || !video_driver_ctl(RARCH_DISPLAY_CTL_IS_ALIVE, NULL);
|
||||
time_to_exit = time_to_exit || !video_driver_is_alive();
|
||||
time_to_exit = time_to_exit || bsv_movie_ctl(BSV_MOVIE_CTL_END_EOF, NULL);
|
||||
time_to_exit = time_to_exit || runloop_is_frame_count_end();
|
||||
time_to_exit = time_to_exit || runloop_ctl(RUNLOOP_CTL_IS_EXEC, NULL);
|
||||
|
16
screenshot.c
16
screenshot.c
@ -144,7 +144,7 @@ static bool take_screenshot_viewport(void)
|
||||
settings_t *settings = config_get_ptr();
|
||||
global_t *global = global_get_ptr();
|
||||
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_VIEWPORT_INFO, &vp);
|
||||
video_driver_get_viewport_info(&vp);
|
||||
|
||||
if (!vp.width || !vp.height)
|
||||
return false;
|
||||
@ -152,7 +152,7 @@ static bool take_screenshot_viewport(void)
|
||||
if (!(buffer = (uint8_t*)malloc(vp.width * vp.height * 3)))
|
||||
return false;
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_READ_VIEWPORT, buffer))
|
||||
if (!video_driver_read_viewport(buffer))
|
||||
goto done;
|
||||
|
||||
screenshot_dir = settings->directory.screenshot;
|
||||
@ -213,18 +213,18 @@ static bool take_screenshot_choice(void)
|
||||
if ((!*settings->directory.screenshot) && (!*global->name.base))
|
||||
return false;
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_VIEWPORT_READ, NULL))
|
||||
if (video_driver_supports_viewport_read())
|
||||
{
|
||||
/* Avoid taking screenshot of GUI overlays. */
|
||||
video_driver_set_texture_enable(false, false);
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
return take_screenshot_viewport();
|
||||
}
|
||||
|
||||
if (!video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_HAS_VALID_FB, NULL))
|
||||
if (!video_driver_cached_frame_has_valid_framebuffer())
|
||||
return take_screenshot_raw();
|
||||
|
||||
if (video_driver_ctl(RARCH_DISPLAY_CTL_SUPPORTS_READ_FRAME_RAW, NULL))
|
||||
if (video_driver_supports_read_frame_raw())
|
||||
{
|
||||
unsigned old_width, old_height;
|
||||
size_t old_pitch;
|
||||
@ -243,7 +243,7 @@ static bool take_screenshot_choice(void)
|
||||
|
||||
if (frame_data)
|
||||
{
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_SET_PTR, (void*)frame_data);
|
||||
video_driver_set_cached_frame_ptr(frame_data);
|
||||
if (take_screenshot_raw())
|
||||
ret = true;
|
||||
free(frame_data);
|
||||
@ -274,7 +274,7 @@ bool take_screenshot(void)
|
||||
runloop_msg_queue_push(msg, 1, is_paused ? 1 : 180, true);
|
||||
|
||||
if (is_paused)
|
||||
video_driver_ctl(RARCH_DISPLAY_CTL_CACHED_FRAME_RENDER, NULL);
|
||||
video_driver_cached_frame_render();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user