Merge "[HWUI] provide supportMixedColorSpaces() function for hwui."
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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},
|
||||
|
||||
Reference in New Issue
Block a user