New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 632822 link

Starred by 7 users

Issue metadata

Status: Archived
Owner:
Closed: Mar 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Bug

Blocking:
issue 584388



Sign in to add a comment

ChromeOS won't be able to render textures larger than half of GL_MAX_TEXTURE_SIZE

Project Member Reported by zijiehe@chromium.org, Jul 29 2016

Issue description

Version: Up to M52 52.0.2743.85 (64-bit)
OS: ChromeOS on pixel 1 & 2

Users complained in  bug 584388 , Chrome Remote Desktop on ChromeOS won't be able to render large screen resolution. Say, over 4096 horizontal resolution. After some investigation, I found this issue happens only on ChromeOS.

A typical ChromeOS, say Pixel 1 / 2, reports GL_MAX_TEXTURE_SIZE and GL_MAX_VIEWPORT_DIMS as 8192 (* 8192). But when we are trying to execute pp::Graphics3D::SwapBuffers with a texture larger than 4096, the callback won't be executed. But on a regular laptop, say thinkpad x1, it reports GL_MAX_TEXTURE_SIZE as 16384. And it can succeed to render textures larger than 8192.
 
Please take down this site I have a router on fine with at least five of more devices connect I cant
Hi, Mitsuru,
Is there anything new regarding to this bug?

Comment 3 by osh...@chromium.org, Aug 19 2016

Status: Assigned (was: Untriaged)
Sorry for the delay. I'll be able to spend some time on this next week. 

Comment 4 by osh...@chromium.org, Sep 28 2016

Cc: marc...@chromium.org
On samus, the GL_MAX_TEXTURE_SIZE is indeed 8192 (+marcheu@ to confirm this is expected).

And remoting allocates 2x buffer on 2x high DPI device.

https://cs.chromium.org/chromium/src/remoting/client/plugin/pepper_video_renderer_3d.cc?rcl=0&l=101

It works on thinkpad x probably because it has larger MAX TEXTURE size.
What if you remove the scaling?
There are multiple limitations for rendering, not just the texture size. These are:
- maximum texture size
- maximum renderbuffer size
- maximum viewport size

You're only looking at the first one right now... what is the value for the other 2?
I will have a try soon.
Hi, Mitsuru,
I have disabled the scaling, now it works as expected on Pixel 1. But it still cannot work on Pixel 2.

Stephane,
The maximum texture size is 8192, maximum viewport size is 8192 * 8192, and maximum renderbuffer size is also 8192, on both Pixel 1 and Pixel 2.

Comment 8 by osh...@chromium.org, Oct 10 2016

If it works on Pixel 1, it should also work on Pixel 2 from cc/pepper perspective. Doesn't chrome log have anything interesting?
Cannot quite tell whether these are the logs you are interested, but there are ~100 lines of following logs,
[13010:13010:1011/124826:ERROR:gles2_cmd_decoder.cc(16290)] [.DisplayCompositor-0xb936101f500]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
[13010:13010:1011/124826:ERROR:gles2_cmd_decoder.cc(9027)] [.DisplayCompositor-0xb936101f500]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.

The device went into black screen for several seconds, then returned to normal. But the image still could not be rendered.
what't the size you're passing in PepperVideorenderer3D::OnviewChanged ?
Owner: zijiehe@chromium.org
Please assign back to me when you get the info.
Owner: osh...@chromium.org
Sorry for the late response; I missed this thread.

I used exactly the same configuration on both Pixel 1 and Pixel 2, so the view size I have passed to OnViewChanged should be 5600 x 1050.
Cc: -zijiehe@chromium.org
Owner: zijiehe@chromium.org
The size passed there should be DIP, so it should be less than 2560x2560. May be it's passing the pixel size? (framebuffer size becomes 5600x2 = 11200 > 8192.) Can you also check if it's correctly capping the size to max size?

The logic has been changed, so currently the framebuffer size will not exceed 8192 (@ https://goo.gl/T01uh0). After my change https://goo.gl/LQIKy5, Pixel 1 can succeed rendering the 5600x1050 remote image, but Pixel 2 cannot. So it looks like a Pixel 2 specific issue.
Owner: osh...@chromium.org
Labels: Needs-Feedback
If it's working on 5600, it could be just by concident. 5600 still does not look correct.

Can you tell me how this number is calculated? What's the size of the host desktop, and how it becomes 5600?
5600 = 1400 * 4. I am using a virtual machine with four monitors, each one is 1400 * 1050.
I see. I think you shouldn't pass the scaled size to ResizeBuffer, because having bigger buffer than the host doesn't make sense.
Do you mean actually we should pass unscaled size @ https://cs.chromium.org/chromium/src/remoting/client/plugin/pepper_video_renderer_3d.cc?rcl=0&l=110
from
  graphics_.ResizeBuffers(view_size_.width(), view_size_.height());
to
  graphics_.ResizeBuffers(size.width(), size.height());

I will have a try.
Yes.
No, it still does not work on Pixel 2.
Project Member

Comment 22 by bugdroid1@chromium.org, Nov 11 2016

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

commit 05da91c6ae77d2c3d348bdbb57f23a14f1b60c8a
Author: zijiehe <zijiehe@chromium.org>
Date: Fri Nov 11 21:57:34 2016

[Chromoting] Revert last change to PepperVideoRenderer3D

This change has been wrongly included in https://goo.gl/3ityne, as I worked on a
wrong branch.

I am still working with Mitsuru (oshima@) for the issue, but this change has not
been verified, and also should not included in the original change.

BUG= 632822 

Review-Url: https://codereview.chromium.org/2499673002
Cr-Commit-Position: refs/heads/master@{#431658}

[modify] https://crrev.com/05da91c6ae77d2c3d348bdbb57f23a14f1b60c8a/remoting/client/plugin/pepper_video_renderer_3d.cc

And changing this value actually stretch the screen in a strange way. Please refer to the screenshot.
Screenshot 2016-11-11 at 14.23.19.png
361 KB View Download
How can I test my locally built chrome remote desktop?
zijiehe@, i need a way to reproduce this locally. can you answer my question above?
Sorry, lost track of this thread again...
I did not do anything special. I just install a virtual machine with VirtualBox, set it up with four monitors, each one is 1400 * 1050. Technically speaking, you can use any host OS, it's irrelevant, but I am using Windows 7 (you can get licence from MSDN subscription), just FYI. And you can also set up different monitor configurations, but the goal is to make the entire screen resolution be larger than 4096 in either horizontal or vertical.

Another simpler way is to schedule a meeting with me, we can use my virtual machine in IT2Me scenario.
What I want is to build & test chromoting app locally to see what's going on. I assume the host does not have to be windows, right?
No, if you do not need to debug chromoting itself, you can simply download the official app @ https://chrome.google.com/webstore/detail/chrome-remote-desktop/gbchcmhmhahfdphkhkmpfmihenigjmpp?utm_source=chrome-ntp-icon.
Sorry I wasn't clear. I do want to debug chromoting itself. (I'm not saying its chromoting bug, but I want to see what's going on side chromoting).

Comment 30 Deleted

You need to build remoting/webapp in chromium with gn args
is_chrome_branded=false
is_component_build=false

Then copy remoting/remoting-webapp.v2/ entirely to your chromebook, and load it through chrome://extensions.
Hi, Mitsuru,
Any updates?
Status: Archived (was: Assigned)
Bulk closing Infra>Client>ChromeOS issues untouched in over a year.

Sign in to add a comment