Merge "[HWUI] provide supportMixedColorSpaces() function for hwui."

This commit is contained in:
Sally Qi
2023-01-10 21:32:01 +00:00
committed by Android (Google) Code Review
6 changed files with 41 additions and 9 deletions

View File

@@ -58,6 +58,16 @@ public final class OverlayProperties implements Parcelable {
return nSupportFp16ForHdr(mNativeObject);
}
/**
* @return True if the device can support mixed colorspaces, false otherwise.
*/
public boolean supportMixedColorSpaces() {
if (mNativeObject == 0) {
return false;
}
return nSupportMixedColorSpaces(mNativeObject);
}
/**
* Release the local reference.
*/
@@ -106,6 +116,7 @@ public final class OverlayProperties implements Parcelable {
private static native long nGetDestructor();
private static native boolean nSupportFp16ForHdr(long nativeObject);
private static native boolean nSupportMixedColorSpaces(long nativeObject);
private static native void nWriteOverlayPropertiesToParcel(long nativeObject, Parcel dest);
private static native long nReadOverlayPropertiesFromParcel(Parcel in);
}

View File

@@ -69,6 +69,16 @@ static jboolean android_hardware_OverlayProperties_supportFp16ForHdr(JNIEnv* env
return false;
}
static jboolean android_hardware_OverlayProperties_supportMixedColorSpaces(JNIEnv* env,
jobject thiz,
jlong nativeObject) {
gui::OverlayProperties* properties = reinterpret_cast<gui::OverlayProperties*>(nativeObject);
if (properties != nullptr && properties->supportMixedColorSpaces) {
return true;
}
return false;
}
// ----------------------------------------------------------------------------
// Serialization
// ----------------------------------------------------------------------------
@@ -128,6 +138,8 @@ static const JNINativeMethod gMethods[] = {
{ "nGetDestructor", "()J", (void*) android_hardware_OverlayProperties_getDestructor },
{ "nSupportFp16ForHdr", "(J)Z",
(void*) android_hardware_OverlayProperties_supportFp16ForHdr },
{ "nSupportMixedColorSpaces", "(J)Z",
(void*) android_hardware_OverlayProperties_supportMixedColorSpaces },
{ "nWriteOverlayPropertiesToParcel", "(JLandroid/os/Parcel;)V",
(void*) android_hardware_OverlayProperties_write },
{ "nReadOverlayPropertiesFromParcel", "(Landroid/os/Parcel;)J",

View File

@@ -1334,6 +1334,8 @@ public class HardwareRenderer {
final OverlayProperties overlayProperties = defaultDisplay.getOverlaySupport();
boolean supportFp16ForHdr = overlayProperties != null
? overlayProperties.supportFp16ForHdr() : false;
boolean supportMixedColorSpaces = overlayProperties != null
? overlayProperties.supportMixedColorSpaces() : false;
for (int i = 0; i < allDisplays.length; i++) {
final Display display = allDisplays[i];
@@ -1361,7 +1363,7 @@ public class HardwareRenderer {
nInitDisplayInfo(largestWidth, largestHeight, defaultDisplay.getRefreshRate(),
wideColorDataspace, defaultDisplay.getAppVsyncOffsetNanos(),
defaultDisplay.getPresentationDeadlineNanos(),
supportFp16ForHdr);
supportFp16ForHdr, supportMixedColorSpaces);
mDisplayInitialized = true;
}
@@ -1542,7 +1544,7 @@ public class HardwareRenderer {
private static native void nInitDisplayInfo(int width, int height, float refreshRate,
int wideColorDataspace, long appVsyncOffsetNanos, long presentationDeadlineNanos,
boolean supportsFp16ForHdr);
boolean supportsFp16ForHdr, boolean nInitDisplayInfo);
private static native void nSetDrawingEnabled(boolean drawingEnabled);

View File

@@ -108,6 +108,10 @@ void DeviceInfo::setSupportFp16ForHdr(bool supportFp16ForHdr) {
get()->mSupportFp16ForHdr = supportFp16ForHdr;
}
void DeviceInfo::setSupportMixedColorSpaces(bool supportMixedColorSpaces) {
get()->mSupportMixedColorSpaces = supportMixedColorSpaces;
}
void DeviceInfo::onRefreshRateChanged(int64_t vsyncPeriod) {
mVsyncPeriod = vsyncPeriod;
}

View File

@@ -62,6 +62,9 @@ public:
static void setSupportFp16ForHdr(bool supportFp16ForHdr);
static bool isSupportFp16ForHdr() { return get()->mSupportFp16ForHdr; };
static void setSupportMixedColorSpaces(bool supportMixedColorSpaces);
static bool isSupportMixedColorSpaces() { return get()->mSupportMixedColorSpaces; };
// this value is only valid after the GPU has been initialized and there is a valid graphics
// context or if you are using the HWUI_NULL_GPU
int maxTextureSize() const;
@@ -92,6 +95,7 @@ private:
int mMaxTextureSize;
sk_sp<SkColorSpace> mWideColorSpace = SkColorSpace::MakeSRGB();
bool mSupportFp16ForHdr = false;
bool mSupportMixedColorSpaces = false;
SkColorType mWideColorType = SkColorType::kN32_SkColorType;
int mDisplaysSize = 0;
int mPhysicalDisplayIndex = -1;

View File

@@ -829,12 +829,10 @@ static void android_view_ThreadedRenderer_setDisplayDensityDpi(JNIEnv*, jclass,
DeviceInfo::setDensity(density);
}
static void android_view_ThreadedRenderer_initDisplayInfo(JNIEnv* env, jclass, jint physicalWidth,
jint physicalHeight, jfloat refreshRate,
jint wideColorDataspace,
jlong appVsyncOffsetNanos,
jlong presentationDeadlineNanos,
jboolean supportFp16ForHdr) {
static void android_view_ThreadedRenderer_initDisplayInfo(
JNIEnv* env, jclass, jint physicalWidth, jint physicalHeight, jfloat refreshRate,
jint wideColorDataspace, jlong appVsyncOffsetNanos, jlong presentationDeadlineNanos,
jboolean supportFp16ForHdr, jboolean supportMixedColorSpaces) {
DeviceInfo::setWidth(physicalWidth);
DeviceInfo::setHeight(physicalHeight);
DeviceInfo::setRefreshRate(refreshRate);
@@ -842,6 +840,7 @@ static void android_view_ThreadedRenderer_initDisplayInfo(JNIEnv* env, jclass, j
DeviceInfo::setAppVsyncOffsetNanos(appVsyncOffsetNanos);
DeviceInfo::setPresentationDeadlineNanos(presentationDeadlineNanos);
DeviceInfo::setSupportFp16ForHdr(supportFp16ForHdr);
DeviceInfo::setSupportMixedColorSpaces(supportMixedColorSpaces);
}
static void android_view_ThreadedRenderer_setDrawingEnabled(JNIEnv*, jclass, jboolean enabled) {
@@ -991,7 +990,7 @@ static const JNINativeMethod gMethods[] = {
{"nSetForceDark", "(JZ)V", (void*)android_view_ThreadedRenderer_setForceDark},
{"nSetDisplayDensityDpi", "(I)V",
(void*)android_view_ThreadedRenderer_setDisplayDensityDpi},
{"nInitDisplayInfo", "(IIFIJJZ)V", (void*)android_view_ThreadedRenderer_initDisplayInfo},
{"nInitDisplayInfo", "(IIFIJJZZ)V", (void*)android_view_ThreadedRenderer_initDisplayInfo},
{"preload", "()V", (void*)android_view_ThreadedRenderer_preload},
{"isWebViewOverlaysEnabled", "()Z",
(void*)android_view_ThreadedRenderer_isWebViewOverlaysEnabled},