![]() |
#1 |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
CPUFeatures plug-in
Hi!
I recently created a plug-in to detect the CPU features (MMX, SSE, AVX, etc) at runtime. Since I didn't want to re-invent the wheel, I simply created a wrapper-library around the CPU detection code from x264 and then built the NSIS plug-in on top. This was mainly created for my own needs, but I though it might be useful for others too. Note: Some CPU features are not currently detected, such as "3DNow!", because it probably was never relevant for x264. I maybe will hack that in at a later time, if anybody still needs that nowadays. Also there are some x264-specifc flags you can simply ignore... Wiki page: http://nsis.sourceforge.net/CPUFeatures_plug-in Testing on different CPU's would be appreciated, so I have attached test app ![]() My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
![]() |
![]() |
![]() |
#2 |
Major Dude
Join Date: Oct 2006
Posts: 1,892
|
As a matter of fact I was in need of a 3DNow CPU just two weeks ago. Thanks for sharing!
|
![]() |
![]() |
![]() |
#3 |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
Okay, I hacked in support for 3DNow! and 3DNow!Ex. And I also added a function to get the no. of CPU cores:
http://nsis.sourceforge.net/CPUFeatures_plug-in (3DNow! support is completely untested, as my last AMD machine died a while ago) My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
![]() |
![]() |
![]() |
#4 | |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
Quote:
My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
|
![]() |
![]() |
![]() |
#5 |
Major Dude
Join Date: Oct 2006
Posts: 1,892
|
This is going to be really helpful to some people, thank you.
|
![]() |
![]() |
![]() |
#6 |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
You're welcome.
I just added another function to check for multiple features at once. Might simplify things a bit in some situations, I think. My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
![]() |
![]() |
![]() |
#7 |
Major Dude
Join Date: Oct 2006
Posts: 1,892
|
If you feel crazy, you could maybe write wrapper macros for ${If} ${Supports3DNow!} or ${If} ${CPUSupports} "MMX" or something. But only if you feel crazy. :-)
|
![]() |
![]() |
![]() |
#8 |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
Unfortunately I'm not enough crazy to understand LogicLib
![]() (I mean that I understand how to use it, actually I use it extensively, but I have not been able to follow its code) My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
![]() |
![]() |
![]() |
#9 |
Major Dude
Join Date: Oct 2006
Posts: 1,892
|
code: Didn't test this, but it looks ok to me. By the way, I see you're still using /NOUNLOAD. If you're still using the old plugin model, you might want to update it.. |
![]() |
![]() |
![]() |
#10 | |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
Quote:
Actually I think I do use the new model (with callback function), so I might be able to simply drop the /NOUNLOAD. My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
|
![]() |
![]() |
![]() |
#11 |
Major Dude
Join Date: Sep 2005
Location: Somewhere over the Slaughterhouse
Posts: 797
|
Okay, I added the LogicLib support macros, as suggested.
But in the last line it must be _== instead of _=. That gave me quite a headache! ![]() New version here: http://nsis.sourceforge.net/CPUFeatures_plug-in My Plugins: StdUtils | NSISList | CPUFeatures | ExecTimeout | KillProc My source of inspiration: http://youtu.be/lCwY4_0W1YI |
![]() |
![]() |
![]() |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|