COCKOS
CONFEDERATED FORUMS
Cockos : REAPER : NINJAM : Forums
Forum Home : Register : FAQ : Members List : Search :
Old 07-27-2016, 02:40 PM   #1
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 654
Default How are you dealing with binaries?

If you make plugin with a name "Plugin.vst" do you make it "Plugin64.vst" for the 64bit, or leave it the same? If you rename it what should I change, bundle id?
Youlean is offline   Reply With Quote
Old 07-27-2016, 11:20 PM   #2
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
Default

If you are using default WDL-OL (or even my WDL/IPlug) settings, then the OSX binaries will contain both 32 and 64-bit i.e. there are no separate 32/64-bit bundles.
Tale is offline   Reply With Quote
Old 07-28-2016, 01:15 AM   #3
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 654
Default

Quote:
Originally Posted by Tale View Post
If you are using default WDL-OL (or even my WDL/IPlug) settings, then the OSX binaries will contain both 32 and 64-bit i.e. there are no separate 32/64-bit bundles.
Really? But why there is an option to select target architecture (32bit/64bit)?
Youlean is offline   Reply With Quote
Old 07-28-2016, 01:39 AM   #4
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
Default

Quote:
Originally Posted by Youlean View Post
Really? But why there is an option to select target architecture (32bit/64bit)?
Because you can build only for a single architecture, e.g. if you no longer want to support 32-bit. But by default Architectures is set to Universal (32/64-bit Intel), which builds a universal binary.
Tale is offline   Reply With Quote
Old 07-28-2016, 02:10 AM   #5
jack461
Human being with feelings
 
jack461's Avatar
 
Join Date: Nov 2013
Location: France
Posts: 181
Default

Quote:
Originally Posted by Youlean View Post
Really? But why there is an option to select target architecture (32bit/64bit)?
This puzzles me too. While I can generate the 32/64 bit plug-in, in a 64-bit scheme, Xcode don't let me run REAPER, but only REAPER64:
Code:
the specified architecture 'x86_64' is not compatible with 'i386-apple-' in '/Applications/REAPER.app/Contents/MacOS/REAPER'
So I have one VST-32 scheme, with My Mac (32-bit) and REAPER, and one VST-64 scheme, with My Mac (64-bit) and REAPER64. This is just for fast testing from Xcode, because the generated VST is the same in both cases.

Of course, if I start REAPER or REAPER64 independently of Xcode, the VST works correctly in both applications, and displays in its window "32b" or "64b", based on the size of (void*).
Code:
char txt[24];
sprintf(txt, "V%d.%d.%d%s%s%s %s", (PLUG_VER>>16)&0xff, (PLUG_VER>>8)&0xff, PLUG_VER&0xff,
            (bldflgs ? "-" : ""), (bldflgs&1 ? "D" : ""), (bldflgs&2 ? "M" : ""),
            (sizeof(void*)==4?"32b":"64b"));
pGraphics->AttachControl(new ITextControl(this, tmpRectTT, &textPropsTT, txt));
By the way, It seems (very informally) that the 64bits version runs 10 to 20% faster than the 32bits versions (with Xcode 6.2, on an iMac 3.5 GHz Core I7), according to REAPER Performance Meter. Is there some good reason for this ?
jack461 is offline   Reply With Quote
Old 07-28-2016, 03:53 AM   #6
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
Default

Quote:
Originally Posted by jack461 View Post
By the way, It seems (very informally) that the 64bits version runs 10 to 20% faster than the 32bits versions (with Xcode 6.2, on an iMac 3.5 GHz Core I7), according to REAPER Performance Meter. Is there some good reason for this ?
x86-64 automatically implies SSE2, and proper alignment of doubles. I would kinda expect the same performance from i386, provided you enable SSE2, and properly align your doubles.
Tale is offline   Reply With Quote
Old 07-29-2016, 02:55 AM   #7
jack461
Human being with feelings
 
jack461's Avatar
 
Join Date: Nov 2013
Location: France
Posts: 181
Default

Quote:
Originally Posted by Tale View Post
x86-64 automatically implies SSE2, and proper alignment of doubles. I would kinda expect the same performance from i386, provided you enable SSE2, and properly align your doubles.
Tale, thanks for this idea. I'll try to find where to put this option.
jack461 is offline   Reply With Quote
Old 07-29-2016, 03:06 AM   #8
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
Default

BTW, if you do a lot of 64-bit int caclulations, then x64 will also be faster than x86.
Tale is offline   Reply With Quote
Old 07-29-2016, 11:52 AM   #9
jack461
Human being with feelings
 
jack461's Avatar
 
Join Date: Nov 2013
Location: France
Posts: 181
Default

Quote:
Originally Posted by Tale View Post
BTW, if you do a lot of 64-bit int caclulations, then x64 will also be faster than x86.
Tale, I'm not sure I understand your remark.
I'm using in Xcode "Architectures" with the value "Universal (32/64-bit Intel)", and "Valid Architectures" with the value "i386 x86_64".
Do you say that I should replace this by "x64", or something like this ?
jack461 is offline   Reply With Quote
Old 07-29-2016, 12:18 PM   #10
Tale
Human being with feelings
 
Tale's Avatar
 
Join Date: Jul 2008
Location: The Netherlands
Posts: 3,653
Default

Quote:
Originally Posted by jack461 View Post
Do you say that I should replace this by "x64", or something like this ?
No, I was just being lazy... On Windows 32-bit is usually called "x86" and 64-bit "x64" vs i386 and x86-64 on OSX. My remark about ints (and about SSE2) is valid on both Windows and OSX. Note that AFAIK double alignment is an issue only on OSX (I guess because the Microsoft compiler automatically properly aligns doubles).
Tale is offline   Reply With Quote
Old 07-29-2016, 02:19 PM   #11
jack461
Human being with feelings
 
jack461's Avatar
 
Join Date: Nov 2013
Location: France
Posts: 181
Default

Quote:
Originally Posted by Tale View Post
No, I was just being lazy... On Windows 32-bit is usually called "x86" and 64-bit "x64" vs i386 and x86-64 on OSX. My remark about ints (and about SSE2) is valid on both Windows and OSX. Note that AFAIK double alignment is an issue only on OSX (I guess because the Microsoft compiler automatically properly aligns doubles).
OK, thanks ! (As you can guess, I know little about Windows :-)
jack461 is offline   Reply With Quote
Old 07-29-2016, 04:06 PM   #12
Youlean
Human being with feelings
 
Youlean's Avatar
 
Join Date: May 2015
Location: Serbia
Posts: 654
Default

Also on 64bit architecture you can move 64bit of data in one cycle...
Youlean is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 04:13 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.