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( ...@@ -886,7 +886,8 @@ SharedImageBackingFactoryGLTexture::CreateSharedImage(
// A SCANOUT image should not require copy. // A SCANOUT image should not require copy.
DCHECK(!image || image->ShouldBindOrCopy() == gl::GLImage::BIND); DCHECK(!image || image->ShouldBindOrCopy() == gl::GLImage::BIND);
if (!image || !image->BindTexImage(target)) { 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); api->glDeleteTexturesFn(1, &service_id);
return nullptr; return nullptr;
} }
......
...@@ -165,13 +165,15 @@ GpuMemoryBufferFactoryNativePixmap::CreateAnonymousImage( ...@@ -165,13 +165,15 @@ GpuMemoryBufferFactoryNativePixmap::CreateAnonymousImage(
#endif #endif
if (!pixmap.get()) { if (!pixmap.get()) {
LOG(ERROR) << "Failed to create pixmap " << size.ToString() << ", " LOG(ERROR) << "Failed to create pixmap " << size.ToString() << ", "
<< gfx::BufferFormatToString(format); << gfx::BufferFormatToString(format) << ", usage "
<< gfx::BufferUsageToString(usage);
return nullptr; return nullptr;
} }
auto image = base::MakeRefCounted<gl::GLImageNativePixmap>(size, format); auto image = base::MakeRefCounted<gl::GLImageNativePixmap>(size, format);
if (!image->Initialize(std::move(pixmap))) { if (!image->Initialize(std::move(pixmap))) {
LOG(ERROR) << "Failed to create GLImage " << size.ToString() << ", " LOG(ERROR) << "Failed to create GLImage " << size.ToString() << ", "
<< gfx::BufferFormatToString(format); << gfx::BufferFormatToString(format) << ", usage "
<< gfx::BufferUsageToString(usage);
return nullptr; return nullptr;
} }
*is_cleared = true; *is_cleared = true;
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "ui/gl/gl_image_egl.h" #include "ui/gl/gl_image_egl.h"
#include "ui/gl/egl_util.h" #include "ui/gl/egl_util.h"
#include "ui/gl/gl_enums.h"
#include "ui/gl/gl_surface_egl.h" #include "ui/gl/gl_surface_egl.h"
namespace gl { namespace gl {
...@@ -50,7 +51,11 @@ bool GLImageEGL::BindTexImage(unsigned target) { ...@@ -50,7 +51,11 @@ bool GLImageEGL::BindTexImage(unsigned target) {
DCHECK_EQ(BIND, ShouldBindOrCopy()); DCHECK_EQ(BIND, ShouldBindOrCopy());
glEGLImageTargetTexture2DOES(target, egl_image_); 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 } // namespace gl
...@@ -235,8 +235,19 @@ class Device final : public ui::GbmDevice { ...@@ -235,8 +235,19 @@ class Device final : public ui::GbmDevice {
uint32_t flags) override { uint32_t flags) override {
struct gbm_bo* bo = struct gbm_bo* bo =
gbm_bo_create(device_, size.width(), size.height(), format, flags); 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 nullptr;
}
return CreateBufferForBO(bo, format, size, flags); return CreateBufferForBO(bo, format, size, flags);
} }
......
...@@ -42,11 +42,9 @@ uint32_t BufferUsageToGbmFlags(gfx::BufferUsage usage) { ...@@ -42,11 +42,9 @@ uint32_t BufferUsageToGbmFlags(gfx::BufferUsage usage) {
return GBM_BO_USE_TEXTURING; return GBM_BO_USE_TEXTURING;
case gfx::BufferUsage::SCANOUT: case gfx::BufferUsage::SCANOUT:
return GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT | GBM_BO_USE_TEXTURING; return GBM_BO_USE_RENDERING | GBM_BO_USE_SCANOUT | GBM_BO_USE_TEXTURING;
break;
case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE: case gfx::BufferUsage::SCANOUT_CAMERA_READ_WRITE:
return GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE | GBM_BO_USE_SCANOUT | return GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE | GBM_BO_USE_SCANOUT |
GBM_BO_USE_TEXTURING; GBM_BO_USE_TEXTURING;
break;
case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE: case gfx::BufferUsage::CAMERA_AND_CPU_READ_WRITE:
return GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE; return GBM_BO_USE_LINEAR | GBM_BO_USE_CAMERA_WRITE;
case gfx::BufferUsage::SCANOUT_CPU_READ_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