diff --git a/api/current.txt b/api/current.txt
index 1bba55b81ba2a..d732472256b00 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -14754,18 +14754,16 @@ package android.hardware {
field public static final int RGBX_8888 = 2; // 0x2
field public static final int RGB_565 = 4; // 0x4
field public static final int RGB_888 = 3; // 0x3
- field public static final long USAGE0_CPU_READ = 2L; // 0x2L
- field public static final long USAGE0_CPU_READ_OFTEN = 6L; // 0x6L
- field public static final long USAGE0_CPU_WRITE = 32L; // 0x20L
- field public static final long USAGE0_CPU_WRITE_OFTEN = 96L; // 0x60L
- field public static final long USAGE0_GPU_COLOR_OUTPUT = 2048L; // 0x800L
- field public static final long USAGE0_GPU_CUBEMAP = 8192L; // 0x2000L
- field public static final long USAGE0_GPU_DATA_BUFFER = 16384L; // 0x4000L
- field public static final long USAGE0_GPU_SAMPLED_IMAGE = 1024L; // 0x400L
- field public static final long USAGE0_GPU_STORAGE_IMAGE = 3072L; // 0xc00L
- field public static final long USAGE0_PROTECTED_CONTENT = 262144L; // 0x40000L
- field public static final long USAGE0_SENSOR_DIRECT_DATA = 536870912L; // 0x20000000L
- field public static final long USAGE0_VIDEO_ENCODE = 2097152L; // 0x200000L
+ field public static final long USAGE_CPU_READ_OFTEN = 3L; // 0x3L
+ field public static final long USAGE_CPU_READ_RARELY = 2L; // 0x2L
+ field public static final long USAGE_CPU_WRITE_OFTEN = 48L; // 0x30L
+ field public static final long USAGE_CPU_WRITE_RARELY = 32L; // 0x20L
+ field public static final long USAGE_GPU_COLOR_OUTPUT = 512L; // 0x200L
+ field public static final long USAGE_GPU_DATA_BUFFER = 16777216L; // 0x1000000L
+ field public static final long USAGE_GPU_SAMPLED_IMAGE = 256L; // 0x100L
+ field public static final long USAGE_PROTECTED_CONTENT = 16384L; // 0x4000L
+ field public static final long USAGE_SENSOR_DIRECT_DATA = 8388608L; // 0x800000L
+ field public static final long USAGE_VIDEO_ENCODE = 65536L; // 0x10000L
}
public final class Sensor {
diff --git a/api/system-current.txt b/api/system-current.txt
index 30a901778c938..f3926dfd18408 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -15532,18 +15532,16 @@ package android.hardware {
field public static final int RGBX_8888 = 2; // 0x2
field public static final int RGB_565 = 4; // 0x4
field public static final int RGB_888 = 3; // 0x3
- field public static final long USAGE0_CPU_READ = 2L; // 0x2L
- field public static final long USAGE0_CPU_READ_OFTEN = 6L; // 0x6L
- field public static final long USAGE0_CPU_WRITE = 32L; // 0x20L
- field public static final long USAGE0_CPU_WRITE_OFTEN = 96L; // 0x60L
- field public static final long USAGE0_GPU_COLOR_OUTPUT = 2048L; // 0x800L
- field public static final long USAGE0_GPU_CUBEMAP = 8192L; // 0x2000L
- field public static final long USAGE0_GPU_DATA_BUFFER = 16384L; // 0x4000L
- field public static final long USAGE0_GPU_SAMPLED_IMAGE = 1024L; // 0x400L
- field public static final long USAGE0_GPU_STORAGE_IMAGE = 3072L; // 0xc00L
- field public static final long USAGE0_PROTECTED_CONTENT = 262144L; // 0x40000L
- field public static final long USAGE0_SENSOR_DIRECT_DATA = 536870912L; // 0x20000000L
- field public static final long USAGE0_VIDEO_ENCODE = 2097152L; // 0x200000L
+ field public static final long USAGE_CPU_READ_OFTEN = 3L; // 0x3L
+ field public static final long USAGE_CPU_READ_RARELY = 2L; // 0x2L
+ field public static final long USAGE_CPU_WRITE_OFTEN = 48L; // 0x30L
+ field public static final long USAGE_CPU_WRITE_RARELY = 32L; // 0x20L
+ field public static final long USAGE_GPU_COLOR_OUTPUT = 512L; // 0x200L
+ field public static final long USAGE_GPU_DATA_BUFFER = 16777216L; // 0x1000000L
+ field public static final long USAGE_GPU_SAMPLED_IMAGE = 256L; // 0x100L
+ field public static final long USAGE_PROTECTED_CONTENT = 16384L; // 0x4000L
+ field public static final long USAGE_SENSOR_DIRECT_DATA = 8388608L; // 0x800000L
+ field public static final long USAGE_VIDEO_ENCODE = 65536L; // 0x10000L
}
public final class Sensor {
diff --git a/api/test-current.txt b/api/test-current.txt
index 6c1c4d0ab036f..c7a6a2121f7b2 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -14800,18 +14800,16 @@ package android.hardware {
field public static final int RGBX_8888 = 2; // 0x2
field public static final int RGB_565 = 4; // 0x4
field public static final int RGB_888 = 3; // 0x3
- field public static final long USAGE0_CPU_READ = 2L; // 0x2L
- field public static final long USAGE0_CPU_READ_OFTEN = 6L; // 0x6L
- field public static final long USAGE0_CPU_WRITE = 32L; // 0x20L
- field public static final long USAGE0_CPU_WRITE_OFTEN = 96L; // 0x60L
- field public static final long USAGE0_GPU_COLOR_OUTPUT = 2048L; // 0x800L
- field public static final long USAGE0_GPU_CUBEMAP = 8192L; // 0x2000L
- field public static final long USAGE0_GPU_DATA_BUFFER = 16384L; // 0x4000L
- field public static final long USAGE0_GPU_SAMPLED_IMAGE = 1024L; // 0x400L
- field public static final long USAGE0_GPU_STORAGE_IMAGE = 3072L; // 0xc00L
- field public static final long USAGE0_PROTECTED_CONTENT = 262144L; // 0x40000L
- field public static final long USAGE0_SENSOR_DIRECT_DATA = 536870912L; // 0x20000000L
- field public static final long USAGE0_VIDEO_ENCODE = 2097152L; // 0x200000L
+ field public static final long USAGE_CPU_READ_OFTEN = 3L; // 0x3L
+ field public static final long USAGE_CPU_READ_RARELY = 2L; // 0x2L
+ field public static final long USAGE_CPU_WRITE_OFTEN = 48L; // 0x30L
+ field public static final long USAGE_CPU_WRITE_RARELY = 32L; // 0x20L
+ field public static final long USAGE_GPU_COLOR_OUTPUT = 512L; // 0x200L
+ field public static final long USAGE_GPU_DATA_BUFFER = 16777216L; // 0x1000000L
+ field public static final long USAGE_GPU_SAMPLED_IMAGE = 256L; // 0x100L
+ field public static final long USAGE_PROTECTED_CONTENT = 16384L; // 0x4000L
+ field public static final long USAGE_SENSOR_DIRECT_DATA = 8388608L; // 0x800000L
+ field public static final long USAGE_VIDEO_ENCODE = 65536L; // 0x10000L
}
public final class Sensor {
diff --git a/core/java/android/hardware/HardwareBuffer.java b/core/java/android/hardware/HardwareBuffer.java
index 9d217d3652a0a..7049628b35909 100644
--- a/core/java/android/hardware/HardwareBuffer.java
+++ b/core/java/android/hardware/HardwareBuffer.java
@@ -70,37 +70,34 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable {
/** @hide */
@Retention(RetentionPolicy.SOURCE)
- @IntDef(flag = true, value = {USAGE0_CPU_READ, USAGE0_CPU_READ_OFTEN, USAGE0_CPU_WRITE,
- USAGE0_CPU_WRITE_OFTEN, USAGE0_GPU_SAMPLED_IMAGE, USAGE0_GPU_COLOR_OUTPUT,
- USAGE0_GPU_STORAGE_IMAGE, USAGE0_GPU_CUBEMAP, USAGE0_GPU_DATA_BUFFER,
- USAGE0_PROTECTED_CONTENT, USAGE0_SENSOR_DIRECT_DATA, USAGE0_VIDEO_ENCODE})
- public @interface Usage0 {};
+ @IntDef(flag = true, value = {USAGE_CPU_READ_RARELY, USAGE_CPU_READ_OFTEN,
+ USAGE_CPU_WRITE_RARELY, USAGE_CPU_WRITE_OFTEN, USAGE_GPU_SAMPLED_IMAGE,
+ USAGE_GPU_COLOR_OUTPUT, USAGE_PROTECTED_CONTENT, USAGE_VIDEO_ENCODE,
+ USAGE_GPU_DATA_BUFFER, USAGE_SENSOR_DIRECT_DATA})
+ public @interface Usage {};
- /** Usage0: the buffer will sometimes be read by the CPU */
- public static final long USAGE0_CPU_READ = (1 << 1);
- /** Usage0: the buffer will often be read by the CPU*/
- public static final long USAGE0_CPU_READ_OFTEN = (1 << 2 | USAGE0_CPU_READ);
- /** Usage0: the buffer will sometimes be written to by the CPU */
- public static final long USAGE0_CPU_WRITE = (1 << 5);
- /** Usage0: the buffer will often be written to by the CPU */
- public static final long USAGE0_CPU_WRITE_OFTEN = (1 << 6 | USAGE0_CPU_WRITE);
- /** Usage0: the buffer will be read from by the GPU */
- public static final long USAGE0_GPU_SAMPLED_IMAGE = (1 << 10);
- /** Usage0: the buffer will be written to by the GPU */
- public static final long USAGE0_GPU_COLOR_OUTPUT = (1 << 11);
- /** Usage0: the buffer will be read from and written to by the GPU */
- public static final long USAGE0_GPU_STORAGE_IMAGE = (USAGE0_GPU_SAMPLED_IMAGE |
- USAGE0_GPU_COLOR_OUTPUT);
- /** Usage0: the buffer will be used as a cubemap texture */
- public static final long USAGE0_GPU_CUBEMAP = (1 << 13);
- /** Usage0: the buffer will be used as a shader storage or uniform buffer object*/
- public static final long USAGE0_GPU_DATA_BUFFER = (1 << 14);
- /** Usage0: the buffer must not be used outside of a protected hardware path */
- public static final long USAGE0_PROTECTED_CONTENT = (1 << 18);
- /** Usage0: the buffer will be used for sensor direct data */
- public static final long USAGE0_SENSOR_DIRECT_DATA = (1 << 29);
- /** Usage0: the buffer will be read by a hardware video encoder */
- public static final long USAGE0_VIDEO_ENCODE = (1 << 21);
+ /** Usage: The buffer will sometimes be read by the CPU */
+ public static final long USAGE_CPU_READ_RARELY = 2;
+ /** Usage: The buffer will often be read by the CPU */
+ public static final long USAGE_CPU_READ_OFTEN = 3;
+
+ /** Usage: The buffer will sometimes be written to by the CPU */
+ public static final long USAGE_CPU_WRITE_RARELY = 2 << 4;
+ /** Usage: The buffer will often be written to by the CPU */
+ public static final long USAGE_CPU_WRITE_OFTEN = 3 << 4;
+
+ /** Usage: The buffer will be read from by the GPU */
+ public static final long USAGE_GPU_SAMPLED_IMAGE = 1 << 8;
+ /** Usage: The buffer will be written to by the GPU */
+ public static final long USAGE_GPU_COLOR_OUTPUT = 1 << 9;
+ /** Usage: The buffer must not be used outside of a protected hardware path */
+ public static final long USAGE_PROTECTED_CONTENT = 1 << 14;
+ /** Usage: The buffer will be read by a hardware video encoder */
+ public static final long USAGE_VIDEO_ENCODE = 1 << 16;
+ /** Usage: The buffer will be used for sensor direct data */
+ public static final long USAGE_SENSOR_DIRECT_DATA = 1 << 23;
+ /** Usage: The buffer will be used as a shader storage or uniform buffer object */
+ public static final long USAGE_GPU_DATA_BUFFER = 1 << 24;
// The approximate size of a native AHardwareBuffer object.
private static final long NATIVE_HARDWARE_BUFFER_SIZE = 232;
@@ -116,13 +113,11 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable {
* {@link #RGBX_8888}, {@link #RGB_565}, {@link #RGB_888}, {@link #RGBA_1010102}, {@link #BLOB}
* @param layers The number of layers in the buffer
* @param usage Flags describing how the buffer will be used, one of
- * {@link #USAGE0_CPU_READ}, {@link #USAGE0_CPU_READ_OFTEN}, {@link #USAGE0_CPU_WRITE},
- * {@link #USAGE0_CPU_WRITE_OFTEN}, {@link #USAGE0_GPU_SAMPLED_IMAGE},
- * {@link #USAGE0_GPU_COLOR_OUTPUT},{@link #USAGE0_GPU_STORAGE_IMAGE},
- * {@link #USAGE0_GPU_CUBEMAP}, {@link #USAGE0_GPU_DATA_BUFFER},
- * {@link #USAGE0_PROTECTED_CONTENT}, {@link #USAGE0_SENSOR_DIRECT_DATA},
- * {@link #USAGE0_VIDEO_ENCODE}
- *
+ * {@link #USAGE_CPU_READ_RARELY}, {@link #USAGE_CPU_READ_OFTEN},
+ * {@link #USAGE_CPU_WRITE_RARELY}, {@link #USAGE_CPU_WRITE_OFTEN},
+ * {@link #USAGE_GPU_SAMPLED_IMAGE}, {@link #USAGE_GPU_COLOR_OUTPUT},
+ * {@link #USAGE_GPU_DATA_BUFFER}, {@link #USAGE_PROTECTED_CONTENT},
+ * {@link #USAGE_SENSOR_DIRECT_DATA}, {@link #USAGE_VIDEO_ENCODE}
* @return A HardwareBuffer instance if successful, or throws an
* IllegalArgumentException if the dimensions passed are invalid (either zero, negative, or
* too large to allocate), if the format is not supported, if the requested number of layers
@@ -130,7 +125,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable {
*/
@NonNull
public static HardwareBuffer create(int width, int height, @Format int format, int layers,
- @Usage0 long usage) {
+ @Usage long usage) {
if (!HardwareBuffer.isSupportedFormat(format)) {
throw new IllegalArgumentException("Invalid pixel format " + format);
}
diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java
index 80cbde75efd2b..0dab5d7b14532 100644
--- a/core/java/android/hardware/SystemSensorManager.java
+++ b/core/java/android/hardware/SystemSensorManager.java
@@ -589,9 +589,9 @@ public class SystemSensorManager extends SensorManager {
"Width if HaradwareBuffer must be greater than "
+ MIN_DIRECT_CHANNEL_BUFFER_SIZE);
}
- if ((hardwareBuffer.getUsage() & HardwareBuffer.USAGE0_SENSOR_DIRECT_DATA) == 0) {
+ if ((hardwareBuffer.getUsage() & HardwareBuffer.USAGE_SENSOR_DIRECT_DATA) == 0) {
throw new IllegalArgumentException(
- "HardwareBuffer must set usage flag USAGE0_SENSOR_DIRECT_DATA");
+ "HardwareBuffer must set usage flag USAGE_SENSOR_DIRECT_DATA");
}
size = hardwareBuffer.getWidth();
id = nativeCreateDirectChannel(
diff --git a/core/jni/android_hardware_HardwareBuffer.cpp b/core/jni/android_hardware_HardwareBuffer.cpp
index 4b31c91c708c4..ba23450836610 100644
--- a/core/jni/android_hardware_HardwareBuffer.cpp
+++ b/core/jni/android_hardware_HardwareBuffer.cpp
@@ -80,14 +80,10 @@ static jlong android_hardware_HardwareBuffer_create(JNIEnv* env, jobject clazz,
}
return NULL;
}
- uint64_t producerUsage = 0;
- uint64_t consumerUsage = 0;
- android_hardware_HardwareBuffer_convertToGrallocUsageBits(
- &producerUsage, &consumerUsage, usage, 0);
+ uint64_t grallocUsage = AHardwareBuffer_convertToGrallocUsageBits(usage);
sp buffer = new GraphicBuffer(width, height, pixelFormat, layers,
- android_convertGralloc1To0Usage(producerUsage, consumerUsage),
- std::string("HardwareBuffer pid [") + std::to_string(getpid()) +"]");
+ grallocUsage, std::string("HardwareBuffer pid [") + std::to_string(getpid()) +"]");
status_t error = buffer->initCheck();
if (error < 0) {
if (kDebugGraphicBuffer) {
@@ -145,11 +141,7 @@ static jint android_hardware_HardwareBuffer_getLayers(JNIEnv* env,
static jlong android_hardware_HardwareBuffer_getUsage(JNIEnv* env,
jobject clazz, jlong nativeObject) {
GraphicBuffer* buffer = GraphicBufferWrapper_to_GraphicBuffer(nativeObject);
- uint64_t usage0 = 0;
- uint64_t usage1 = 0;
- android_hardware_HardwareBuffer_convertFromGrallocUsageBits(&usage0, &usage1,
- buffer->getUsage(), buffer->getUsage());
- return usage0;
+ return AHardwareBuffer_convertFromGrallocUsageBits(buffer->getUsage());
}
// ----------------------------------------------------------------------------
@@ -221,14 +213,8 @@ uint32_t android_hardware_HardwareBuffer_convertToPixelFormat(uint32_t format) {
return AHardwareBuffer_convertToPixelFormat(format);
}
-void android_hardware_HardwareBuffer_convertToGrallocUsageBits(uint64_t* outProducerUsage,
- uint64_t* outConsumerUsage, uint64_t usage0, uint64_t usage1) {
- AHardwareBuffer_convertToGrallocUsageBits(outProducerUsage, outConsumerUsage, usage0, usage1);
-}
-
-void android_hardware_HardwareBuffer_convertFromGrallocUsageBits(uint64_t* outUsage0,
- uint64_t* outUsage1, uint64_t producerUsage, uint64_t consumerUsage) {
- AHardwareBuffer_convertFromGrallocUsageBits(outUsage0, outUsage1, producerUsage, consumerUsage);
+uint64_t android_hardware_HardwareBuffer_convertToGrallocUsageBits(uint64_t usage) {
+ return AHardwareBuffer_convertToGrallocUsageBits(usage);
}
} // namespace android
diff --git a/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h b/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h
index 3545c565fb12b..c452b74c802bc 100644
--- a/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h
+++ b/core/jni/include/android_runtime/android_hardware_HardwareBuffer.h
@@ -32,22 +32,19 @@ extern jobject android_hardware_HardwareBuffer_createFromAHardwareBuffer(
JNIEnv* env, AHardwareBuffer* hardwareBuffer);
/* Convert from HAL_PIXEL_FORMAT values to AHARDWAREBUFFER_FORMAT values. */
-extern uint32_t android_hardware_HardwareBuffer_convertFromPixelFormat(
- uint32_t format);
+extern uint32_t android_hardware_HardwareBuffer_convertFromPixelFormat(uint32_t format);
/* Convert from AHARDWAREBUFFER_FORMAT values to HAL_PIXEL_FORMAT values. */
-extern uint32_t android_hardware_HardwareBuffer_convertToPixelFormat(
- uint32_t format);
+extern uint32_t android_hardware_HardwareBuffer_convertToPixelFormat(uint32_t format);
/* Convert from AHARDWAREBUFFER_USAGE* flags to to gralloc usage flags. */
-extern void android_hardware_HardwareBuffer_convertToGrallocUsageBits(
- uint64_t* outProducerUsage, uint64_t* outConsumerUsage, uint64_t usage0,
- uint64_t usage1);
+extern uint64_t android_hardware_HardwareBuffer_convertToGrallocUsageBits(uint64_t usage);
-/* Convert from gralloc usage flags to to AHARDWAREBUFFER_USAGE0* flags. */
-extern void android_hardware_HardwareBuffer_convertFromGrallocUsageBits(
- uint64_t* outUsage0, uint64_t* outUsage1, uint64_t producerUsage,
- uint64_t consumerUsage);
+inline void android_hardware_HardwareBuffer_convertToGrallocUsageBits(
+ uint64_t* outProducerUsage, uint64_t* outConsumerUsage, uint64_t usage, uint64_t) {
+ outProducerUsage[0] = outConsumerUsage[0] =
+ android_hardware_HardwareBuffer_convertToGrallocUsageBits(usage);
+}
} // namespace android
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index 06555c1fa90b6..ccdf5ae7fbf58 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -728,15 +728,15 @@ public class ImageReader implements AutoCloseable {
if (format == ImageFormat.PRIVATE) {
// Usage need to be either USAGE0_GPU_SAMPLED_IMAGE or USAGE0_VIDEO_ENCODE or combined.
- boolean isAllowed = (usage == HardwareBuffer.USAGE0_GPU_SAMPLED_IMAGE);
- isAllowed = isAllowed || (usage == HardwareBuffer.USAGE0_VIDEO_ENCODE);
+ boolean isAllowed = (usage == HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE);
+ isAllowed = isAllowed || (usage == HardwareBuffer.USAGE_VIDEO_ENCODE);
isAllowed = isAllowed || (usage ==
- (HardwareBuffer.USAGE0_VIDEO_ENCODE | HardwareBuffer.USAGE0_GPU_SAMPLED_IMAGE));
+ (HardwareBuffer.USAGE_VIDEO_ENCODE | HardwareBuffer.USAGE_GPU_SAMPLED_IMAGE));
return isAllowed;
} else {
// Usage need to make the buffer CPU readable for explicit format.
- return ((usage == HardwareBuffer.USAGE0_CPU_READ) ||
- (usage == HardwareBuffer.USAGE0_CPU_READ_OFTEN));
+ return ((usage == HardwareBuffer.USAGE_CPU_READ_RARELY) ||
+ (usage == HardwareBuffer.USAGE_CPU_READ_OFTEN));
}
}