Page MenuHomePhabricator

Implement eina_thread for native windows
AcceptedPublic

Authored by felipealmeida on Jun 29 2020, 7:50 AM.

Details

Summary

eina: Implement Eina_Thread for native windows

The implementation design respects the fact that Eina_Thread is an
uintptr_t. Thus we allocate the thread struct in the heap and return a
pointer to it.

As such, we store the created thread structure in the target thread
TLS slot. For threads that were not created through eina API, in
eina_thread_self we allocate a new structure, push it to the TLS slot
and mark it to be freed on thread exit.

Diff Detail

Repository
rEFL core/efl
Branch
devs/felipealmeida/eina-threads-windows
Lint
No Linters Available
Unit
No Unit Test Coverage
Build Status
Buildable 17439
Build 11701: arc lint + arc unit
walac created this revision.Jun 29 2020, 7:50 AM
walac requested review of this revision.Jun 29 2020, 7:50 AM

https://github.com/shr-project/enlightenment/blob/master/EXAMPLES/ecore_thread/fractale-fp.c

test this program on linux, then test it on windows and see if it is working nicely

src/lib/eina/eina_main.c
147 ↗(On Diff #30800)

i don't think it is correct : log should be init before any usage of the eina_log macro, and for example, inarray is using it

src/lib/eina/eina_thread.h
257

EINA_THREAD_USE_WIN32 is defined by the meson build system. So if someone wants to use the native implementation, it must define it

either you find a way to not use this macro (is _WIN32 sufficient ?) or maybe adding it in eina.pc

cedric added inline comments.Jun 29 2020, 9:24 AM
src/lib/eina/eina_thread.h
259

This is a symbol that will only exist on Windows and not on any other architecture, not sure it is the best way to go. You could move all those #if in a wrapping function, that would be a bit cleaner I think.

295

Same things here.

Thanks for the feedback. Indeed those points were missed in the internal review. Thanks.

vtorri added inline comments.Jun 29 2020, 9:37 AM
src/lib/eina/meson.build
275

i would like to quote Keith Marshall, one of the MinGW devs (not mingw-w64) : "it is useless to test something that will anyway exist."
So is it necessary to test if process.h exists as it will anyway exist on Windows. and _beginthreadex() will also necessarly exist on Windows (both exist since win xp)

so I think this part is useless, and as you said (and as recommended by msdn (https://docs.microsoft.com/en-us/windows/win32/api/processthreadsapi/nf-processthreadsapi-createthread) :

so simplify all this by using only _beginthreadex

vtorri added inline comments.Jun 29 2020, 9:39 AM
src/lib/eina/meson.build
206

i do not agree : this code will work with mingw-w64 too

walac added inline comments.Jun 29 2020, 10:04 AM
src/lib/eina/eina_main.c
147 ↗(On Diff #30800)

We have a cyclic dependency here then because the log implementation calls eina_thread_self, and it used to do so before eina_thread_init was called, and this impacted the windows implementation.

src/lib/eina/eina_thread.h
257

EINA_THREAD_USE_WIN32 is defined in eina_config.h, which is included by eina_thread.h. No further action is needed by the client, is it?

259

That was my first approach, but pthread_cleanup_push and pthread_cleanup_pop are defined as macros, which must be called in the same scope (at least in mingw), so it is not possible to isolate them in a function. So the solution was to create a custom function for Windows.

src/lib/eina/meson.build
206

So, should the implementation in mingw move from Posix to native?

try also expedite (https://git.enlightenment.org/tools/expedite.git/) with the software (gdi or ddraw) backend to benchmark it, compared to the current efl git

walac added inline comments.Jun 29 2020, 10:07 AM
src/lib/eina/meson.build
275

When developing, I was testing on mingw, and I didn't know if mingw has process.h and if this process.h is the same as msvcrt. The same applies for _beginthreadex.

cedric added inline comments.Jun 29 2020, 10:24 AM
src/lib/eina/eina_thread.h
259

Oh, that's annoying, but well, I guess that's the way to go then :-(

vtorri added inline comments.Jun 29 2020, 10:44 AM
src/lib/eina/eina_main.c
147 ↗(On Diff #30800)

so that must be solved in a way or another. like thread before log ?

src/lib/eina/eina_thread.h
257

and isn't _WIN32 sufficient ? I think it is.

src/lib/eina/meson.build
206

i told @jptiz that that was something that i wanted, if it works of course :-p

275

mingw is (basically) a setof headers compatible with the Windows SDK, needed to develop on Windows, and the import libraries. The rest (the DLL) are provided by Windows itself

you could also have tried git grep process.h or git grep _beginthreadex and see it is used...

so, don't worry, everything you will use is provided by mingw-w64

so remove the checks below and the check on mscv or clanc-cl, they are useless

for expedite, with and without -y parameter (async on/off)

walac updated this revision to Diff 30801.Jun 29 2020, 12:52 PM

Use native windows threads in mingw

walac updated this revision to Diff 30802.Jun 29 2020, 1:17 PM

Fix undefined behavior in eina_thread_self

walac marked 13 inline comments as done.Jun 29 2020, 1:36 PM
raster added a subscriber: raster.Jun 30 2020, 1:08 AM

as per inline comments

src/lib/eina/eina_main.c
122 ↗(On Diff #30802)

eina array and inarray use eina log and thus log needs to be initted before these are as already pointed out. this has o be solved in some form.

src/lib/eina/eina_thread.h
259

APIs inside an ifdef in a public header... bad... :( make it always there or not there... :)

297

as above. should always be there, or not exist in public API

src/lib/eina/eina_thread_win32.c
57

i know it isn't 100% necessary but can you at least init these to 0 or something explicitly? :)

59

i know it isn't 100% necessary but can you at least init these to 0 or something explicitly? :)

68

TlsGetValue returns a void *... no need to cast that. this is C not C++ :)

76

again - no need to cast void * to another pointer.

85

again - no need to cast void * to another pointer.

102

shouldn't this cast to Eina_Thread ? :)

115

again - no need to cast void * to another pointer.

122

can you explain _beginthreadex() more. any function from the system starting with a _ is instantly suspect as internal call to system lib and very likely to not be stable and break in future". that;'s the convention of starting with a _ char - don't do this basically... so can you justify the stability of this call that it won't change or disappear on us in a future windows update?

145

with if's it's cleaner to use brackets to clearly show intended grouping so here:

if ((affinity >= 0) && (!SetThreadAffinityMask(thr->handle, 1 << affinity)))

it;s a good habit to avoid mistakes on order-of-operation and makes it clear and explicit how the author wanted the logic grouped. can you do the same to other if's as well?

154

if () grouping here too

285

no cast needed here (void *)

vtorri added inline comments.Jun 30 2020, 1:52 AM
src/lib/eina/eina_thread_win32.c
122

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/beginthread-beginthreadex?view=vs-2019

microsoft has added plenty of underscores in front of CRT function names, see the left of the msdn page above :)

note that, for ecore, the handle returned by _beginthreadex() must wait with the WaitFor* functions, that is, it must be used with ecore_main_win32_handler_add()

ok. find with _beginthreadex(). a windows thing that _xxx funcs are ok... :|

walac updated this revision to Diff 30805.Jun 30 2020, 6:45 AM

Address raster's review comments

walac added inline comments.Jun 30 2020, 6:49 AM
src/lib/eina/eina_thread.h
259

The problem is that pthread_cleanup_push is not available on Windows, and it is implemented as a macro that requires pthread_cleanup_push and pthread_cleanup_pop be in the same scope, which makes impossible to isolate them in a function.

walac updated this revision to Diff 30806.Jun 30 2020, 11:38 AM

Add tests and fix bugs

walac updated this revision to Diff 30840.Jul 7 2020, 11:11 AM

Fix minor compatibility corner cases with the posix counterpart.

walac marked 12 inline comments as done.Nov 4 2020, 9:14 AM
vtorri added a comment.Nov 4 2020, 9:26 AM

have you tested with expedite and the fractal code ?

vtorri added inline comments.Nov 4 2020, 9:29 AM
src/lib/eina/eina_thread_posix.c
19

after config.h

src/lib/eina/eina_thread_win32.c
20

after config.h

walac added a comment.Nov 5 2020, 10:08 AM

have you tested with expedite and the fractal code ?

iirc, I couldn't compile the fracal app. The expedite I had to hijack some files to compile. I remember I didn't find any significant difference. Anyway, I have to rebase the code and will test it again.

@walac if you have problems with expedite or the fractal prog, open a task

walac added a comment.Nov 6 2020, 8:31 AM

have you tested with expedite and the fractal code ?

iirc, I couldn't compile the fracal app. The expedite I had to hijack some files to compile. I remember I didn't find any significant difference. Anyway, I have to rebase the code and will test it again.

Here are the results with expedite. The first column is the master branch, the second column is a second run of the master branch (which I call control group), the third is with this patch and the fourth is a second run with the patch applied. Results vary such that I have trouble to interpret them.

                                                 \: ter.txt             control     win32api-thread 2api-thread-control
                                Widgets File Icons:   84.43     91.04 (  +7.8%)    106.40 ( +26.0%)     97.56 ( +15.6%)
                              Widgets File Icons 2:  128.00    138.83 (  +8.5%)    125.98 (  -1.6%)    132.09 (  +3.2%)
                      Widgets File Icons 2 Grouped:  138.98    138.83 (  -0.1%)    141.28 (  +1.7%)    141.28 (  +1.7%)
                         Widgets File Icons 2 Same:  194.82    182.08 (  -6.5%)    210.18 (  +7.9%)    204.80 (  +5.1%)
                 Widgets File Icons 2 Same Grouped:  149.01    157.64 (  +5.8%)    138.83 (  -6.8%)    117.00 ( -21.5%)
                              Widgets File Icons 3:  315.27    315.27 (  +0.0%)    315.27 (  +0.0%)    315.27 (  +0.0%)
                              Widgets File Icons 4:  151.66    178.03 ( +17.4%)    195.12 ( +28.7%)    199.69 ( +31.7%)
                                      Widgets List:  455.52    481.20 (  +5.6%)    455.52 (  +0.0%)    455.52 (  +0.0%)
                              Widgets List Grouped:  455.52    430.98 (  -5.4%)    455.52 (  +0.0%)    453.90 (  -0.4%)
                                    Widgets List 2:  481.20    453.90 (  -5.7%)    481.20 (  +0.0%)    455.52 (  -5.3%)
                            Widgets List 2 Grouped:  430.98    410.26 (  -4.8%)    430.98 (  +0.0%)    481.20 ( +11.7%)
                                    Widgets List 3:  315.27    341.33 (  +8.3%)    356.55 ( +13.1%)    356.55 ( +13.1%)
                            Widgets List 3 Grouped:  315.27    328.21 (  +4.1%)    341.33 (  +8.3%)    341.33 (  +8.3%)
                                    Widgets List 4:  341.33    327.37 (  -4.1%)    355.56 (  +4.2%)    341.33 (  +0.0%)
                            Widgets List 4 Grouped:  341.33    328.21 (  -3.8%)    372.09 (  +9.0%)    355.56 (  +4.2%)
                              Image Blend Unscaled:  390.24    390.24 (  +0.0%)    390.24 (  +0.0%)    390.24 (  +0.0%)
                 Image Blend Solid Middle Unscaled:  178.03    178.03 (  +0.0%)    178.03 (  +0.0%)    178.03 (  +0.0%)
                         Image Blend Fade Unscaled:  328.21    341.33 (  +4.0%)    341.33 (  +4.0%)    327.37 (  -0.3%)
                 Image Blend Fade Power 2 Unscaled:  341.33    315.27 (  -7.6%)    341.33 (  +0.0%)    341.33 (  +0.0%)
                        Image Blend Solid Unscaled:  186.05    178.03 (  -4.3%)    195.12 (  +4.9%)    204.80 ( +10.1%)
                   Image Blend Solid Fade Unscaled:  390.24    390.24 (  +0.0%)    390.24 (  +0.0%)    372.09 (  -4.7%)
           Image Blend Solid Fade Power 2 Unscaled:  372.09    390.24 (  +4.9%)    372.09 (  +0.0%)    373.18 (  +0.3%)
                        Image Blend Nearest Scaled:  138.83    138.83 (  +0.0%)    138.83 (  +0.0%)    141.12 (  +1.6%)
                  Image Blend Nearest Solid Scaled:  547.01    481.20 ( -12.0%)    547.01 (  +0.0%)    584.47 (  +6.8%)
                         Image Blend Smooth Scaled:   27.77     27.77 (  +0.0%)     27.58 (  -0.7%)     27.77 (  +0.0%)
                   Image Blend Smooth Solid Scaled:  327.37    341.33 (  +4.3%)    328.21 (  +0.3%)    341.33 (  +4.3%)
                   Image Blend Nearest Same Scaled:  630.54    630.54 (  +0.0%)    512.00 ( -18.8%)    630.54 (  +0.0%)
             Image Blend Nearest Solid Same Scaled:  356.55    341.33 (  -4.3%)    327.37 (  -8.2%)    372.09 (  +4.4%)
                    Image Blend Smooth Same Scaled:  544.68    584.47 (  +7.3%)    630.54 ( +15.8%)    584.47 (  +7.3%)
              Image Blend Smooth Solid Same Scaled:  372.09    315.27 ( -15.3%)    292.91 ( -21.3%)    341.33 (  -8.3%)
                                Image Blend Border:   32.77     32.76 (  -0.0%)     32.12 (  -2.0%)     32.13 (  -2.0%)
                   Image Blend Solid Middle Border:  282.56    292.91 (  +3.7%)    303.32 (  +7.3%)    303.32 (  +7.3%)
                          Image Blend Solid Border:  356.55    356.55 (  +0.0%)    341.33 (  -4.3%)    315.27 ( -11.6%)
                         Image Blend Solid Stretch:  272.92    292.24 (  +7.1%)    315.27 ( +15.5%)    303.32 ( +11.1%)
                          Image Blend Solid 9patch:   76.56     75.16 (  -1.8%)     76.56 (  +0.0%)     76.56 (  +0.0%)
                        Image Blend Border Recolor:   32.77     32.90 (  +0.4%)     32.64 (  -0.4%)     32.50 (  -0.8%)
                                  Image Map Rotate:   86.20     86.25 (  +0.1%)     84.49 (  -2.0%)     85.33 (  -1.0%)
                            Image Map Solid Rotate:   93.09     93.09 (  +0.0%)     94.12 (  +1.1%)     91.04 (  -2.2%)
                          Image Map Nearest Rotate:  256.00    256.00 (  +0.0%)    264.46 (  +3.3%)    264.46 (  +3.3%)
                    Image Map Nearest Solid Rotate:  356.55    356.55 (  +0.0%)    356.55 (  +0.0%)    341.33 (  -4.3%)
                            Image Map Color Rotate:   73.82     73.14 (  -0.9%)     73.78 (  -0.1%)     72.48 (  -1.8%)
                      Image Map Color Solid Rotate:   78.77     78.77 (  +0.0%)     78.77 (  +0.0%)     77.29 (  -1.9%)
                    Image Map Color Nearest Rotate:  105.00    107.74 (  +2.6%)    106.40 (  +1.3%)    109.22 (  +4.0%)
              Image Map Color Nearest Solid Rotate:  118.74    118.74 (  +0.0%)    120.53 (  +1.5%)    120.53 (  +1.5%)
                      Image Map Color Alpha Rotate:   73.14     73.82 (  +0.9%)     74.46 (  +1.8%)     73.82 (  +0.9%)
                Image Map Color Alpha Solid Rotate:   67.69     66.08 (  -2.4%)     67.16 (  -0.8%)     67.16 (  -0.8%)
              Image Map Color Alpha Nearest Rotate:  106.40    105.00 (  -1.3%)    109.22 (  +2.7%)    107.74 (  +1.3%)
        Image Map Color Alpha Nearest Solid Rotate:   97.56     95.24 (  -2.4%)     96.39 (  -1.2%)     97.56 (  +0.0%)
                                    Image Map 3D 1:  272.92    282.56 (  +3.5%)    314.50 ( +15.2%)    292.24 (  +7.1%)
                                    Image Map 3D 2:  221.45    234.00 (  +5.7%)    241.05 (  +8.9%)    248.06 ( +12.0%)
                                    Image Map 3D 3:  186.05    182.08 (  -2.1%)    199.69 (  +7.3%)    182.08 (  -2.1%)
                                    Image Map 3D 4:  146.29    136.61 (  -6.6%)    149.01 (  +1.9%)    149.01 (  +1.9%)
                                    Image Map 3D 5:  341.33    303.32 ( -11.1%)    390.24 ( +14.3%)    356.55 (  +4.5%)
                                    Image Map 3D 6:  584.47    544.68 (  -6.8%)    630.54 (  +7.9%)    627.45 (  +7.4%)
                                 Image Map 3D Flow:  264.46    264.46 (  +0.0%)    282.56 (  +6.8%)    273.50 (  +3.4%)
                               Image Quality Scale:  372.09    390.24 (  +4.9%)    390.24 (  +4.9%)    390.24 (  +4.9%)
                                   Image Data ARGB:  630.54    630.54 (  +0.0%)    744.19 ( +18.0%)    815.29 ( +29.3%)
                             Image Data ARGB Alpha:  356.55    341.33 (  -4.3%)    372.09 (  +4.4%)    356.55 (  +0.0%)
                 Image Data YCbCr 601 Pointer List:  544.68    630.54 ( +15.8%)    680.85 ( +25.0%)    630.54 ( +15.8%)
     Image Data YCbCr 601 Pointer List Wide Stride:  373.18    481.20 ( +28.9%)    455.52 ( +22.1%)    512.00 ( +37.2%)
Image Data YCbCr 601 Pointer List Map Solid Rotate:  341.33    341.33 (  +0.0%)    356.55 (  +4.5%)    315.27 (  -7.6%)

Image Data YCbCr 601 Pointer List Map Nearest Solid Rotate: 327.37 356.55 ( +8.9%) 355.56 ( +8.6%) 341.33 ( +4.3%)

                    Image Crossfade:  584.47    744.19 ( +27.3%)    584.47 (  +0.0%)    512.00 ( -12.4%)
                         Text Basic:  744.19    744.19 (  +0.0%)    684.49 (  -8.0%)    744.19 (  +0.0%)
                        Text Styles:  112.18    112.18 (  +0.0%)    112.18 (  +0.0%)    110.63 (  -1.4%)
      Text Styles Different Strings:   81.12     81.12 (  +0.0%)     81.12 (  +0.0%)     80.35 (  -0.9%)
                        Text Change:  282.56    272.92 (  -3.4%)    303.32 (  +7.3%)    240.60 ( -14.8%)
                    Textblock Basic:  680.85    684.49 (  +0.5%)    630.54 (  -7.4%)    684.49 (  +0.5%)
                     Textblock Intl:  820.51    820.51 (  +0.0%)    820.51 (  +0.0%)    680.85 ( -17.0%)
               Textblock auto align: 1174.31    907.80 ( -22.7%)   1361.70 ( +16.0%)    820.51 ( -30.1%)
              Textblock text_append:  512.00    630.54 ( +23.2%)    680.85 ( +33.0%)    680.85 ( +33.0%)
         Textblock text_fill_format:   55.34     55.72 (  +0.7%)     56.12 (  +1.4%)     55.36 (  +0.0%)
                         Rect Blend:  408.95    410.26 (  +0.3%)    356.55 ( -12.8%)    390.24 (  -4.6%)
                 Rect Blend Power 2:  390.24    356.55 (  -8.6%)    410.26 (  +5.1%)    430.98 ( +10.4%)
                         Rect Solid:  256.00    281.94 ( +10.1%)    303.32 ( +18.5%)    328.21 ( +28.2%)
                     Rect Blend Few: 1641.03    684.49 ( -58.3%)   1641.03 (  +0.0%)   2064.52 ( +25.8%)
             Rect Blend Power 2 Few: 1641.03   1174.31 ( -28.4%)   1620.25 (  -1.3%)   1620.25 (  -1.3%)
                     Rect Solid Few: 1361.70   1163.64 ( -14.5%)   1376.34 (  +1.1%)   1376.34 (  +1.1%)
          Image Blend Occlude 1 Few: 1024.00   1174.31 ( +14.7%)   1163.64 ( +13.6%)   1163.64 ( +13.6%)
          Image Blend Occlude 2 Few:  547.01    544.68 (  -0.4%)    455.52 ( -16.7%)    630.54 ( +15.3%)
          Image Blend Occlude 3 Few:  907.80    820.51 (  -9.6%)    907.80 (  +0.0%)    820.51 (  -9.6%)
              Image Blend Occlude 1:  512.00    744.19 ( +45.3%)    748.54 ( +46.2%)    630.54 ( +23.2%)
              Image Blend Occlude 2:  410.26    356.55 ( -13.1%)    389.06 (  -5.2%)    408.95 (  -0.3%)
              Image Blend Occlude 3:  512.00    547.01 (  +6.8%)    547.01 (  +6.8%)    483.02 (  -5.7%)
         Image Blend Occlude 1 Many:  544.68    544.68 (  +0.0%)    455.52 ( -16.4%)    544.68 (  +0.0%)
         Image Blend Occlude 2 Many:  292.91    303.32 (  +3.6%)    292.24 (  -0.2%)    282.56 (  -3.5%)
         Image Blend Occlude 3 Many:  263.92    264.46 (  +0.2%)    256.00 (  -3.0%)    272.92 (  +3.4%)
    Image Blend Occlude 1 Very Many:  154.59    154.59 (  +0.0%)    143.82 (  -7.0%)    154.59 (  +0.0%)
    Image Blend Occlude 2 Very Many:   39.38     39.57 (  +0.5%)     40.15 (  +2.0%)     40.35 (  +2.5%)
    Image Blend Occlude 3 Very Many:   41.37     41.17 (  -0.5%)     41.37 (  +0.0%)     40.76 (  -1.5%)
                      Polygon Blend:  227.35    234.00 (  +2.9%)    234.43 (  +3.1%)    234.00 (  +2.9%)
         Image Blend Unscaled Proxy:  390.24    410.26 (  +5.1%)    408.95 (  +4.8%)    410.26 (  +5.1%)
          Image Blend Clipped Proxy:  914.29    815.29 ( -10.8%)    914.29 (  +0.0%)    907.80 (  -0.7%)
                    Proxy Textblock: 1024.00   1376.34 ( +34.4%)   1641.03 ( +60.3%)   1641.03 ( +60.3%)
                   Proxy Text Fixed:  389.06    408.95 (  +5.1%)    390.24 (  +0.3%)    356.55 (  -8.4%)
                  Proxy Text Random:  630.54    584.47 (  -7.3%)    680.85 (  +8.0%)    630.54 (  +0.0%)
                         Line Blend:  200.00    182.08 (  -9.0%)    200.00 (  +0.0%)    199.69 (  -0.2%)
Image Blend Many Smooth Down Scaled:   11.22     11.35 (  +1.2%)     11.22 (  +0.0%)     11.24 (  +0.2%)
           Font Effect Blur (Alpha):  248.54    241.05 (  -3.0%)    248.54 (  +0.0%)    241.05 (  -3.0%)
           Font Effect Blur (Color):   82.74     82.74 (  +0.0%)     82.74 (  +0.0%)     81.12 (  -2.0%)
                         Image Mask:  240.60    263.92 (  +9.7%)    256.00 (  +6.4%)    263.92 (  +9.7%)
                       Image Mask 2:  282.56    264.46 (  -6.4%)    282.56 (  +0.0%)    292.91 (  +3.7%)
                       Image Mask 3:  241.05    248.06 (  +2.9%)    256.00 (  +6.2%)    248.06 (  +2.9%)
                       Image Mask 4:  151.66    154.59 (  +1.9%)    154.59 (  +1.9%)    157.64 (  +3.9%)
                       Image Mask 5:  341.33    341.33 (  +0.0%)    327.37 (  -4.1%)    327.37 (  -4.1%)
                       Image Mask 6:  430.98    455.52 (  +5.7%)    408.95 (  -5.1%)    455.52 (  +5.7%)
                       Image Mask 7:  204.80    204.80 (  +0.0%)    200.00 (  -2.3%)    199.69 (  -2.5%)
                       Image Mask 8:  587.16    587.16 (  +0.0%)    584.47 (  -0.5%)    584.47 (  -0.5%)
                       Image Mask 9:  234.00    234.00 (  +0.0%)    234.00 (  +0.0%)    241.05 (  +3.0%)
                      Image Mask 10:  248.06    248.06 (  +0.0%)    248.54 (  +0.2%)    256.00 (  +3.2%)
                      Image Mask 11:  102.40    101.11 (  -1.3%)    103.64 (  +1.2%)    101.19 (  -1.2%)
                      Image Mask 12:   23.81     23.89 (  +0.3%)     23.81 (  +0.0%)     23.81 (  +0.0%)
                      Image Mask 13:   75.87     75.87 (  +0.0%)     75.87 (  +0.0%)     76.56 (  +0.9%)
                 Image Mask Clipped:  263.92    272.92 (  +3.4%)    256.00 (  -3.0%)    263.92 (  +0.0%)
                      VG Basic Rect:  453.90    481.20 (  +6.0%)    430.98 (  -5.0%)    483.02 (  +6.4%)
                    VG Basic Circle:  390.24    430.98 ( +10.4%)    390.24 (  +0.0%)    430.98 ( +10.4%)
                  VG Basic Gradient:  282.56    272.92 (  -3.4%)    282.56 (  +0.0%)    292.91 (  +3.7%)
                          VG Scaled:  122.25    122.25 (  +0.0%)    122.25 (  +0.0%)    129.95 (  +6.3%)
        Snapshot Widgets File Icons:   55.36     51.20 (  -7.5%)     53.20 (  -3.9%)     54.98 (  -0.7%)
cedric accepted this revision.Nov 6 2020, 8:52 AM

As long as expedite test pass and everyone comments has been addressed, I think this is good to go. The thread API is not used by EFL in the hot path, so that part is not the important bit. Maintenance and fitting into the host OS is more important.

I don't think that even if you run expedite 20 times with your CPU power saving disable you would anything.

This revision is now accepted and ready to land.Nov 6 2020, 8:52 AM
walac added a comment.Nov 6 2020, 9:23 AM

As long as expedite test pass and everyone comments has been addressed, I think this is good to go. The thread API is not used by EFL in the hot path, so that part is not the important bit. Maintenance and fitting into the host OS is more important.

I don't think that even if you run expedite 20 times with your CPU power saving disable you would anything.

I believe I addressed everything. Just updated the rebased code.

walac updated this revision to Diff 31238.Nov 9 2020, 5:51 AM

Address comments and rebase the code

walac updated this revision to Diff 31239.Nov 9 2020, 5:53 AM

Code rebase

jptiz accepted this revision.Nov 9 2020, 6:05 AM
felipealmeida commandeered this revision.Dec 15 2020, 11:45 AM
felipealmeida edited reviewers, added: walac; removed: felipealmeida.
felipealmeida edited the summary of this revision. (Show Details)Dec 15 2020, 12:03 PM

@vtorri: Can you take a look?