Loading services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -601,10 +601,6 @@ void GLES20RenderEngine::bindExternalTextureImage(uint32_t texName, } } void GLES20RenderEngine::readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) { glReadPixels(l, b, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels); } status_t GLES20RenderEngine::bindFrameBuffer(Framebuffer* framebuffer) { GLFramebuffer* glFramebuffer = static_cast<GLFramebuffer*>(framebuffer); EGLImageKHR eglImage = glFramebuffer->getEGLImage(); Loading services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h +0 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ public: void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) override; void bindExternalTextureImage(uint32_t texName, const Image& image) override; void readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) override; status_t bindFrameBuffer(Framebuffer* framebuffer) override; void unbindFrameBuffer(Framebuffer* framebuffer) override; void checkErrors() const override; Loading services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h +0 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,6 @@ public: virtual void genTextures(size_t count, uint32_t* names) = 0; virtual void deleteTextures(size_t count, uint32_t const* names) = 0; virtual void bindExternalTextureImage(uint32_t texName, const Image& image) = 0; virtual void readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) = 0; // When binding a native buffer, it must be done before setViewportAndProjection // Returns NO_ERROR when binds successfully, NO_MEMORY when there's no memory for allocation. virtual status_t bindFrameBuffer(Framebuffer* framebuffer) = 0; Loading services/surfaceflinger/SurfaceFlinger.cpp +3 −45 Original line number Diff line number Diff line Loading @@ -103,12 +103,6 @@ #define DISPLAY_COUNT 1 /* * DEBUG_SCREENSHOTS: set to true to check that screenshots are not all * black pixels. */ #define DEBUG_SCREENSHOTS false namespace android { using namespace android::hardware::configstore; Loading Loading @@ -5504,51 +5498,15 @@ status_t SurfaceFlinger::captureScreenImplLocked(const RenderArea& renderArea, // dependent on the context's EGLConfig. renderScreenImplLocked(renderArea, traverseLayers, useIdentityTransform); if (DEBUG_SCREENSHOTS) { getRenderEngine().finish(); *outSyncFd = -1; const auto reqWidth = renderArea.getReqWidth(); const auto reqHeight = renderArea.getReqHeight(); uint32_t* pixels = new uint32_t[reqWidth*reqHeight]; getRenderEngine().readPixels(0, 0, reqWidth, reqHeight, pixels); checkScreenshot(reqWidth, reqHeight, reqWidth, pixels, traverseLayers); delete [] pixels; } else { base::unique_fd syncFd = getRenderEngine().flush(); if (syncFd < 0) { getRenderEngine().finish(); } *outSyncFd = syncFd.release(); } return NO_ERROR; } void SurfaceFlinger::checkScreenshot(size_t w, size_t s, size_t h, void const* vaddr, TraverseLayersFunction traverseLayers) { if (DEBUG_SCREENSHOTS) { for (size_t y = 0; y < h; y++) { uint32_t const* p = (uint32_t const*)vaddr + y * s; for (size_t x = 0; x < w; x++) { if (p[x] != 0xFF000000) return; } } ALOGE("*** we just took a black screenshot ***"); size_t i = 0; traverseLayers([&](Layer* layer) { const Layer::State& state(layer->getDrawingState()); ALOGE("%c index=%zu, name=%s, layerStack=%d, z=%d, visible=%d, flags=%x, alpha=%.3f", layer->isVisible() ? '+' : '-', i, layer->getName().string(), layer->getLayerStack(), state.z, layer->isVisible(), state.flags, static_cast<float>(state.color.a)); i++; }); } } // --------------------------------------------------------------------------- void SurfaceFlinger::State::traverseInZOrder(const LayerVector::Visitor& visitor) const { Loading services/surfaceflinger/SurfaceFlinger.h +0 −2 Original line number Diff line number Diff line Loading @@ -756,8 +756,6 @@ private: void dumpAllLocked(const Vector<String16>& args, size_t& index, String8& result) const; bool startDdmConnection(); void appendSfConfigString(String8& result) const; void checkScreenshot(size_t w, size_t s, size_t h, void const* vaddr, TraverseLayersFunction traverseLayers); void logFrameStats(); Loading Loading
services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -601,10 +601,6 @@ void GLES20RenderEngine::bindExternalTextureImage(uint32_t texName, } } void GLES20RenderEngine::readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) { glReadPixels(l, b, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels); } status_t GLES20RenderEngine::bindFrameBuffer(Framebuffer* framebuffer) { GLFramebuffer* glFramebuffer = static_cast<GLFramebuffer*>(framebuffer); EGLImageKHR eglImage = glFramebuffer->getEGLImage(); Loading
services/surfaceflinger/RenderEngine/gl/GLES20RenderEngine.h +0 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,6 @@ public: void genTextures(size_t count, uint32_t* names) override; void deleteTextures(size_t count, uint32_t const* names) override; void bindExternalTextureImage(uint32_t texName, const Image& image) override; void readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) override; status_t bindFrameBuffer(Framebuffer* framebuffer) override; void unbindFrameBuffer(Framebuffer* framebuffer) override; void checkErrors() const override; Loading
services/surfaceflinger/RenderEngine/include/renderengine/RenderEngine.h +0 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,6 @@ public: virtual void genTextures(size_t count, uint32_t* names) = 0; virtual void deleteTextures(size_t count, uint32_t const* names) = 0; virtual void bindExternalTextureImage(uint32_t texName, const Image& image) = 0; virtual void readPixels(size_t l, size_t b, size_t w, size_t h, uint32_t* pixels) = 0; // When binding a native buffer, it must be done before setViewportAndProjection // Returns NO_ERROR when binds successfully, NO_MEMORY when there's no memory for allocation. virtual status_t bindFrameBuffer(Framebuffer* framebuffer) = 0; Loading
services/surfaceflinger/SurfaceFlinger.cpp +3 −45 Original line number Diff line number Diff line Loading @@ -103,12 +103,6 @@ #define DISPLAY_COUNT 1 /* * DEBUG_SCREENSHOTS: set to true to check that screenshots are not all * black pixels. */ #define DEBUG_SCREENSHOTS false namespace android { using namespace android::hardware::configstore; Loading Loading @@ -5504,51 +5498,15 @@ status_t SurfaceFlinger::captureScreenImplLocked(const RenderArea& renderArea, // dependent on the context's EGLConfig. renderScreenImplLocked(renderArea, traverseLayers, useIdentityTransform); if (DEBUG_SCREENSHOTS) { getRenderEngine().finish(); *outSyncFd = -1; const auto reqWidth = renderArea.getReqWidth(); const auto reqHeight = renderArea.getReqHeight(); uint32_t* pixels = new uint32_t[reqWidth*reqHeight]; getRenderEngine().readPixels(0, 0, reqWidth, reqHeight, pixels); checkScreenshot(reqWidth, reqHeight, reqWidth, pixels, traverseLayers); delete [] pixels; } else { base::unique_fd syncFd = getRenderEngine().flush(); if (syncFd < 0) { getRenderEngine().finish(); } *outSyncFd = syncFd.release(); } return NO_ERROR; } void SurfaceFlinger::checkScreenshot(size_t w, size_t s, size_t h, void const* vaddr, TraverseLayersFunction traverseLayers) { if (DEBUG_SCREENSHOTS) { for (size_t y = 0; y < h; y++) { uint32_t const* p = (uint32_t const*)vaddr + y * s; for (size_t x = 0; x < w; x++) { if (p[x] != 0xFF000000) return; } } ALOGE("*** we just took a black screenshot ***"); size_t i = 0; traverseLayers([&](Layer* layer) { const Layer::State& state(layer->getDrawingState()); ALOGE("%c index=%zu, name=%s, layerStack=%d, z=%d, visible=%d, flags=%x, alpha=%.3f", layer->isVisible() ? '+' : '-', i, layer->getName().string(), layer->getLayerStack(), state.z, layer->isVisible(), state.flags, static_cast<float>(state.color.a)); i++; }); } } // --------------------------------------------------------------------------- void SurfaceFlinger::State::traverseInZOrder(const LayerVector::Visitor& visitor) const { Loading
services/surfaceflinger/SurfaceFlinger.h +0 −2 Original line number Diff line number Diff line Loading @@ -756,8 +756,6 @@ private: void dumpAllLocked(const Vector<String16>& args, size_t& index, String8& result) const; bool startDdmConnection(); void appendSfConfigString(String8& result) const; void checkScreenshot(size_t w, size_t s, size_t h, void const* vaddr, TraverseLayersFunction traverseLayers); void logFrameStats(); Loading