Intel® Embree Ray Tracing Kernels
Discussion forum on the open source ray tracing kernels for fast photo-realistic rendering on Intel® CPU(s)

embree on vista and any processor



first let me thank you for a great library. I am going to use it in my project, but there are two problems:

- I need to use it on Vista

- I need to use it on a bit older processors with SSE_2 support (also AMD)

Is there a chance that version 2.0 will automatically select code for given processor at runtime?

Now I can compile for sse 3.0 or 4.2 to get maximum speed but limiting program usage to latest processors,

or compile to SSE_2 and lose most of its power...

Also Vista support would be a big plus.

0 Kudos
2 Replies

Embree requires at least SSSE3, compiling the code for earlier SSE versions will fail. We will relax this requirement in the future, however, older CPUs will not see best performance. Embree does currently not support automatic code selection at runtime.

Could you please post the compile issue you have with Windows Vista?

0 Kudos

OK, I commented:

//#define __SSE4_2__ 

in platform.h, now it works on processors since core 2 duo.

About Vista:

it does not work on vanila Vista (without service pack, and I did not test it with SP) when I compile it on Win8.

What I do:

changed #if (_WIN32_WINNT >= 0x0601) code to its #elseif that is:

size_t getNumberOfLogicalThreads()
  SYSTEM_INFO sysinfo;
  return sysinfo.dwNumberOfProcessors;

void setAffinity(HANDLE thread, ssize_t affinity)


 if (!SetThreadAffinityMask(thread, DWORD_PTR(uint64(1) << affinity)))
 throw std::runtime_error("cannot set thread affinity mask");
 if (SetThreadIdealProcessor(thread, (DWORD)affinity) == (DWORD)-1)
 throw std::runtime_error("cannot set thread ideal processor");

Now it works on Vista.

Another question about library usage, how should I annotate my commercial product?

"This program uses Embree Ray Tracing Kernels Licensed under the Apache License, Version 2.0  " is it OK?

0 Kudos