[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: LuaJIT with vectors
- From: Mike Pall <mikelu-1011@...>
- Date: Fri, 19 Nov 2010 16:02:22 +0100
Petri Häkkinen wrote:
> > Assuming 3d vectors throughout this would give an allocation size
> > of 8+3*sizeof(double) = 32 bytes for the FFI cdata.
>
> How about using 32-bit floats instead with FFI? Float precision is enough
> for games and most game engines use them for better cache utilization.
Maybe for permanent storage. But I doubt this is a win for
temporaries: they really ought to be kept in registers by the
JIT compiler.
> Question: how would vector component indexing work with FFI? If I have a
> C-type "struct { float x, y, z; }" will "v.x" work in Lua?
That's the exact syntax.
> I guess that would automatically convert from float to double?
Yes, and that's the downside: the conversion ops add 2 or 4 cycles
of latency. It would be quite difficult to force pure float/float
ops everywhere (would imply boxing/unboxing even float scalars).
But I'd suggest to benchmark it when everything is ready. I'm not
sure about the tradeoff between conversion overhead vs. memory
bandwidth in this case.
--Mike