Top Description Methods
org.lwjgl.util.mapped

public @Interface MappedType

extends Annotation
Annotations
@Retention:RUNTIME
@Target:TYPE
Imports
java.lang.annotation.ElementType, .Retention, .RetentionPolicy, .Target

This annotation marks a class as a mapped object, which will go under bytecode transformation at runtime. Mapped objects cannot be instantiated directly; a data buffer must be mapped first and the mapped object instance will then be used as a view on top of the buffer. Instead of a separate instance per "element" in the buffer, only a single instance is used to manage everything. See MappedObject for API details and org.lwjgl.test.mapped.TestMappedObject for examples.

The instance fields of the annotated class should only be limited to primitive types or java.nio.ByteBuffer. Static fields are supported and they can have any type.

The purpose of mapped objects is to reduce the memory requirements required for the type of data that are often used in OpenGL/OpenCL programming, while at the same time enabling clean Java code. There are also performance benefits related to not having to copy data between buffers and Java objects and the removal of bounds checking when accessing buffer data.

Author
Riven

Method Summary

Modifier and TypeMethod and Description
public int

Returns:

the memory alignment
align
()

The mapped data memory alignment, in bytes.

public boolean

Returns:

true if automatic byte offset generation is required.
autoGenerateOffsets
()

When autoGenerateOffsets is true, byte offsets of the mapped fields will be generated automatically.

public boolean

Returns:

if cache-line padding should be applied
cacheLinePadding
()

When true, SIZEOF will be increased (if necessary) so that it's a multiple of the CPU cache line size.

public int

Returns:

the padding amount
padding
()

The number of bytes to add to the total byte size.

Inherited from java.lang.annotation.Annotation:
annotationTypeequalshashCodetoString

Method Detail

alignback to summary
public int align()

The mapped data memory alignment, in bytes.

Returns:int

the memory alignment

autoGenerateOffsetsback to summary
public boolean autoGenerateOffsets()

When autoGenerateOffsets is true, byte offsets of the mapped fields will be generated automatically. This is convenient for packed data. For manually aligned data, autoGenerateOffsets must be set to false and the user needs to manually specify byte offsets using the MappedField annotation.

Returns:boolean

true if automatic byte offset generation is required.

cacheLinePaddingback to summary
public boolean cacheLinePadding()

When true, SIZEOF will be increased (if necessary) so that it's a multiple of the CPU cache line size. Additionally, MappedObject#malloc(int) on the mapped object type will automatically use CacheUtil#createByteBuffer(int) instead of the unaligned org.lwjgl.BufferUtils#createByteBuffer(int).

Cannot be used with padding().

Returns:boolean

if cache-line padding should be applied

See Also
CacheUtil
paddingback to summary
public int padding()

The number of bytes to add to the total byte size. SIZEOF will be calculated as SIZEOF = max(field_offset + field_length) + padding.

Cannot be used with cacheLinePadding().

Returns:int

the padding amount