New issue
Advanced search Search tips

Issue 777748 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Bug

Blocking:
issue 711107



Sign in to add a comment

gpu::Capabilities not updated when requestable extensions updated

Project Member Reported by ccameron@chromium.org, Oct 24 2017

Issue description

This is specifically in the context of gpu::Capabilities::texture_half_float_linear, but it may apply to other features.

The gpu::Capabilities::texture_half_float_linear property is
- based on FeatureFlags::enable_texture_half_float_linear
- populated in GLES2DecoderImpl::GetCapabilities
- called by GpuChannel::OnCreateCommandBuffer in the GPU process
- cached on the client side in GLES2Implementation::GLES2Implementation
- and never updated

This is problematic because FeatureFlags::enable_texture_half_float_linear is dynamic and be updated by requesting the GL_OES_texture_half_float_linear extension, while the client-side property is static.

This causes us to blow up when creating a half-float GpuMemoryBuffers because we check capabilities.texture_half_float_linear in IsImageFromGpuMemoryBufferFormatSupported, and will report false.

The GpuMemoryBuffer problem can be worked around by using asynchronous GMB creation (which is probably preferable), but this is probably worth knowing about.

A reasonable solution would be to have RequestExtensionChromium update the calling client's gpu::Capabilities.
 
Cc: zmo@chromium.org
Project Member

Comment 2 by bugdroid1@chromium.org, Nov 2 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a987ee85bad15a80c2060b0f162b4e1e7da4bc25

commit a987ee85bad15a80c2060b0f162b4e1e7da4bc25
Author: Christopher Cameron <ccameron@chromium.org>
Date: Thu Nov 02 16:47:53 2017

Report extension availability in gpu::Capabilities

For extensions that require explicit enabling, it is unclear if
gpu::Capabilities should report the availability of an extension or its
presence.

Change the meaning of gpu::Capabilities to reflect the availability of
an extension, since that information is subject to change over time.

Bug:  777748 
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I1817d6b22f78301dae5bb6e7b9cadc83d0420b31
Reviewed-on: https://chromium-review.googlesource.com/750402
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: ccameron <ccameron@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513517}
[modify] https://crrev.com/a987ee85bad15a80c2060b0f162b4e1e7da4bc25/gpu/command_buffer/service/feature_info.h
[modify] https://crrev.com/a987ee85bad15a80c2060b0f162b4e1e7da4bc25/gpu/command_buffer/service/gles2_cmd_decoder.cc

Status: Fixed (was: Assigned)

Sign in to add a comment