SF: Trigger ANR when buffer exceeds max size
Bug: 244218818
Test: presubmits
Change-Id: I1116f159c002ae896379a18c14bbe76406b67d44
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 13bfd62..ec5dc0e 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -7022,9 +7022,16 @@
BufferData& bufferData, const char* layerName, uint64_t transactionId) {
if (bufferData.buffer &&
exceedsMaxRenderTargetSize(bufferData.buffer->getWidth(), bufferData.buffer->getHeight())) {
- ALOGE("Attempted to create an ExternalTexture for layer %s that exceeds render target "
- "size limit.",
- layerName);
+ std::string errorMessage =
+ base::StringPrintf("Attempted to create an ExternalTexture with size (%u, %u) for "
+ "layer %s that exceeds render target size limit of %u.",
+ bufferData.buffer->getWidth(), bufferData.buffer->getHeight(),
+ layerName, static_cast<uint32_t>(mMaxRenderTargetSize));
+ ALOGD("%s", errorMessage.c_str());
+ if (bufferData.releaseBufferListener) {
+ bufferData.releaseBufferListener->onTransactionQueueStalled(
+ String8(errorMessage.c_str()));
+ }
return nullptr;
}