[uae] Re: How is the Mac OS X binary built?

  • From: Richard Drummond <evilrich@xxxxxxxxxxxxxx>
  • To: uae@xxxxxxxxxxxxx
  • Date: Tue, 11 May 2004 14:46:15 -0500

Hi Byron

On Tuesday 11 May 2004 08:45 am, Byron Q. Desnoyers Winmill wrote:
> Is read_comm_pipe_pvoid_blocking() supposed to halt the execution
> of filesys_thread() until there is something in the pipe?  (If so,
> it would appear to be the problem.)

Yes.

Here's an idea. Trying adding the line 

#undef UAE_FILESYS_THREADS

to the top of filesys.c (after the #include directives). This should build a 
non-threaded version of the virtual filesystem (hard file support cannot 
currently be built without threads).

> > The performance of the thread layer is not significant to the
> > performance of UAE.
>
> This is because there is only n+1 threads, where n is the number
> of hardfiles?  If there are no hardfiles, which was the case when
> I was using the SDL linked version, then there is no impact on
> performance?

The virtual filesystem layer will also use threads if the UAE_FILESYS_THREADS 
macro is defined (the build scripts currently define it by default - this 
could be changed). So, yes, there'll be n+1 threads, where n is the number of 
emulated drives. The bsdsocket emulation and the SCSI emulation both use 
threads, too. In most cases, these systems are not critical to the overall 
performance of UAE, though. The major bottlenecks are the CPU emulation and 
the chipset emulation (including the rendering of the native display). Which 
of these two is the most significant depends on what kind of software you are 
running in the emulation.

> I haven't done a quantitative comparison, but it is very evident
> that the redraws are slower in SDL.  Whether this impacts on the
> performance of the rest of the emulator is an open question.

By 'redraws' you mean general screen update speed? This will affect the speed 
of UAE.

> Or perhaps the problem is with how SDL is being used.  I would
> imagine that the X version is still dealing with Quartz because I
> am using Apple's X server (in rootless mode, though I doubt that
> makes a difference).  I have also used the SDL version of Kegs
> (Apple IIgs emulator) without seeing a significant degredation of
> performance.

I'll have a look at UAE's SDL layer again. It's possible that it's doing some 
naive things. I know much more about the internals of SDL now then when I 
last worked on it (I've been hacking on the AmigaOS 4.0 port of SDL), so it's 
quite possible that things can be improved.

Cheers,
Rich

Other related posts: