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.
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?
OK, I commented:
in platform.h, now it works on processors since core 2 duo.
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:
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
http://www.apache.org/licenses/LICENSE-2.0 " is it OK?