Sylvain Becker
5ed30f844d
Some simplification of previous commit
2019-02-07 22:45:50 +01:00
Sylvain Becker
5fd228921c
Faster blit with CopyAlpha, no ColorKey
...
Applied to following formats:
ABGR8888 -> BGRA8888 : faster x3 (2727179 -> 704761)
ABGR8888 -> RGBA8888 : faster x3 (2707808 -> 705309)
ARGB8888 -> BGRA8888 : faster x3 (2745371 -> 712437)
ARGB8888 -> RGBA8888 : faster x3 (2746230 -> 705236)
BGRA8888 -> ABGR8888 : faster x3 (2745026 -> 707045)
BGRA8888 -> ARGB8888 : faster x3 (2752760 -> 727373)
BGRA8888 -> RGBA8888 : faster x3 (2769544 -> 704607)
RGBA8888 -> ABGR8888 : faster x3 (2725058 -> 706669)
RGBA8888 -> ARGB8888 : faster x3 (2704866 -> 707132)
RGBA8888 -> BGRA8888 : faster x3 (2710351 -> 704615)
2019-02-07 22:03:30 +01:00
Sylvain Becker
704e62bbf4
Code factorization of the pixel format permutation
2019-02-07 21:49:24 +01:00
Sylvain Becker
0a007a9bea
Fix wrong comment
2019-02-07 18:52:49 +01:00
Sylvain Becker
e5192384d0
Faster blit with no ColorKey
...
Applied to following formats:
ABGR8888 -> BGRX8888 : faster x5 (3177493 -> 630439)
ABGR8888 -> RGBX8888 : faster x5 (3178104 -> 628925)
ARGB8888 -> BGRX8888 : faster x4 (3141089 -> 629448)
ARGB8888 -> RGBX8888 : faster x5 (3216413 -> 630465)
BGR888 -> BGRA8888 : faster x4 (3145403 -> 637701)
BGR888 -> BGRX8888 : faster x4 (3142106 -> 630144)
BGR888 -> RGBA8888 : faster x4 (3202685 -> 649384)
BGR888 -> RGBX8888 : faster x4 (3170617 -> 658670)
BGRA8888 -> BGR888 : faster x4 (3203308 -> 657697)
BGRA8888 -> RGB888 : faster x5 (3201475 -> 631747)
BGRA8888 -> RGBX8888 : faster x5 (3274544 -> 630409)
BGRX8888 -> ABGR8888 : faster x4 (3149753 -> 638682)
BGRX8888 -> ARGB8888 : faster x5 (3164101 -> 631273)
BGRX8888 -> BGR888 : faster x4 (3144454 -> 630712)
BGRX8888 -> RGB888 : faster x4 (3160490 -> 638047)
BGRX8888 -> RGBA8888 : faster x5 (3308988 -> 631232)
BGRX8888 -> RGBX8888 : faster x5 (3216775 -> 638065)
RGB888 -> BGRA8888 : faster x4 (3143135 -> 655146)
RGB888 -> BGRX8888 : faster x4 (3141790 -> 653771)
RGB888 -> RGBA8888 : faster x5 (3214402 -> 637001)
RGB888 -> RGBX8888 : faster x4 (3143082 -> 630009)
RGBA8888 -> BGR888 : faster x3 (3157048 -> 920375)
RGBA8888 -> BGRX8888 : faster x5 (3196692 -> 632996)
RGBA8888 -> RGB888 : faster x4 (3141570 -> 652151)
RGBX8888 -> ABGR8888 : faster x5 (3175401 -> 631218)
RGBX8888 -> ARGB8888 : faster x4 (3144690 -> 639440)
RGBX8888 -> BGR888 : faster x4 (3144250 -> 630171)
RGBX8888 -> BGRA8888 : faster x5 (3220321 -> 630731)
RGBX8888 -> BGRX8888 : faster x4 (3178453 -> 637445)
RGBX8888 -> RGB888 : faster x5 (3203623 -> 632596)
2019-02-07 18:51:14 +01:00
Sylvain Becker
7372295ec9
Faster blit when using No Alpha or Set Alpha, + ColorKey
...
Applied to following formats:
ABGR8888 -> BGRX8888 : faster x4 (2794295 -> 610587)
ABGR8888 -> RGB888 : faster x4 (2835693 -> 615561)
ABGR8888 -> RGBX8888 : faster x4 (2880475 -> 610479)
ARGB8888 -> BGR888 : faster x4 (2802718 -> 610702)
ARGB8888 -> BGRX8888 : faster x4 (2792481 -> 606311)
ARGB8888 -> RGBX8888 : faster x4 (2821621 -> 624745)
BGR888 -> ARGB8888 : faster x4 (2791705 -> 637889)
BGR888 -> BGRA8888 : faster x4 (2793195 -> 652299)
BGR888 -> BGRX8888 : faster x4 (2800713 -> 609326)
BGR888 -> RGB888 : faster x4 (2812260 -> 610471)
BGR888 -> RGBA8888 : faster x4 (2792327 -> 629288)
BGR888 -> RGBX8888 : faster x4 (2799224 -> 607073)
BGRA8888 -> BGR888 : faster x4 (2800520 -> 606897)
BGRA8888 -> RGB888 : faster x4 (2825274 -> 616156)
BGRA8888 -> RGBX8888 : faster x4 (2812530 -> 610340)
BGRX8888 -> ABGR8888 : faster x4 (2793940 -> 628596)
BGRX8888 -> ARGB8888 : faster x4 (2822686 -> 638899)
BGRX8888 -> BGR888 : faster x4 (2818141 -> 613659)
BGRX8888 -> RGB888 : faster x4 (2929017 -> 611794)
BGRX8888 -> RGBA8888 : faster x4 (2799709 -> 629750)
BGRX8888 -> RGBX8888 : faster x4 (2911010 -> 605640)
RGB888 -> ABGR8888 : faster x4 (2800671 -> 631542)
RGB888 -> BGR888 : faster x4 (2802644 -> 604461)
RGB888 -> BGRA8888 : faster x4 (2801919 -> 628729)
RGB888 -> BGRX8888 : faster x4 (2938244 -> 604135)
RGB888 -> RGBA8888 : faster x4 (2912447 -> 642185)
RGB888 -> RGBX8888 : faster x4 (2831676 -> 634293)
RGBA8888 -> BGR888 : faster x4 (2928896 -> 614960)
RGBA8888 -> BGRX8888 : faster x4 (2821422 -> 608146)
RGBA8888 -> RGB888 : faster x4 (2825927 -> 617184)
RGBX8888 -> ABGR8888 : faster x4 (2803852 -> 654129)
RGBX8888 -> ARGB8888 : faster x4 (2923615 -> 642644)
RGBX8888 -> BGR888 : faster x4 (2806523 -> 610447)
RGBX8888 -> BGRA8888 : faster x4 (2813388 -> 630305)
RGBX8888 -> BGRX8888 : faster x4 (2800052 -> 607881)
RGBX8888 -> RGB888 : faster x4 (2807722 -> 610263)
2019-02-07 17:52:28 +01:00
Sylvain Becker
bb9a9080dc
Fix pointer warnings
2019-02-07 16:13:25 +01:00
Sylvain Becker
3543a44ae4
Faster blit when using CopyAlpha + ColorKey
...
Applied to following formats:
ABGR8888 -> ARGB8888 : faster x7 (3959672 -> 537227)
ABGR8888 -> BGRA8888 : faster x7 (4008716 -> 532064)
ABGR8888 -> RGBA8888 : faster x7 (3998576 -> 530964)
ARGB8888 -> ABGR8888 : faster x7 (3942420 -> 532503)
ARGB8888 -> BGRA8888 : faster x7 (3995382 -> 527722)
ARGB8888 -> RGBA8888 : faster x7 (4259330 -> 543033)
BGRA8888 -> ABGR8888 : faster x7 (4110411 -> 529402)
BGRA8888 -> ARGB8888 : faster x7 (4071906 -> 538393)
BGRA8888 -> RGBA8888 : faster x6 (4038320 -> 585141)
RGBA8888 -> ABGR8888 : faster x7 (3937018 -> 534127)
RGBA8888 -> ARGB8888 : faster x7 (3979577 -> 537810)
RGBA8888 -> BGRA8888 : faster x7 (3975656 -> 528355)
2019-02-07 15:12:17 +01:00
Sylvain Becker
670f3d3327
Fixed bug 4484 - use SIMD aligned memory for SDL_Surface
...
Surfaces are allocated using SDL_SIMDAlloc()
They are marked with SDL_SIMD_ALIGNED flag to appropriatly free them with SDL_SIMDFree()
(Flag is cleared when pixels is free'd in RLE, in case user would hijack the pixels ptr)
When providing its own memory pointer (SDL_CreateRGBSurfaceFrom()) and clearing
SDL_PREALLOC to delegate to SDL the memory free, it's the responsability of the user
to add SDL_SIMD_ALIGNED or not, whether the pointer has been allocated with SDL_malloc() or
SDL_SIMDAlloc().
2019-02-04 09:11:07 +01:00
Sylvain Becker
9292dc7ca1
Fix include path compilation
2019-02-04 08:43:37 +01:00
Sylvain Becker
9a98dcc516
Rename surface aligned memory flag to SDL_SIMD_ALIGNED
2019-02-04 08:34:24 +01:00
Sylvain Becker
e5d194e902
Add SDL_MEMALIGNED flag for SDL_Surface using aligned memory.
...
If an SDL_Surface has an aligned memory pointers, it should be freed
using SDL_SIMDFree() (will be used by SDL_ttf).
2019-01-31 11:45:31 +01:00
Sylvain Becker
7b8bac5958
Add fast paths in BlitNtoNKey
...
All following conversions are faster (with colorkey, but no blending).
(ratio isn't very accurate)
ABGR8888 -> BGR888 : faster x9 (2699035 -> 297425)
ARGB8888 -> RGB888 : faster x8 (2659266 -> 296137)
BGR24 -> BGR24 : faster x5 (2232482 -> 445897)
BGR24 -> RGB24 : faster x4 (2150023 -> 448576)
BGR888 -> ABGR8888 : faster x8 (2649957 -> 307595)
BGRA8888 -> BGRX8888 : faster x9 (2696041 -> 297596)
BGRX8888 -> BGRA8888 : faster x8 (2662011 -> 299463)
BGRX8888 -> BGRX8888 : faster x9 (2733346 -> 295045)
RGB24 -> BGR24 : faster x4 (2154551 -> 485262)
RGB24 -> RGB24 : faster x4 (2149878 -> 484870)
RGB888 -> ARGB8888 : faster x8 (2762877 -> 324946)
RGBA8888 -> RGBX8888 : faster x8 (2657855 -> 297753)
RGBX8888 -> RGBA8888 : faster x8 (2661360 -> 296655)
RGBX8888 -> RGBX8888 : faster x8 (2649287 -> 308268)
2019-01-30 22:50:20 +01:00
Sylvain Becker
cd25c83aad
Fix blit with blending (Blit_A) to RGB332 which has no palette
2019-01-30 17:16:08 +01:00
Sylvain Becker
5b07148f73
Fixed failing SDL_ConvertSurface() when blit has failed.
...
Some blit combination are not supported (eg ARGB8888 -> SDL_PIXELFORMAT_INDEX1MSB)
So prevent SDL_ConvertSurface from creating a broken surface, which cannot be blitted
2019-01-30 16:36:47 +01:00
Sylvain Becker
a052d81bdf
Add explicit unsigned int and char types in (for bug 4290)
2019-01-30 15:31:07 +01:00
Sylvain Becker
1128d57316
Fixed bug 4290 - add fastpaths for format conversion in BlitNtoN
...
All following conversion are faster (no colorkey, no blending).
(ratio isn't very accurate)
ABGR8888 -> ARGB8888 : faster x6 (2655837 -> 416607)
ABGR8888 -> BGR24 : faster x7 (2470117 -> 325693)
ABGR8888 -> RGB24 : faster x7 (2478107 -> 335445)
ABGR8888 -> RGB888 : faster x9 (3178524 -> 333859)
ARGB8888 -> ABGR8888 : faster x6 (2648366 -> 406977)
ARGB8888 -> BGR24 : faster x7 (2474978 -> 327819)
ARGB8888 -> BGR888 : faster x9 (3189072 -> 326710)
ARGB8888 -> RGB24 : faster x7 (2473689 -> 324729)
BGR24 -> ABGR8888 : faster x6 (2268763 -> 359946)
BGR24 -> ARGB8888 : faster x6 (2306393 -> 359213)
BGR24 -> BGR888 : faster x6 (2231141 -> 324195)
BGR24 -> RGB24 : faster x4 (1557835 -> 322033)
BGR24 -> RGB888 : faster x6 (2229854 -> 323849)
BGR888 -> ARGB8888 : faster x8 (3215202 -> 363137)
BGR888 -> BGR24 : faster x7 (2474775 -> 347916)
BGR888 -> RGB24 : faster x7 (2532783 -> 327354)
BGR888 -> RGB888 : faster x9 (3134634 -> 344987)
RGB24 -> ABGR8888 : faster x6 (2229486 -> 358919)
RGB24 -> ARGB8888 : faster x6 (2271587 -> 358521)
RGB24 -> BGR24 : faster x4 (1530913 -> 321149)
RGB24 -> BGR888 : faster x6 (2227284 -> 327453)
RGB24 -> RGB888 : faster x6 (2227125 -> 329061)
RGB888 -> ABGR8888 : faster x8 (3163292 -> 362445)
RGB888 -> BGR24 : faster x7 (2469489 -> 327127)
RGB888 -> BGR888 : faster x9 (3190526 -> 326022)
RGB888 -> RGB24 : faster x7 (2479084 -> 324982)
2019-01-30 15:23:33 +01:00
Charlie Birks
6d89a7bc71
Emscripten: remove GLES_DeleteContext implementation
...
It was calling glClear without a context. The issue it was trying to
solve was actually that after destroying a window and creating a new one
, the contents of the old window were preserved. This no longer happens
since we resize the window to nothing on destroy.
2019-01-29 12:19:32 +00:00
Charlie Birks
04b1494cf8
Emscripten: resize canvas to 0x0 in DestroyWindow
...
Closest we can get to actually destroying it
2019-01-29 12:19:23 +00:00
Charlie Birks
d60546aaa8
Emscripten: don't zero the display mode before adding it
2019-01-29 12:19:06 +00:00
Charlie Birks
4a2888af10
Emscripten: use UTF8ToString instead of Pointer_stringify
2019-01-29 12:19:03 +00:00
Charlie Birks
8dab9c956f
Emscripten: Use set_canvas_element_size
...
This will be needed for supporting multiple canvases and set_canvas_size
is deprecated anyway.
2019-01-29 12:18:56 +00:00
kichikuou
ed66a430c9
Emscripten: Do not consume mouseup event outside of the canvas
2019-01-29 12:14:54 +00:00
Sylvain Beucler
2838abb5b2
Emscripten: fix duplicate mousebuttonup/mousebuttondown events when touch events are disabled
2019-01-29 12:14:44 +00:00
Charlie Birks
1767d09187
Emscripten: use a fake size for external sizing check
...
The check would fail if the canvas happened to be the correct size
already. (#66 , mentioned in #58 )
2019-01-29 12:14:41 +00:00
Charlie Birks
80d690a2a0
Emscripten: reset fullscreen_window when leaving fullscreen
...
If the browser left fullscreen mode by the user pressing ESC, the next
call to SDL_SetWindowFullscreen(1) will fail as it thinks the window is
already fullscreen. (#65 )
2019-01-29 12:14:33 +00:00
Sylvain Becker
d984f323fc
Fixed bug 3827 - issue with MapRGB, palette and colorkey
...
For palette surface, SDL_MapRGB() returns different values whether colorkey is
set or not.
2019-01-21 19:53:06 +01:00
Sylvain Becker
2bd26b8da8
Fixed bug 3827 - issue with MapRGB, palette and colorkey
...
For a palettized surface, prevent SDL_MapRGB() value to change whether colorkey is set or not.
2019-01-21 18:45:15 +01:00
Sam Lantinga
61827c6d1a
Fixed compiler warning on Android
2019-01-20 12:02:12 -08:00
Sylvain Becker
e5f8801f55
Android: prevent concurrency in Android_SetScreenResolution() when exiting
...
by checking Android_Window validity
- SDLThread: user application is exiting:
SDL_VideoQuit() and clearing SDL_GetVideoDevice()
- ActivityThread is changing orientation/size
surfaceChanged() > Android_SetScreenResolution() > SDL_GetVideoDevice()
- Separate function into Android_SetScreenResolution() and Android_SendResize(),
formating, and mark Android_DeviceWidth/Heigh as static
2019-01-17 11:05:05 +01:00
Sylvain Becker
e994be5833
Android: move static variable isPaused/isPausing to SDL_VideoData structure
...
- remove unneed check to Android_Window->driverdata
- add window check into context_backup/restore
2019-01-16 10:31:51 +01:00
Sylvain Becker
dc263450ff
Android: create Pause/ResumeSem semaphore at higher level than CreateWindow()
...
- If you call onPause() before CreateWindow(), SDLThread will run in infinite loop in background.
- If you call onPause() between a DestroyWindow() and a new CreateWindow(), semaphores are invalids.
SDLActivity.java: the first resume() starts the SDLThread, don't call
nativeResume() as it would post ResumeSem. And the first pause would
automatically be resumed.
2019-01-14 23:33:48 +01:00
Sylvain Becker
955d87894b
Android/openslES: set audio in paused/resumed state for Android event loop
...
And also in "stopped" state before closing the device.
2019-01-14 12:33:29 +01:00
Sam Lantinga
fb8cb95fbc
Fixed compiler warning
2019-01-12 12:12:43 -08:00
Sylvain Becker
7a1d1baefc
Android: add name for Touch devices and simplification, from bug 3958
2019-01-10 21:40:57 +01:00
Sylvain Becker
02f292eb13
Android: add some SetError for Android_SetWindowFullscreen
...
First error could happen if Android_SetWindowFullscreen somehow gets
called between SurfaceDestroyed() and SurfaceCreated()
Second error should not happen has native_window validity is guaranteed.
(It would happens previously with error -19)
2019-01-09 22:49:49 +01:00
Sylvain Becker
1803944bb2
Android: concurrency issue for Android_SetWindowFullscreen()
...
It accesses data->native_window, which can be changed by onNativeSurfacedChanged().
Currently, Android_SetWindowFullscreen() may access data->native_window after it
has been released, and before a new reference is acquired.
(can be reproduced by adding some SDL_Delay() in onNativeSurfacedChanged and
Android_SetWindowFullscreen() ).
2019-01-09 15:18:41 +01:00
Sylvain Becker
462e62e154
Android: better fix for bug 3186. Run those commands from SDL thread.
2019-01-06 20:25:54 +01:00
Sylvain Becker
e4f558a50c
Android: un-needed check of "isPausing" and minor typos
2019-01-05 22:46:52 +01:00
Sylvain Becker
35722b6423
Android: fix wrong state after immediate sequence pause() / resume() / pause()
...
It may happen to have the sequence pause()/resume()/pause(), before polling
any events.
Before, it ends in 'resumed' state because as the check is greedy.
Now, always increase the Pause semaphore, and stop at each pause.
It ends in 'paused' state.
Related to bug 3250: set up a reconfiguration of SurfaceView holder.
Turn the screen off manually before the app starts
(repro rate is not 100%..)
2019-01-05 22:27:25 +01:00
Sam Lantinga
d4c0f498db
Fixed bug 4255 - SDL_GetGlobalMouseState() returns incorrect Y on secondary display
...
Julian Raschke
I use an open Mac laptop with an additional external monitor. The coordinate spaces from SDL_GetGlobalMouseState() and SDL_GetWindowPosition() match on the primary display, but not on the secondary display.
Cocoa window coordinates are vertically flipped in relation to the primary display:
https://github.com/spurious/SDL-mirror/blob/release-2.0.8/src/video/cocoa/SDL_cocoawindow.m#L219-L222
However, Cocoa_GetGlobalMouseState inverts the cursor Y coordinate per-display:
https://github.com/spurious/SDL-mirror/blob/release-2.0.8/src/video/cocoa/SDL_cocoamouse.m#L320-L323
Suggested fix: Replace the for-loop with this simpler calculation:
*x = (int) cocoaLocation.x;
*y = (int) (CGDisplayPixelsHigh(kCGDirectMainDisplay) - cocoaLocation.y);
2019-01-04 22:09:38 -08:00
Sam Lantinga
5e13087b0f
Updated copyright for 2019
2019-01-04 22:01:14 -08:00
Sylvain Becker
2a885eb036
Android: fixed immediate transition to pause and resume.
...
"Pause" transition will add events:
SDL_WINDOWEVENT_ENTER
SDL_WINDOWEVENT_FOCUS_LOST
SDL_WINDOWEVENT_MINIMIZED
SDL_APP_WILL ENTER BACKGROUND
SDL_APP_DID ENTER BACKGROUND
"Resume" transition will add events:
SDL_APP_WILL ENTER FOREGROUND
SDL_APP_DID ENTER FOREGROUND
SDL_WINDOWEVENT_FOCUS_GAINED
SDL_WINDOWEVENT_RESTORED
If Android application doesn't empty the event loop in between, it enters in
"paused" state when SDL_WINDOWEVENT_RESTORED is fetched.
See bug 3250 for pratical case.
2019-01-04 23:39:27 +01:00
Sylvain Becker
cf12234454
Android: make Android_PumpEvents() more readable
...
No behavior change in this commit.
2019-01-04 23:11:21 +01:00
Sylvain Becker
ca184ac386
Android: concurrency issue with egl_surface EGL_BAD_SURFACE - (bug 4142)
...
Occurs when application goes to background:
- Java activity is destroying SurfaceView holder and "egl_surface" (in onNativeSurfaceDestroyed())
- While native thread is in Android_GLES_SwapWindow(), prepared to call SDL_EGL_SwapBuffers()
The error is "call to eglSwapBuffers failed, reporting an error of EGL_BAD_SURFACE"
It an be reproduced easily by adding a SDL_Delay(100) at the begining of SDL_EGL_SwapBuffers(),
and putting the application into background.
2019-01-03 23:22:50 +01:00
Sylvain Becker
2e19343df6
Android: use Mutex instead of Semphore for bug 4142
2019-01-03 20:18:29 +01:00
Sylvain Becker
23478642bd
Android: prevent the error message from SDL_EGL_CreateSurface() to be masked.
2019-01-03 16:22:33 +01:00
Sylvain Becker
cc8f1136b6
Fixed bug 4142 - Concurrency issues in Android backend
...
Use a semaphore to prevent concurrency issues between Java Activity and Native thread code, when using 'Android_Window'.
(Eg. Java sending Touch events, while native code is destroying the main SDL_Window. )
2019-01-03 14:18:06 +01:00
Sylvain Becker
d11f7615fa
Android: minor preparation for bug 4142 (concurrency issues)
2019-01-03 13:38:33 +01:00
Sylvain Becker
5dc25fef3b
Android: preparation bug 4142, reduce usage of global variable Android_Window
2019-01-03 13:14:16 +01:00