Commit af4b97a2 authored by Miguel Casas's avatar Miguel Casas Committed by Commit Bot

ui/, gpu/...service/: improve error logging

This CL improves/adds some debugging info in case of failures in
the chain of creation of a SharedImage; it helped debugging the
Issue mentioned below.

Bug: 1015435
Change-Id: I2c80c6879a4a6b54ce80e76929d1e52b29cf6dff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1869719
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Reviewed-by: default avatarDaniele Castagna <dcastagna@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708230}
parent 53be9e01
......@@ -886,7 +886,8 @@ SharedImageBackingFactoryGLTexture::CreateSharedImage(
// A SCANOUT image should not require copy.
DCHECK(!image || image->ShouldBindOrCopy() == gl::GLImage::BIND);
if (!image || !image->BindTexImage(target)) {
LOG(ERROR) << "CreateSharedImage: Failed to create image";
LOG(ERROR) << "CreateSharedImage: Failed to "
<< (image ? "bind" : "create") << " image";
api->glDeleteTexturesFn(1, &service_id);
return nullptr;
}
......
......@@ -165,13 +165,15 @@ GpuMemoryBufferFactoryNativePixmap::CreateAnonymousImage(
#endif
if (!pixmap.get()) {
LOG(ERROR) << "Failed to create pixmap " << size.ToString() << ", "
<< gfx::BufferFormatToString(format);
<< gfx::BufferFormatToString(format) << ", usage "
<< gfx::BufferUsageToString(usage);
return nullptr;
}
auto image = base::MakeRefCounted<gl::GLImageNativePixmap>(size, format);
if (!image->Initialize(std::move(pixmap))) {
LOG(ERROR) << "Failed to create GLImage " << size.ToString() << ", "
<< gfx::BufferFormatToString(format);
<< gfx::BufferFormatToString(format) << ", usage "
<< gfx::BufferUsageToString(usage);
return nullptr;
}
*is_cleared = true;
......
......@@ -5,6 +5,7 @@
#include "ui/gl/gl_image_egl.h"
#include "ui/gl/egl_util.h"
#include "ui/gl/gl_enums.h"
#include "ui/gl/gl_surface_egl.h"
namespace gl {
......@@ -50,7 +51,11 @@ bool GLImageEGL::BindTexImage(unsigned target) {
DCHECK_EQ(BIND, ShouldBindOrCopy());
glEGLImageTargetTexture2DOES(target, egl_image_);
return glGetError() == static_cast<GLenum>(GL_NO_ERROR);
const GLenum error = glGetError();
DLOG_IF(ERROR, error != GL_NO_ERROR)
<< "Error binding EGLImage: " << GLEnums::GetStringError(error);
return error == GL_NO_ERROR;
}
} // namespace gl
......@@ -235,8 +235,19 @@ class Device final : public ui::GbmDevice {
uint32_t flags) override {
struct gbm_bo* bo =
gbm_bo_create(device_, size.width(), size.height(), format, flags);
if (!bo)
if (!bo) {
#if DCHECK_IS_ON()
const char fourcc_as_string[5] = {format & 0xFF, format >> 8 & 0xFF,
format >> 16 & 0xFF,
format >> 24 & 0xFF, 0};
LOG(WARNING) << "Failed to create GBM BO, " << fourcc_as_string << ", "
<< size.ToString() << ", flags: 0x" << std::hex << flags
<< "; gbm_device_is_format_supported() = "
<< gbm_device_is_format_supported(device_, format, flags);
#endif
return nullptr;
}
return CreateBufferForBO(bo, format, size, flags);
}
......
......@@ -42,11 +42,9 @@ uint32_t BufferUsageToGbmFlags(gfx::BufferUsage usage) {
return GBM_BO_USE_TEXTURING;
case gfx::BufferUsage::SCANOUT:
return GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT | GBM_BO_USE_TEXTURING;
break;
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
return GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE | GBM_BO_USE_SCANOUT |
GBM_BO_USE_TEXTURING;
break;
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE;
case gfx::BufferUsage::SCANOUT_CPU_READ_WRITE:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment