Previous 199869 Revisions Next

r34233 Wednesday 7th January, 2015 at 13:28:50 UTC by Oliver Stöneberg
osd_work: removed maximum thread limit for WORK_QUEUE_FLAG_HIGH_FREQ queue on Windows (nw)

with the new SPIN_LOOP_TIME value it now scales
[src/osd/modules/sync]work_osd.c

trunk/src/osd/modules/sync/work_osd.c
r242744r242745
250250
251251   if (osdworkqueuemaxthreads != NULL && sscanf(osdworkqueuemaxthreads, "%d", &osdthreadnum) == 1 && threadnum > osdthreadnum)
252252      threadnum = osdthreadnum;
253   // TODO: also enable this for non-Windows platforms?
254   // TODO: it appears lowering SPIN_LOOP_TIME value fixed the scaling issues - needs a test case with a higher workload than n64dd
255#if defined(OSD_WINDOWS)
256   // multi-queues with high frequency items should top out at 3 for now
257   // since we have scaling problems above that
258   if ((flags & WORK_QUEUE_FLAG_HIGH_FREQ) && threadnum > 1)
259      threadnum = MIN(threadnum - 1, 3);
260#endif
261253
262254   // clamp to the maximum
263255   queue->threads = MIN(threadnum, WORK_MAX_THREADS);


Previous 199869 Revisions Next


© 1997-2024 The MAME Team