/** * Get the endianness common to all devices of this context, or null if the devices have mismatching endiannesses. */ public ByteOrder getByteOrder() { if (byteOrder == null) { ByteOrder order = null; for (CLDevice device : getDevices()) { ByteOrder devOrder = device.getByteOrder(); if (order != null && devOrder != order) return null; order = devOrder; } byteOrder = order; } return byteOrder; }
/** * Get the endianness common to all devices of this context, or null if the devices have mismatching endiannesses. */ public ByteOrder getByteOrder() { if (byteOrder == null) { ByteOrder order = null; for (CLDevice device : getDevices()) { ByteOrder devOrder = device.getByteOrder(); if (order != null && devOrder != order) return null; order = devOrder; } byteOrder = order; } return byteOrder; }
public static ByteOrder guessByteOrderNeededForBuffers(CLDevice device) { CLPlatform platform = device.getPlatform(); PlatformUtils.PlatformKind knownPlatform = PlatformUtils.guessPlatformKind(platform); if (!hackEnabled || knownPlatform != PlatformUtils.PlatformKind.AMDApp) return device.getByteOrder(); else return checkByteOrderNeededForBuffers(device); } public static ByteOrder checkByteOrderNeededForBuffers(CLDevice device) {
public static ByteOrder guessByteOrderNeededForBuffers(CLDevice device) { CLPlatform platform = device.getPlatform(); PlatformUtils.PlatformKind knownPlatform = PlatformUtils.guessPlatformKind(platform); if (!hackEnabled || knownPlatform != PlatformUtils.PlatformKind.AMDApp) return device.getByteOrder(); else return checkByteOrderNeededForBuffers(device); } public static ByteOrder checkByteOrderNeededForBuffers(CLDevice device) {
/** Moves this buffer to host memory and release device buffer. */ @SuppressWarnings("unchecked") @Override public void export() { if (byteBuffer != null) return; // Already on host. if (clBuffer == null) throw new UnsupportedOperationException( "The device buffer has already been released."); if (getByteCount() > Integer.MAX_VALUE) throw new UnsupportedOperationException( "Buffer byte count exceeds java.nio.ByteBuffer maximum capacity"); byteBuffer = ByteBuffer.allocateDirect((int) getByteCount()).order( clQueue.getDevice().getByteOrder()); clBuffer.read(clQueue, (Pointer<Byte>) Pointer.pointerToBuffer(byteBuffer), true /* blocking */, updateEvent); release(); }
@Test public void test() { if (!ByteOrderHack.hackEnabled) return; for (CLPlatform platform : JavaCL.listPlatforms()) { for (CLDevice device : platform.listAllDevices(true)) { assertEquals(device.getByteOrder(), ByteOrderHack.checkByteOrderNeededForBuffers(device)); } } } }
}), queue.getDevice().getByteOrder()); gl.glTexImage2D ( GL2.GL_TEXTURE_2D,