Loading services/surfaceflinger/CompositionEngine/src/RenderSurface.cpp +4 −12 Original line number Diff line number Diff line Loading @@ -42,15 +42,14 @@ // TODO(b/129481165): remove the #pragma below and fix conversion issues #pragma clang diagnostic pop // ignored "-Wconversion" // Uncomment to enable RE-SK workarounds; b/b/168499446 //#define USE_SKIA_WORKAROUNDS namespace android::compositionengine { RenderSurface::~RenderSurface() = default; namespace impl { constexpr auto DEFAULT_USAGE = GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE; std::unique_ptr<compositionengine::RenderSurface> createRenderSurface( const compositionengine::CompositionEngine& compositionEngine, compositionengine::Display& display, Loading Loading @@ -84,11 +83,7 @@ void RenderSurface::initialize() { ALOGE_IF(status != NO_ERROR, "Unable to connect BQ producer: %d", status); status = native_window_set_buffers_format(window, HAL_PIXEL_FORMAT_RGBA_8888); ALOGE_IF(status != NO_ERROR, "Unable to set BQ format to RGBA888: %d", status); #ifdef USE_SKIA_WORKAROUNDS status = native_window_set_usage(window, GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE); #else status = native_window_set_usage(window, GRALLOC_USAGE_HW_RENDER); #endif status = native_window_set_usage(window, DEFAULT_USAGE); ALOGE_IF(status != NO_ERROR, "Unable to set BQ usage bits for GPU rendering: %d", status); } Loading Loading @@ -116,13 +111,10 @@ void RenderSurface::setBufferPixelFormat(ui::PixelFormat pixelFormat) { } void RenderSurface::setProtected(bool useProtected) { uint64_t usageFlags = GRALLOC_USAGE_HW_RENDER; uint64_t usageFlags = DEFAULT_USAGE; if (useProtected) { usageFlags |= GRALLOC_USAGE_PROTECTED; } #ifdef USE_SKIA_WORKAROUNDS usageFlags |= GRALLOC_USAGE_HW_TEXTURE; #endif const int status = native_window_set_usage(mNativeWindow.get(), usageFlags); ALOGE_IF(status != NO_ERROR, "Unable to set BQ usage bits for protected content: %d", status); if (status == NO_ERROR) { Loading services/surfaceflinger/CompositionEngine/tests/RenderSurfaceTest.cpp +15 −6 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ TEST_F(RenderSurfaceTest, initializeConfiguresNativeWindow) { EXPECT_CALL(*mNativeWindow, connect(NATIVE_WINDOW_API_EGL)).WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setBuffersFormat(HAL_PIXEL_FORMAT_RGBA_8888)) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER)).WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE)) .WillOnce(Return(NO_ERROR)); mSurface.initialize(); } Loading Loading @@ -136,7 +137,9 @@ TEST_F(RenderSurfaceTest, setBufferDataspaceAppliesChange) { TEST_F(RenderSurfaceTest, setProtectedTrueEnablesProtection) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_PROTECTED)) EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_PROTECTED)) .WillOnce(Return(NO_ERROR)); mSurface.setProtected(true); Loading @@ -145,7 +148,8 @@ TEST_F(RenderSurfaceTest, setProtectedTrueEnablesProtection) { TEST_F(RenderSurfaceTest, setProtectedFalseDisablesProtection) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER)).WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE)) .WillOnce(Return(NO_ERROR)); mSurface.setProtected(false); EXPECT_FALSE(mSurface.isProtected()); Loading @@ -153,9 +157,12 @@ TEST_F(RenderSurfaceTest, setProtectedFalseDisablesProtection) { TEST_F(RenderSurfaceTest, setProtectedEnableAndDisable) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_PROTECTED)) EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_PROTECTED)) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE)) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER)).WillOnce(Return(NO_ERROR)); mSurface.setProtected(true); EXPECT_TRUE(mSurface.isProtected()); Loading @@ -165,7 +172,9 @@ TEST_F(RenderSurfaceTest, setProtectedEnableAndDisable) { TEST_F(RenderSurfaceTest, setProtectedEnableWithError) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_PROTECTED)) EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_PROTECTED)) .WillOnce(Return(INVALID_OPERATION)); mSurface.setProtected(true); EXPECT_FALSE(mSurface.isProtected()); Loading Loading
services/surfaceflinger/CompositionEngine/src/RenderSurface.cpp +4 −12 Original line number Diff line number Diff line Loading @@ -42,15 +42,14 @@ // TODO(b/129481165): remove the #pragma below and fix conversion issues #pragma clang diagnostic pop // ignored "-Wconversion" // Uncomment to enable RE-SK workarounds; b/b/168499446 //#define USE_SKIA_WORKAROUNDS namespace android::compositionengine { RenderSurface::~RenderSurface() = default; namespace impl { constexpr auto DEFAULT_USAGE = GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE; std::unique_ptr<compositionengine::RenderSurface> createRenderSurface( const compositionengine::CompositionEngine& compositionEngine, compositionengine::Display& display, Loading Loading @@ -84,11 +83,7 @@ void RenderSurface::initialize() { ALOGE_IF(status != NO_ERROR, "Unable to connect BQ producer: %d", status); status = native_window_set_buffers_format(window, HAL_PIXEL_FORMAT_RGBA_8888); ALOGE_IF(status != NO_ERROR, "Unable to set BQ format to RGBA888: %d", status); #ifdef USE_SKIA_WORKAROUNDS status = native_window_set_usage(window, GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE); #else status = native_window_set_usage(window, GRALLOC_USAGE_HW_RENDER); #endif status = native_window_set_usage(window, DEFAULT_USAGE); ALOGE_IF(status != NO_ERROR, "Unable to set BQ usage bits for GPU rendering: %d", status); } Loading Loading @@ -116,13 +111,10 @@ void RenderSurface::setBufferPixelFormat(ui::PixelFormat pixelFormat) { } void RenderSurface::setProtected(bool useProtected) { uint64_t usageFlags = GRALLOC_USAGE_HW_RENDER; uint64_t usageFlags = DEFAULT_USAGE; if (useProtected) { usageFlags |= GRALLOC_USAGE_PROTECTED; } #ifdef USE_SKIA_WORKAROUNDS usageFlags |= GRALLOC_USAGE_HW_TEXTURE; #endif const int status = native_window_set_usage(mNativeWindow.get(), usageFlags); ALOGE_IF(status != NO_ERROR, "Unable to set BQ usage bits for protected content: %d", status); if (status == NO_ERROR) { Loading
services/surfaceflinger/CompositionEngine/tests/RenderSurfaceTest.cpp +15 −6 Original line number Diff line number Diff line Loading @@ -82,7 +82,8 @@ TEST_F(RenderSurfaceTest, initializeConfiguresNativeWindow) { EXPECT_CALL(*mNativeWindow, connect(NATIVE_WINDOW_API_EGL)).WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setBuffersFormat(HAL_PIXEL_FORMAT_RGBA_8888)) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER)).WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE)) .WillOnce(Return(NO_ERROR)); mSurface.initialize(); } Loading Loading @@ -136,7 +137,9 @@ TEST_F(RenderSurfaceTest, setBufferDataspaceAppliesChange) { TEST_F(RenderSurfaceTest, setProtectedTrueEnablesProtection) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_PROTECTED)) EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_PROTECTED)) .WillOnce(Return(NO_ERROR)); mSurface.setProtected(true); Loading @@ -145,7 +148,8 @@ TEST_F(RenderSurfaceTest, setProtectedTrueEnablesProtection) { TEST_F(RenderSurfaceTest, setProtectedFalseDisablesProtection) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER)).WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE)) .WillOnce(Return(NO_ERROR)); mSurface.setProtected(false); EXPECT_FALSE(mSurface.isProtected()); Loading @@ -153,9 +157,12 @@ TEST_F(RenderSurfaceTest, setProtectedFalseDisablesProtection) { TEST_F(RenderSurfaceTest, setProtectedEnableAndDisable) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_PROTECTED)) EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_PROTECTED)) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE)) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER)).WillOnce(Return(NO_ERROR)); mSurface.setProtected(true); EXPECT_TRUE(mSurface.isProtected()); Loading @@ -165,7 +172,9 @@ TEST_F(RenderSurfaceTest, setProtectedEnableAndDisable) { TEST_F(RenderSurfaceTest, setProtectedEnableWithError) { EXPECT_FALSE(mSurface.isProtected()); EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_PROTECTED)) EXPECT_CALL(*mNativeWindow, setUsage(GRALLOC_USAGE_HW_RENDER | GRALLOC_USAGE_HW_TEXTURE | GRALLOC_USAGE_PROTECTED)) .WillOnce(Return(INVALID_OPERATION)); mSurface.setProtected(true); EXPECT_FALSE(mSurface.isProtected()); Loading