Commit Graph

70 Commits

Author SHA1 Message Date
twinaphex
08e61230e9 Update video_poke_interface 2018-01-30 22:29:57 +01:00
twinaphex
cf3a010ead Remove some HAVE_MENU ifdefs 2017-12-31 17:42:07 +01:00
gblues
6904101c44 Clean up trailing whitespace
== DETAILS

Really simple code cleanup, because my editor flags trailing whitespaces
and it's pretty annoying.
2017-12-12 00:24:18 -08:00
twinaphex
683c437941 Updates 2017-11-14 21:34:03 +01:00
twinaphex
d4756f83e5 Stop calling video_driver_context_has_windowed from within video
drivers
2017-05-13 19:11:32 +02:00
twinaphex
f928e57064 Combine video_context_driver.c and video_driver.c 2017-05-09 01:25:59 +02:00
Andrew
858e15b837 Fix performance issue with max_swapchain_images
This fixes a performance problem introduced in my last commit when
max_swapchain_images == 3.

In my last commit I incorrectly stated the 3rd buffer was not being
used, after doing some additional testing I realized I was mistaken,
it can indeed be used due to the used page tracking.

Reverting that portion of my previous commit.
2017-05-05 16:58:17 -07:00
Andrew
01e25bd5c7 Fix max_swapchain_images and do some additional cleanup
When max_swapchain_images was originally added it worked properly,
but was subsequently broken by using the value to specify the number
of buffers allocated.

Due to how the dispmanx driver works, only 2 buffers are ever actually
used, so the 3rd buffer in the "swapchain" ended up doing nothing.

Fix this by restoring it to the original intent, that is, if
max_swapchain_images <= 2 wait for vsync after the flip (reducing
lag), otherwise wait at the last possible moment (increasing lag).

Additionally, fix up some unnecessary void* usage where type safety
could be maintained.
2017-05-04 18:45:59 -07:00
Andrew
a1d094e64e Minor race fix and small cleanup to dispmanx_gfx
It's unlikely it was causing issues, but another race existed in the
dispmanx driver, it incremented the pending page count after sending the
update request.

If a context switch happened between sending the update and incrementing
the page count, the vsync callback would decrement it from 0 and cause
the uint to overflow.

Throw in a minor C89 fix and some whitespace fixups too.
2017-04-29 17:09:07 -07:00
Andrew
301a094ef9 Avoid potential dispmanx_gfx driver lockup
The dispmanx driver had a small race wherein if the vsync completed
between checking for a free page and waiting on the condvar, it would
hang forever waiting for a condition that would never fire.

