ChromeOS won't be able to render textures larger than half of GL_MAX_TEXTURE_SIZE |
|||||||||
Issue descriptionVersion: 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.
,
Aug 11 2016
Hi, Mitsuru, Is there anything new regarding to this bug?
,
Aug 19 2016
Sorry for the delay. I'll be able to spend some time on this next week.
,
Sep 28 2016
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?
,
Sep 28 2016
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?
,
Sep 28 2016
I will have a try soon.
,
Oct 10 2016
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.
,
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?
,
Oct 11 2016
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.
,
Oct 12 2016
what't the size you're passing in PepperVideorenderer3D::OnviewChanged ?
,
Nov 2 2016
Please assign back to me when you get the info.
,
Nov 2 2016
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.
,
Nov 3 2016
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?
,
Nov 3 2016
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.
,
Nov 9 2016
,
Nov 9 2016
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?
,
Nov 9 2016
5600 = 1400 * 4. I am using a virtual machine with four monitors, each one is 1400 * 1050.
,
Nov 9 2016
I see. I think you shouldn't pass the scaled size to ResizeBuffer, because having bigger buffer than the host doesn't make sense.
,
Nov 9 2016
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.
,
Nov 9 2016
Yes.
,
Nov 10 2016
No, it still does not work on Pixel 2.
,
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
,
Nov 11 2016
And changing this value actually stretch the screen in a strange way. Please refer to the screenshot.
,
Nov 11 2016
How can I test my locally built chrome remote desktop?
,
Nov 17 2016
zijiehe@, i need a way to reproduce this locally. can you answer my question above?
,
Nov 17 2016
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.
,
Nov 17 2016
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?
,
Nov 17 2016
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.
,
Nov 17 2016
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).
,
Nov 17 2016
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.
,
Dec 22 2016
Hi, Mitsuru, Any updates?
,
Mar 16 2018
Bulk closing Infra>Client>ChromeOS issues untouched in over a year. |
|||||||||
►
Sign in to add a comment |
|||||||||
Comment 1 by nannysgo...@gmail.com
, Jul 29 2016