I'm hoping this is what was causing the triple buffering lockups. In
my testing with it re-enabled and this fix, things are stable (and
much more performant than with triple buffering disabled).
2017-04-28 20:24:36 -07:00
Andrew
253c8cd997 Revert "DISPMANX: Disable triple buffering for now, for stability reasons."
This reverts commit 0b75671c21.
2017-04-28 20:20:43 -07:00
twinaphex
2a13af52fc Revert "video_init function - video_info_t should not be const -"
This reverts commit c8bcbad4a7.
2017-04-24 12:25:14 +02:00
twinaphex
c8bcbad4a7 video_init function - video_info_t should not be const -
try to set video_driver_width/video_driver_height outside
of video driver init function
2017-04-24 12:03:21 +02:00
vanfanel
0b75671c21 DISPMANX: Disable triple buffering for now, for stability reasons. 2017-02-12 19:27:59 +01:00
twinaphex
93812f58ba We don't need the settings variable here 2017-01-24 14:02:09 +01:00
vanfanel
ae3cdaccb9 DISPMANX: Add missing include and remove redundant one. 2017-01-24 13:58:55 +01:00
The Last Cabra
0e542037d8 Merge branch 'master' into master 2017-01-23 15:16:19 +01:00
twinaphex
2f504b4057 (gfx/drivers) Get rid of remaining runloop.h / runloop_ctl
references inside gfx/drivers
2017-01-22 18:17:48 +01:00
twinaphex
96c8ca5a09 Header update #1 2017-01-22 13:40:32 +01:00
vanfanel
7ae7e2eaee DISPMANX: now waiting for free pages after issuing flip, instead of before, to avoid input lag. 2017-01-20 14:59:14 +01:00
twinaphex
fe84312340 Add some header includes 2017-01-19 17:20:42 +01:00
twinaphex
0d33888a24 (dispmanx_gfx.c) Cleanups 2017-01-19 16:50:09 +01:00
twinaphex
d010a852e4 Call menu_driver_frame once per video_frame call 2017-01-18 22:20:47 +01:00
twinaphex
a6a4808e94 Refactor frame monitor code 2017-01-18 17:41:27 +01:00
vanfanel
5a1e8d55fb DISPMANX: Put guard back in to avoid potential lockups! 2017-01-15 13:47:30 +01:00
vanfanel
869a050a18 DISPMANX: implement pitch alignment for better videocore blitting performance 2017-01-14 23:01:05 +01:00
vanfanel
8640522073 DISPMANX: remove commented line 2017-01-14 15:56:54 +01:00
vanfanel
da640aaa28 DISPMANX: Honor swapchain setting properly 2017-01-14 15:54:20 +01:00
vanfanel
f0c2826994 DISPMANX: Fix refreshrate calculation by updating menu surface asynchronously 2017-01-14 14:38:18 +01:00
Matthew Wolff
f6284721d8 Fix forgotten parameter of video_monitor_get_fps 2017-01-12 23:40:58 -06:00
twinaphex
76ae7ac4a0 Cleanup some of the video drivers - add some members to
video_info_t to reduce the need for accessing the settings
struct
2017-01-10 18:16:22 +01:00
twinaphex
be2f921ee2 Don't use settings pointer inside video_frame function 2017-01-09 14:25:59 +01:00
vanfanel
7ba3ff9c12 DISPMANX: Fix hang when null frame is passed (TyrQuake core) 2017-01-05 23:47:33 +01:00
Mikael Brunnhede
2cb9c912f4 Implement support for video_max_swapchain_images setting. 2016-10-17 11:23:34 +02:00
twinaphex
202e3e796e Get rid of more general.h includes 2016-09-11 14:46:53 +02:00
twinaphex
acd4dd527b Header include cleanups 2016-09-05 18:31:32 +02:00
vanfanel
c097eed755 VIDEO/DISPMANX: Make the HW Bilinear Filtering setting work. 2016-06-16 11:37:02 +02:00
vanfanel
03dd7d4b51 VIDEO/DISPMANX: Fixed segfault when loading new core and content from RGUI 2016-06-15 14:28:13 +02:00
twinaphex
aa488dda25 Create video driver poke load_texture / unload_texture 2015-12-20 20:52:23 +01:00
twinaphex
df1c6344be Merge font_renderer_driver.c and font_driver.c 2015-12-05 12:07:22 +01:00
twinaphex
200b41bb58 (dispmanx_gfx.c) Nit 2015-11-28 17:07:52 +01:00
twinaphex
70850c8ca3 (dispmanx_gfx.c) Cleanups 2015-11-28 17:00:44 +01:00
twinaphex
85dbeeb8f9 No more video_monitor.h 2015-11-22 13:32:46 +01:00
twinaphex
806c124eae Merge video_viewport.c and video_driver.c 2015-11-21 13:01:23 +01:00
twinaphex
4ca5d31f9b Some more static code analysis nits when ran with enable=all 2015-09-28 18:12:02 +02:00
twinaphex
0c023dcb68 Reimplement frame count 2015-08-03 23:01:07 +02:00
vanfanel
ba69eda47e DISPMANX: Rewrote surface management functions: fixed dispmanx-related errors when changing core or loading new content. 2015-06-27 19:14:30 +00:00
vanfanel
bb7d9436c2 DISPMANX correction: the pointer to the page currently on screen must be a member of each surface. 2015-06-20 14:56:25 +00:00
vanfanel
430f7854d9 Removed unused variable. Changed a function type. 2015-06-18 16:16:26 +00:00
vanfanel
98e6522f3f Fixed a memory allocation error and simplified surface resource freeing functions. 2015-06-18 12:31:42 +00:00