|
|
Created:
4 years, 10 months ago by Kimmo Kinnunen Modified:
4 years, 7 months ago CC:
chromium-reviews, piman+watch_chromium.org, Sami Väisänen Base URL:
https://chromium.googlesource.com/chromium/src.git@command_buffer_gles2-multiple-contexts Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
Descriptioncommand_buffer_gles2: Implement EGL default Display as a global object
Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will
return the same object.
Store EGL state in a new thread-local object (ThreadState). One
display, multiple surfaces, multiple contexts.
Fix the currently implemented entry points to return specified errors
and behave as specified. Notable changes:
* eglGetDisplay() does not create new displays for each invocation
* eglTerminate() invalidates the created egl objects but leaves the
current context intact as specified
* eglMakeCurrent() is implemented more correctly with refcount semantics
* eglQueryStrings() works without display for some names
* eglReleaseThread() is implemeted
* Config are now separate for pbuffers and windows, so that contexts
can be created separate from surfaces
* Context can be made current with different surfaces
* Catches errors related to context being set current to multiple
threads
* Tries to be thread-safe
In the implementation, the Display contains a lock ensuring all thread
accesses are consistent. All functions using or changing thread-local
state have explicit egl::ThreadState parameter.
BUG=581634
CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel
Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2
Cr-Commit-Position: refs/heads/master@{#377535}
Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b
Cr-Commit-Position: refs/heads/master@{#386613}
Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89
Cr-Commit-Position: refs/heads/master@{#387871}
Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09
Cr-Commit-Position: refs/heads/master@{#388745}
Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77
Cr-Commit-Position: refs/heads/master@{#390358}
Committed: https://crrev.com/4b0a5f72ec65e8a61647c65312fbe1250032001d
Cr-Commit-Position: refs/heads/master@{#392902}
Patch Set 1 #
Total comments: 10
Patch Set 2 : #Patch Set 3 : #Patch Set 4 : gles2_conform_support build files #Patch Set 5 : win fixes #
Total comments: 36
Patch Set 6 : address review comments #Patch Set 7 : workaround gtf #
Total comments: 2
Patch Set 8 : #
Total comments: 1
Patch Set 9 : fix win clang compile #Patch Set 10 : rebase #Patch Set 11 : add support for GTF #Patch Set 12 : android compile fix in egl_tests.cc #Patch Set 13 : #Patch Set 14 : #Patch Set 15 : win fixes #
Total comments: 2
Patch Set 16 : win link fix in .gyp #Patch Set 17 : add nogncheck to egl_native_windowless.cc #
Total comments: 2
Patch Set 18 : rebase+add test_support.h to egl/BUILD.gn #Patch Set 19 : fix gles2_conform_test assert and khronos_glcts_support compile failure #Patch Set 20 : rebase #Patch Set 21 : add a missing #include #Patch Set 22 : use original makecurrent #Patch Set 23 : remove redundant makecurrent from swapbuffers #Patch Set 24 : passes once decoder is fixed #Patch Set 25 : rebase #Patch Set 26 : use correct egl object to fix compile on chromeos #Patch Set 27 : rebase #Patch Set 28 : rebase #Patch Set 29 : add a hunk missing from the rebase #Patch Set 30 : rebase #Patch Set 31 : rebase #Messages
Total messages: 181 (83 generated)
Description was changed from ========== command_buffer_gles2: Implement EGL Display API part properly One display, multiple surfaces, contexts. Fixes a GLES2DecoderImpl problem where vertex arrays would be deleted even when decoder had no context. WIP: missing threading tests BUG=581634 ========== to ========== command_buffer_gles2: Implement EGL Display API part properly One display, multiple surfaces, contexts. Fixes a GLES2DecoderImpl problem where vertex arrays would be deleted even when decoder had no context. WIP: missing threading tests BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ==========
svaisanen@nvidia.com changed reviewers: + svaisanen@nvidia.com
https://codereview.chromium.org/1714883002/diff/1/gpu/command_buffer/service/... File gpu/command_buffer/service/vertex_array_manager.cc (right): https://codereview.chromium.org/1714883002/diff/1/gpu/command_buffer/service/... gpu/command_buffer/service/vertex_array_manager.cc:87: client_vertex_attrib_managers_.begin(); Could this simply use std::find_if ? https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... File gpu/gles2_conform_support/egl/display.cc (right): https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/display.cc:38: base::Lock(lock_); shouldn't this use base::AutoLock named variable? https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... File gpu/gles2_conform_support/egl/thread_state.h (right): https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/thread_state.h:27: ~ThreadState(); If lifetime management happens through Get and Release functions, ctor and dtor could be moved to private scope? https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/thread_state.h:30: Context* current_context() const { return current_context_.get(); } return value is not const Context*, so I'm not sure if this member should be const either. https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/thread_state.h:56: }; if this is a RAII type, maybe disallow copyctor and assignment.
Thanks https://codereview.chromium.org/1714883002/diff/1/gpu/command_buffer/service/... File gpu/command_buffer/service/vertex_array_manager.cc (right): https://codereview.chromium.org/1714883002/diff/1/gpu/command_buffer/service/... gpu/command_buffer/service/vertex_array_manager.cc:87: client_vertex_attrib_managers_.begin(); On 2016/02/19 14:10:15, Sami Väisänen wrote: > Could this simply use std::find_if ? Yeah, but it's existing code which the patch doesn't intend to change, so it's better to leave as is. https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... File gpu/gles2_conform_support/egl/display.cc (right): https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/display.cc:38: base::Lock(lock_); On 2016/02/19 14:10:15, Sami Väisänen wrote: > shouldn't this use base::AutoLock named variable? Done. (strange that even compiles) https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... File gpu/gles2_conform_support/egl/thread_state.h (right): https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/thread_state.h:27: ~ThreadState(); On 2016/02/19 14:10:15, Sami Väisänen wrote: > If lifetime management happens through Get and Release functions, ctor and dtor > could be moved to private scope? Done. https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/thread_state.h:30: Context* current_context() const { return current_context_.get(); } On 2016/02/19 14:10:15, Sami Väisänen wrote: > return value is not const Context*, so I'm not sure if this member should be > const either. So the returned objects are not part of the logical state of the class, they belong to global state. So this is fine. Function saying "I'm not modifying ThreadState pointed by a" by saying "const ThreadState* a" does not modify ThreadState even if it modifies a->current_surface() https://codereview.chromium.org/1714883002/diff/1/gpu/gles2_conform_support/e... gpu/gles2_conform_support/egl/thread_state.h:56: }; On 2016/02/19 14:10:15, Sami Väisänen wrote: > if this is a RAII type, maybe disallow copyctor and assignment. Done.
Description was changed from ========== command_buffer_gles2: Implement EGL Display API part properly One display, multiple surfaces, contexts. Fixes a GLES2DecoderImpl problem where vertex arrays would be deleted even when decoder had no context. WIP: missing threading tests BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== command_buffer_gles2: Implement EGL Display as a global object Make EGL Display a global. eglGetDisplay() will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new objects * eglTerminate() invalidates the created objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() work without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All funcitions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ==========
kkinnunen@nvidia.com changed reviewers: + piman@chromium.org - svaisanen@nvidia.com
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/40001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/40001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: mac_chromium_rel_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/60001
The CQ bit was unchecked by kkinnunen@nvidia.com
The CQ bit was checked by kkinnunen@nvidia.com
The CQ bit was unchecked by commit-bot@chromium.org
This CL has an open dependency (Issue 1718183003 Patch 1). Please resolve the dependency and try again.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/80001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/80001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_chromium_compile_dbg_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
This is nice, especially with the extensive tests, thanks! I have mostly nits, and a couple of bigger things. https://codereview.chromium.org/1714883002/diff/80001/gpu/command_buffer/serv... File gpu/command_buffer/service/gles2_cmd_decoder.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/command_buffer/serv... gpu/command_buffer/service/gles2_cmd_decoder.cc:3604: return false; nit: add a DCHECK(surface_), that should catch cases where someone released the surface but still uses the decoder. https://codereview.chromium.org/1714883002/diff/80001/gpu/command_buffer/serv... gpu/command_buffer/service/gles2_cmd_decoder.cc:4169: LOG(ERROR) << " GLES2DecoderImpl: Trying to release lost context."; nit: DLOG https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/config.h (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/config.h:8: #include "base/macros.h" nit: the style guide puts system headers (in <>) before chrome headers (in ""), so this was correct where it was. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/config.h:15: Config(EGLint surface_type); nit: explicit https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/config.h:17: bool matches(const EGLint* attrib_list) const; style nit: lower_with_underscore style is reserved for trivial inline functions (e.g. setter/getters or <5 lines). https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/context.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/context.cc:52: // We might not have a surface, so we must lose the context. If we lose the context, we will leak any resource (textures, buffers, etc) until the last context in the GLShareGroup is gone. I guess for now we don't support share groups so we can get away with it, but if we wanted to support them this would be a problem, especially since this would happen on normal API usage (eglMakeCurrent(dpy, NULL, NULL, NULL); eglDestroyContext(dpy, context);). Can you add a TODO to that effect? One thing we could do is to keep the GLSurface associated with the context when made not-current, so that we can make current before teardown, if that GLSurface is not current in another thread (should catch most common cases). That requires a bunch more tracking, so it's ok to punt for now. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/context.cc:113: if (current_context->HasOneRef() && current_surface != new_surface) { I'm somewhat uncomfortable with HasOneRef(), because while this may work now, any added scoped_refptr (e.g. see discussion on chromium-dev about preferred style for passing refcounts to functions) may break this, unless that code also manages releasing the last reference with similar logic. Instead, I think we can have Display::DestroyContext mark the context as destroyed (adding a bool to Context), and cleanup here if that bit is set - regardless of refcount. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/display.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:23: delete configs_[1]; use scoped_ptr<Config>[2] instead? https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:168: Surface* surface = new Surface(gl_surface.get()); nit: scoped_refptr<Surface> https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:196: Surface* surface = new Surface(gl_surface.get()); nit: scoped_refptr<Surface> https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:340: void Display::InitializeConfigsIfNeeded() { nit: lock_.AssertAcquired(); https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:351: const Config* Display::GetConfig(EGLConfig cfg) { nit: lock_.AssertAcquired(); https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:359: Surface* Display::GetSurface(EGLSurface surface) { nit: lock_.AssertAcquired(); https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:366: Context* Display::GetContext(EGLContext context) { nit: lock_.AssertAcquired(); https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/thread_state.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/thread_state.cc:111: gpu::ThreadLocalFree(g_egl_thread_state_key); This should only happen once all the threads have been released, iow in the else clause below. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/thread_state.cc:126: if (thread_state->current_context()) nit: {} per style https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/thread_state.cc:184: if (Context* current_context = thread_state_->current_context()) nit: needs {} per style (and then so does the else clause)
https://codereview.chromium.org/1714883002/diff/80001/gpu/command_buffer/serv... File gpu/command_buffer/service/gles2_cmd_decoder.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/command_buffer/serv... gpu/command_buffer/service/gles2_cmd_decoder.cc:3604: return false; On 2016/02/23 23:37:16, piman wrote: > nit: add a DCHECK(surface_), that should catch cases where someone released the > surface but still uses the decoder. Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/command_buffer/serv... gpu/command_buffer/service/gles2_cmd_decoder.cc:4169: LOG(ERROR) << " GLES2DecoderImpl: Trying to release lost context."; On 2016/02/23 23:37:16, piman wrote: > nit: DLOG Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/config.h (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/config.h:8: #include "base/macros.h" On 2016/02/23 23:37:16, piman wrote: > nit: the style guide puts system headers (in <>) before chrome headers (in ""), > so this was correct where it was. Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/config.h:15: Config(EGLint surface_type); On 2016/02/23 23:37:16, piman wrote: > nit: explicit Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/config.h:17: bool matches(const EGLint* attrib_list) const; On 2016/02/23 23:37:16, piman wrote: > style nit: lower_with_underscore style is reserved for trivial inline functions > (e.g. setter/getters or <5 lines). Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/context.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/context.cc:52: // We might not have a surface, so we must lose the context. On 2016/02/23 23:37:16, piman wrote: > If we lose the context, we will leak any resource (textures, buffers, etc) until > the last context in the GLShareGroup is gone. I guess for now we don't support > share groups so we can get away with it, but if we wanted to support them this > would be a problem, especially since this would happen on normal API usage > (eglMakeCurrent(dpy, NULL, NULL, NULL); eglDestroyContext(dpy, context);). Can > you add a TODO to that effect? .. to the extent that there ever will be "normal api usage" of this code.. > One thing we could do is to keep the GLSurface associated with the context when > made not-current, so that we can make current before teardown, if that GLSurface > is not current in another thread (should catch most common cases). That requires > a bunch more tracking, so it's ok to punt for now. Yeah, I had that code there at some point. It's fairly demotivating to look at. Same effect one would get with an extra surface of size 0,0 just for destroying purposes, and that probably is simpler and has one limitation less. It still looks bad and can not support window surfaces. I'm slightly dragging my feet to add these TODOs. IMHO to add a TODO, there should be genuine interest and purpose to remove the TODO at some point. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/context.cc:113: if (current_context->HasOneRef() && current_surface != new_surface) { On 2016/02/23 23:37:16, piman wrote: > I'm somewhat uncomfortable with HasOneRef(), because while this may work now, > any added scoped_refptr (e.g. see discussion on chromium-dev about preferred > style for passing refcounts to functions) may break this, unless that code also > manages releasing the last reference with similar logic. > > Instead, I think we can have Display::DestroyContext mark the context as > destroyed (adding a bool to Context), and cleanup here if that bit is set - > regardless of refcount. Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/display.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:23: delete configs_[1]; On 2016/02/23 23:37:16, piman wrote: > use scoped_ptr<Config>[2] instead? Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:168: Surface* surface = new Surface(gl_surface.get()); On 2016/02/23 23:37:17, piman wrote: > nit: scoped_refptr<Surface> Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:196: Surface* surface = new Surface(gl_surface.get()); On 2016/02/23 23:37:17, piman wrote: > nit: scoped_refptr<Surface> Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:198: return ts->ReturnError(EGL_BAD_ALLOC, EGL_NO_SURFACE); There was a bit of an error here, changed this too.. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:340: void Display::InitializeConfigsIfNeeded() { On 2016/02/23 23:37:17, piman wrote: > nit: lock_.AssertAcquired(); Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:351: const Config* Display::GetConfig(EGLConfig cfg) { On 2016/02/23 23:37:16, piman wrote: > nit: lock_.AssertAcquired(); Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:359: Surface* Display::GetSurface(EGLSurface surface) { On 2016/02/23 23:37:17, piman wrote: > nit: lock_.AssertAcquired(); Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/display.cc:366: Context* Display::GetContext(EGLContext context) { On 2016/02/23 23:37:16, piman wrote: > nit: lock_.AssertAcquired(); Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/thread_state.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/thread_state.cc:111: gpu::ThreadLocalFree(g_egl_thread_state_key); On 2016/02/23 23:37:17, piman wrote: > This should only happen once all the threads have been released, iow in the else > clause below. Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/thread_state.cc:126: if (thread_state->current_context()) On 2016/02/23 23:37:17, piman wrote: > nit: {} per style Done. https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/thread_state.cc:184: if (Context* current_context = thread_state_->current_context()) On 2016/02/23 23:37:17, piman wrote: > nit: needs {} per style (and then so does the else clause) Done.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/100001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/100001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: win_optional_gpu_tests_rel on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_optional_gpu_...)
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/120001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/120001
https://codereview.chromium.org/1714883002/diff/120001/gpu/gles2_conform_supp... File gpu/gles2_conform_support/native/egl_native_windowless.cc (right): https://codereview.chromium.org/1714883002/diff/120001/gpu/gles2_conform_supp... gpu/gles2_conform_support/native/egl_native_windowless.cc:27: // GTF should use EGL pbuffer interface directly. Do you think you could fix GTF?
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/140001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/140001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
lgtm https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... File gpu/gles2_conform_support/egl/context.cc (right): https://codereview.chromium.org/1714883002/diff/80001/gpu/gles2_conform_suppo... gpu/gles2_conform_support/egl/context.cc:52: // We might not have a surface, so we must lose the context. On 2016/02/24 07:33:26, Kimmo Kinnunen wrote: > On 2016/02/23 23:37:16, piman wrote: > > If we lose the context, we will leak any resource (textures, buffers, etc) > until > > the last context in the GLShareGroup is gone. I guess for now we don't support > > share groups so we can get away with it, but if we wanted to support them this > > would be a problem, especially since this would happen on normal API usage > > (eglMakeCurrent(dpy, NULL, NULL, NULL); eglDestroyContext(dpy, context);). Can > > you add a TODO to that effect? > > .. to the extent that there ever will be "normal api usage" of this code.. > > > One thing we could do is to keep the GLSurface associated with the context > when > > made not-current, so that we can make current before teardown, if that > GLSurface > > is not current in another thread (should catch most common cases). That > requires > > a bunch more tracking, so it's ok to punt for now. > > Yeah, I had that code there at some point. It's fairly demotivating to look at. > Same effect one would get with an extra surface of size 0,0 just for destroying > purposes, and that probably is simpler and has one limitation less. It still > looks bad and can not support window surfaces. > > I'm slightly dragging my feet to add these TODOs. IMHO to add a TODO, there > should be genuine interest and purpose to remove the TODO at some point. > > It's more a heads-up/documentation thing for something that is not right (especially when it's not obvious for the code), and some idea about a solution and/or who knows about it.
Description was changed from ========== command_buffer_gles2: Implement EGL Display as a global object Make EGL Display a global. eglGetDisplay() will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new objects * eglTerminate() invalidates the created objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() work without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All funcitions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ==========
The CQ bit was checked by kkinnunen@nvidia.com
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/140001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/140001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ==========
Message was sent while issue was closed.
Committed patchset #8 (id:140001)
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} ==========
Message was sent while issue was closed.
Patchset 8 (id:??) landed as https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535}
Message was sent while issue was closed.
thakis@chromium.org changed reviewers: + thakis@chromium.org
Message was sent while issue was closed.
https://codereview.chromium.org/1714883002/diff/140001/gpu/command_buffer/tes... File gpu/command_buffer/tests/egl_test.cc (right): https://codereview.chromium.org/1714883002/diff/140001/gpu/command_buffer/tes... gpu/command_buffer/tests/egl_test.cc:478: typedef GL_APICALL void(GL_APIENTRY * glEnableProc)(GLenum); clang-cl thinks the GL_APICALL here has no effect: ..\..\gpu\command_buffer\tests\egl_test.cc(478,11) : error: 'dllimport' attribute only applies to variables, functions and classes [-Werror,-Wignored-attributes] typedef GL_APICALL void(GL_APIENTRY * glEnableProc)(GLenum); ^ Can you remove it?
Message was sent while issue was closed.
On 2016/02/25 17:09:05, Nico wrote: > https://codereview.chromium.org/1714883002/diff/140001/gpu/command_buffer/tes... > File gpu/command_buffer/tests/egl_test.cc (right): > > https://codereview.chromium.org/1714883002/diff/140001/gpu/command_buffer/tes... > gpu/command_buffer/tests/egl_test.cc:478: typedef GL_APICALL void(GL_APIENTRY * > glEnableProc)(GLenum); > clang-cl thinks the GL_APICALL here has no effect: > > ..\..\gpu\command_buffer\tests\egl_test.cc(478,11) : error: 'dllimport' > attribute only applies to variables, functions and classes > [-Werror,-Wignored-attributes] > typedef GL_APICALL void(GL_APIENTRY * glEnableProc)(GLenum); > ^ > > Can you remove it? https://codereview.chromium.org/1731793008/
Message was sent while issue was closed.
A revert of this CL (patchset #8 id:140001) has been created in https://codereview.chromium.org/1739033002/ by zmo@chromium.org. The reason for reverting is: Broke gles2_conform on mac/linux GPU bots on FYI waterfall GTFNativeCreateWindow failed.
Message was sent while issue was closed.
On 2016/02/25 19:14:46, Zhenyao Mo wrote: > Reason for reverting is: Broke gles2_conform on mac/linux GPU bots on FYI > waterfall > > GTFNativeCreateWindow failed. So I indicated the GTF would need fixing, as it is kind of wrong and I can not fix it. Wrongess: "windowless" GTF runs create "windowless" egl window. https://codereview.chromium.org/1714883002/diff/120001/gpu/gles2_conform_supp... File gpu/gles2_conform_support/native/egl_native_windowless.cc (right): https://codereview.chromium.org/1714883002/diff/120001/gpu/gles2_conform_supp... gpu/gles2_conform_support/native/egl_native_windowless.cc:28: return GTFfalse; So there was this..
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} ==========
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/200001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/200001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: android_clang_dbg_recipe on tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_clan...)
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/220001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/220001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_chromium_compile_dbg_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/260001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/260001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: win_optional_gpu_tests_rel on tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_optional_gpu_...)
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/280001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/280001
piman, ptal if you have time. The problem was that GTF expected windowless platform window, which did not exist. The description is in the bug comment. I decided to just use the existing mechanism instead of creating a new egl platform for windowless operation. It appears very hard to get the "new egl platform" approach compiling, especially without access to GTF. Hope this is ok. If the existing code is bad, maybe somebody with access to GTF could fix it later. https://chromiumcodereview.appspot.com/1714883002/diff/280001/gpu/gles2_confo... File gpu/gles2_conform_support/egl/display.cc (right): https://chromiumcodereview.appspot.com/1714883002/diff/280001/gpu/gles2_confo... gpu/gles2_conform_support/egl/display.cc:26: next_create_window_surface_creates_pbuffer_ = true; Code related to this flag was added https://chromiumcodereview.appspot.com/1714883002/diff/280001/gpu/gles2_confo... File gpu/gles2_conform_support/native/egl_native_windowless.cc (right): https://chromiumcodereview.appspot.com/1714883002/diff/280001/gpu/gles2_confo... gpu/gles2_conform_support/native/egl_native_windowless.cc:28: height); I went with replicating the existing bad behavior, hope it is ok.
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: linux_chromium_chromeos_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
LGTM. Even if not ideal, the benefits of the new code are worth it IMO.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/300001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/300001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by kkinnunen@nvidia.com
The patchset sent to the CQ was uploaded after l-g-t-m from piman@chromium.org Link to the patchset: https://codereview.chromium.org/1714883002/#ps300001 (title: "win link fix in .gyp")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/300001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/300001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} ==========
Message was sent while issue was closed.
Committed patchset #16 (id:300001)
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} ==========
Message was sent while issue was closed.
Patchset 16 (id:??) landed as https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613}
Message was sent while issue was closed.
A revert of this CL (patchset #16 id:300001) has been created in https://codereview.chromium.org/1878133003/ by vabr@chromium.org. The reason for reverting is: Broke GPU build on Linux, more info in http://crbug.com/581634#c18..
Message was sent while issue was closed.
piman, do you think it's ok to retry cq'ing by disabling the gn dependency check? I can not run the check myself without the access. vabr says I have to find somebody to compile the code for me.. https://chromiumcodereview.appspot.com/1714883002/diff/320001/gpu/gles2_confo... File gpu/gles2_conform_support/native/egl_native_windowless.cc (right): https://chromiumcodereview.appspot.com/1714883002/diff/320001/gpu/gles2_confo... gpu/gles2_conform_support/native/egl_native_windowless.cc:5: #include "gpu/gles2_conform_support/egl/test_support.h" // nogncheck I'm trying to fix the GN error with //nogncheck.
Message was sent while issue was closed.
vabr@chromium.org changed reviewers: + vabr@chromium.org
Message was sent while issue was closed.
Let me correct, > vabr says I have to find somebody to compile the code for me.. That is not what I said, this is what I said: https://codereview.chromium.org/1878133003/#msg13 In any case, while I can see that silencing the GN with the // nogncheck comment will stop the build failure, and with a bit of luck also result in a successful compilation, I doubt this is a good idea, see my comment below. Cheers, Vaclav https://codereview.chromium.org/1714883002/diff/320001/gpu/gles2_conform_supp... File gpu/gles2_conform_support/native/egl_native_windowless.cc (right): https://codereview.chromium.org/1714883002/diff/320001/gpu/gles2_conform_supp... gpu/gles2_conform_support/native/egl_native_windowless.cc:5: #include "gpu/gles2_conform_support/egl/test_support.h" // nogncheck On 2016/04/12 12:21:12, Kimmo Kinnunen wrote: > I'm trying to fix the GN error with //nogncheck. GN complains that this header is not in any dependency of the "egl" source_set in which this file is built. And GN is correct about it. The header is in the target command_buffer_gles2 in //gpu/BUIL.gn. Without any knowledge of this code, the right thing to do seems to be to add the dependency on command_buffer_gles2 to the egl source_set. If some GPU OWNERS have good reasons for this not to be the case and approve of masking this error, I won't interfere. But building a great build system for keeping the dependencies sane, and then breaking them arbitrarily seems counter-productive.
Message was sent while issue was closed.
I will take a look - apologies for the delay in replies I have been out of the office these last couple of days. On Tue, Apr 12, 2016 at 5:32 AM, <vabr@chromium.org> wrote: > Let me correct, > > > vabr says I have to find somebody to compile the code for me.. > > That is not what I said, this is what I said: > https://codereview.chromium.org/1878133003/#msg13 > > In any case, while I can see that silencing the GN with the // nogncheck > comment > will stop the build failure, and with a bit of luck also result in a > successful > compilation, I doubt this is a good idea, see my comment below. > > Cheers, > Vaclav > > > > https://codereview.chromium.org/1714883002/diff/320001/gpu/gles2_conform_supp... > File gpu/gles2_conform_support/native/egl_native_windowless.cc (right): > > > https://codereview.chromium.org/1714883002/diff/320001/gpu/gles2_conform_supp... > gpu/gles2_conform_support/native/egl_native_windowless.cc:5: #include > "gpu/gles2_conform_support/egl/test_support.h" // nogncheck > On 2016/04/12 12:21:12, Kimmo Kinnunen wrote: > > I'm trying to fix the GN error with //nogncheck. > > GN complains that this header is not in any dependency of the "egl" > source_set in which this file is built. And GN is correct about it. The > header is in the target command_buffer_gles2 in //gpu/BUIL.gn. > > Without any knowledge of this code, the right thing to do seems to be to > add the dependency on command_buffer_gles2 to the egl source_set. > I think the correct fix is to have the //gpu/gles2_conform_support/native:windowless source_set to depend on //gpu:command_buffer_gles2 since that's what's happening. Locally it seems to pass after that. > If some GPU OWNERS have good reasons for this not to be the case and > approve of masking this error, I won't interfere. But building a great > build system for keeping the dependencies sane, and then breaking them > arbitrarily seems counter-productive. > > https://codereview.chromium.org/1714883002/ > -- You received this message because you are subscribed to the Google Groups "Chromium-reviews" group. To unsubscribe from this group and stop receiving emails from it, send an email to chromium-reviews+unsubscribe@chromium.org.
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} ==========
On 2016/04/14 03:13:12, piman wrote: > On Tue, Apr 12, 2016 at 5:32 AM, <mailto:vabr@chromium.org> wrote: > https://codereview.chromium.org/1714883002/diff/320001/gpu/gles2_conform_supp... > > gpu/gles2_conform_support/native/egl_native_windowless.cc:5: #include > > "gpu/gles2_conform_support/egl/test_support.h" // nogncheck > > On 2016/04/12 12:21:12, Kimmo Kinnunen wrote: > > > I'm trying to fix the GN error with //nogncheck. > > > > GN complains that this header is not in any dependency of the "egl" > > source_set in which this file is built. And GN is correct about it. The > > header is in the target command_buffer_gles2 in //gpu/BUIL.gn. Ok, thank you for pointing that out. I added it to the "egl" source set that provides source set egl in //gpu/gles2_conform_support/egl (gpu/gles2_conform_support/egl/BUILD.gn. I believe I missed updating that .gn file. That should fix it? I can't test it, it seems that CQ does not have the targets that would fail the .gn build for this private component. > I think the correct fix is to have the > //gpu/gles2_conform_support/native:windowless source_set to depend > on //gpu:command_buffer_gles2 since that's what's happening. > Locally it seems to pass after that. Right, I would not think that is the correct thing. //gpu:command_buffer_gles2 is not used by Chromium at all, e.g. nothing should link to it except command_buffer_gles2_tests. //gpu/gles2_conform_support/native:windowless depends on //gpu/gles2_conform_support/egl.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/340001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/340001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
I see, ok, LGTM. There's duplication of the source set which is what confuses me.
Thank you for fixing the deps instead of the //nogncheck, I appreciate that! After patch set 18, both gpu/BUILD.gn and gpu/gles2_conform_support/egl/BUILD.gn reference test_support.{cc|h}. I'm not sure if that's an issue, though, dependency graph should be OK as long as it is acyclic, which is not changed by this. So LGTM. Cheers, Vaclav
The CQ bit was checked by kkinnunen@nvidia.com
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/340001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/340001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} ==========
Message was sent while issue was closed.
Committed patchset #18 (id:340001)
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ==========
Message was sent while issue was closed.
Patchset 18 (id:??) landed as https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871}
Message was sent while issue was closed.
On 2016/04/18 08:27:53, commit-bot: I haz the power wrote: > Patchset 18 (id:??) landed as > https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 > Cr-Commit-Position: refs/heads/master@{#387871} I suspect this is causing compile errors: https://uberchromegw.corp.google.com/i/chromeos.chrome/builders/tricky-tot-ch... Unless I hear otherwise I will revert this soon.
Message was sent while issue was closed.
On 2016/04/18 16:19:55, stevenjb wrote: > On 2016/04/18 08:27:53, commit-bot: I haz the power wrote: > > Patchset 18 (id:??) landed as > > https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 > > Cr-Commit-Position: refs/heads/master@{#387871} > > I suspect this is causing compile errors: > https://uberchromegw.corp.google.com/i/chromeos.chrome/builders/tricky-tot-ch... > > Unless I hear otherwise I will revert this soon. Compile failure: chromeos-chrome-52.0.2712.0_alpha-r1: [58/12813] CXX obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o chromeos-chrome-52.0.2712.0_alpha-r1: FAILED: x86_64-cros-linux-gnu-g++ -B/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold -MMD -MF obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o.d -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 '-DDEQP_TARGET_NAME="chrome-gpu-command-buffer"' -DDEQP_SUPPORT_GLES2=1 -DDEQP_SUPPORT_EGL=1 -DGTF_API=GTF_GLES20 -D_FILE_OFFSET_BITS=64 -DGOOGLE_CHROME_BUILD -DENABLE_RLZ -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_CRAS=1 -DUSE_OZONE=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DIMAGE_LOADER_EXTENSION=1 -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS -DENABLE_NOTIFICATIONS -DENABLE_TOPCHROME_MD=1 -DENABLE_WAYLAND_SERVER=1 -DUSE_UDEV -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_PROD_WALLET_SERVICE=1 -DENABLE_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DENABLE_HANGOUT_SERVICES_EXTENSION=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -D_XOPEN_SOURCE=500 -DUSE_LIBPCI=1 -DUSE_OPENSSL=1 -DUSE_NSS_CERTS=1 -DUSE_NSS_VERIFIER=1 -DOS_CHROMEOS=1 -DNDEBUG -DNO_UNWIND_TABLES -DOFFICIAL_BUILD -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos -I../../../../../../../home/chrome-bot/chrome_root/src/gpu -I../../../../../../../home/chrome-bot/chrome_root/src -I../../../../../../../home/chrome-bot/chrome_root/src/skia/config -Igen/angle -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/debase -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/depool -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/dethread -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/deutil -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/decpp -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/qphelper -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/common -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl/wrapper -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/egl -pthread -fno-strict-aliasing -Wno-extra -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -g -Wno-unused-local-typedefs -m64 -march=x86-64 --sysroot=/build/tricky -O2 -fno-ident -fdata-sections -ffunction-sections -fno-unwind-tables -fno-asynchronous-unwind-tables -g -pipe -pipe -pipe -march=corei7 -D__google_stl_debug_vector=1 -freorder-functions=callgraph -fno-threadsafe-statics -fvisibility-inlines-hidden -Wno-deprecated -std=gnu++11 -Wno-narrowing -Wno-literal-suffix -c ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc -o obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o chromeos-chrome-52.0.2712.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc: In member function 'virtual tcu::NativeWindow* egl::native::windowless::Platform::createWindow(tcu::NativeDisplay&, EGLConfig, const EGLint*, int, int, qpVisibility)': chromeos-chrome-52.0.2712.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc:79:14: error: 'class egl::Display' has no member named 'SetCreateOffscreen' chromeos-chrome-52.0.2712.0_alpha-r1: display->SetCreateOffscreen(width, height); chromeos-chrome-52.0.2712.0_alpha-r1:
Message was sent while issue was closed.
On 2016/04/18 16:24:30, stevenjb wrote: > On 2016/04/18 16:19:55, stevenjb wrote: > > On 2016/04/18 08:27:53, commit-bot: I haz the power wrote: > > > Patchset 18 (id:??) landed as > > > https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 > > > Cr-Commit-Position: refs/heads/master@{#387871} > > > > I suspect this is causing compile errors: > > > https://uberchromegw.corp.google.com/i/chromeos.chrome/builders/tricky-tot-ch... > > > > Unless I hear otherwise I will revert this soon. > > Compile failure: > > chromeos-chrome-52.0.2712.0_alpha-r1: [58/12813] CXX > obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o > chromeos-chrome-52.0.2712.0_alpha-r1: FAILED: x86_64-cros-linux-gnu-g++ > -B/usr/x86_64-pc-linux-gnu/x86_64-cros-linux-gnu/binutils-bin/2.25.51-gold -MMD > -MF > obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o.d > -DV8_DEPRECATION_WARNINGS -DCLD_VERSION=2 > '-DDEQP_TARGET_NAME="chrome-gpu-command-buffer"' -DDEQP_SUPPORT_GLES2=1 > -DDEQP_SUPPORT_EGL=1 -DGTF_API=GTF_GLES20 -D_FILE_OFFSET_BITS=64 > -DGOOGLE_CHROME_BUILD -DENABLE_RLZ -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 > -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_CRAS=1 -DUSE_OZONE=1 > -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DIMAGE_LOADER_EXTENSION=1 > -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DUSE_PROPRIETARY_CODECS > -DENABLE_PEPPER_CDMS -DENABLE_NOTIFICATIONS -DENABLE_TOPCHROME_MD=1 > -DENABLE_WAYLAND_SERVER=1 -DUSE_UDEV -DENABLE_TASK_MANAGER=1 > -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1 > -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 > -DENABLE_PROD_WALLET_SERVICE=1 -DENABLE_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 > -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 > -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 > -DENABLE_HANGOUT_SERVICES_EXTENSION=1 -DV8_USE_EXTERNAL_STARTUP_DATA > -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL > -D_XOPEN_SOURCE=500 -DUSE_LIBPCI=1 -DUSE_OPENSSL=1 -DUSE_NSS_CERTS=1 > -DUSE_NSS_VERIFIER=1 -DOS_CHROMEOS=1 -DNDEBUG -DNO_UNWIND_TABLES > -DOFFICIAL_BUILD -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos > -I../../../../../../../home/chrome-bot/chrome_root/src/gpu > -I../../../../../../../home/chrome-bot/chrome_root/src > -I../../../../../../../home/chrome-bot/chrome_root/src/skia/config -Igen/angle > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/debase > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/depool > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/dethread > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/deutil > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/decpp > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/qphelper > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/common > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl/wrapper > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/egl > -pthread -fno-strict-aliasing -Wno-extra -Wno-unused-parameter > -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -g > -Wno-unused-local-typedefs -m64 -march=x86-64 --sysroot=/build/tricky -O2 > -fno-ident -fdata-sections -ffunction-sections -fno-unwind-tables > -fno-asynchronous-unwind-tables -g -pipe -pipe -pipe -march=corei7 > -D__google_stl_debug_vector=1 -freorder-functions=callgraph > -fno-threadsafe-statics -fvisibility-inlines-hidden -Wno-deprecated -std=gnu++11 > -Wno-narrowing -Wno-literal-suffix -c > ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc > -o > obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o > chromeos-chrome-52.0.2712.0_alpha-r1: > ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc: > In member function 'virtual tcu::NativeWindow* > egl::native::windowless::Platform::createWindow(tcu::NativeDisplay&, EGLConfig, > const EGLint*, int, int, qpVisibility)': > chromeos-chrome-52.0.2712.0_alpha-r1: > ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc:79:14: > error: 'class egl::Display' has no member named 'SetCreateOffscreen' > chromeos-chrome-52.0.2712.0_alpha-r1: display->SetCreateOffscreen(width, > height); > chromeos-chrome-52.0.2712.0_alpha-r1: Note: This is the build where this CL was introduced and the compilation started failing: https://uberchromegw.corp.google.com/i/chromeos.chrome/builders/tricky-tot-ch... There were no other gles2 changes introduced in that build. Apologies, but I will have to revert this.
Message was sent while issue was closed.
A revert of this CL (patchset #18 id:340001) has been created in https://codereview.chromium.org/1900703002/ by stevenjb@chromium.org. The reason for reverting is: Failing in pfq-informational builders, e.g.: https://uberchromegw.corp.google.com/i/chromeos.chrome/builders/tricky-tot-ch... .
Message was sent while issue was closed.
A revert of this CL (patchset #18 id:340001) has been created in https://codereview.chromium.org/1895153002/ by zmo@chromium.org. The reason for reverting is: This caused almost all GPU debug bots to fail the gles2_conform_test. [0418/032049:FATAL:gl_surface_egl.cc(1013)] Check failed: false. Attempted to call SwapBuffers on a PbufferGLSurfaceEGL..
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ==========
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/360001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/360001
I fixed the runtime failure and added a test for the assert. I fixed the compile failure -- strange that my grepping missed this before. I tried to double check grepping for the same error. PTAL
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
lgtm
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/380001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/380001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by kkinnunen@nvidia.com
The patchset sent to the CQ was uploaded after l-g-t-m from vabr@chromium.org, piman@chromium.org Link to the patchset: https://codereview.chromium.org/1714883002/#ps380001 (title: "rebase")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/380001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/380001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ==========
Message was sent while issue was closed.
Committed patchset #20 (id:380001)
Message was sent while issue was closed.
A revert of this CL (patchset #20 id:380001) has been created in https://codereview.chromium.org/1909573002/ by stevenjb@chromium.org. The reason for reverting is: Unfortunately I have to revert this, it is causing compile failures in the chroot. Example builder: https://uberchromegw.corp.google.com/i/chromeos.chrome/builders/x86-alex-tot-... Failure: chromeos-chrome-52.0.2714.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc: In member function 'virtual tcu::NativeWindow* egl::native::windowless::Platform::createWindow(tcu::NativeDisplay&, EGLConfig, const EGLint*, int, int, qpVisibility)': chromeos-chrome-52.0.2714.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc:79:69: error: 'CommandBufferGLESSetNextCreateWindowSurfaceCreatesPBuffer' was not declared in this scope chromeos-chrome-52.0.2714.0_alpha-r1: height); .
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ==========
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/400001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/400001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The previous compile failure was due to missing include. Changed that. Taking the liberty of using previous LGTM to retry the patch with CQ.
The CQ bit was checked by kkinnunen@nvidia.com
The patchset sent to the CQ was uploaded after l-g-t-m from vabr@chromium.org, piman@chromium.org Link to the patchset: https://codereview.chromium.org/1714883002/#ps400001 (title: "add a missing #include")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/400001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/400001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ==========
Message was sent while issue was closed.
Committed patchset #21 (id:400001)
Message was sent while issue was closed.
A revert of this CL (patchset #21 id:400001) has been created in https://codereview.chromium.org/1900563007/ by jmadill@chromium.org. The reason for reverting is: Seems to be failing the gles2_conform_test of all flavours on all bots. First fail: https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NV... https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28N... .
Message was sent while issue was closed.
On 2016/04/21 16:21:17, Jamie Madill wrote: > A revert of this CL (patchset #21 id:400001) has been created in > https://codereview.chromium.org/1900563007/ by mailto:jmadill@chromium.org. > > The reason for reverting is: Seems to be failing the gles2_conform_test of all > flavours on all bots. > > First fail: > https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NV... > https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28N... > . Sorry about that Kimmo. We should probably add these tests to the optional gpu bots.
Message was sent while issue was closed.
On 2016/04/21 16:21:57, Jamie Madill wrote: > On 2016/04/21 16:21:17, Jamie Madill wrote: > > A revert of this CL (patchset #21 id:400001) has been created in > > https://codereview.chromium.org/1900563007/ by mailto:jmadill@chromium.org. > > > > The reason for reverting is: Seems to be failing the gles2_conform_test of all > > flavours on all bots. > > > > First fail: > > > https://build.chromium.org/p/chromium.gpu.fyi/builders/Win7%20Release%20%28NV... > > > https://build.chromium.org/p/chromium.gpu.fyi/builders/Linux%20Release%20%28N... > > . > > Sorry about that Kimmo. We should probably add these tests to the optional gpu > bots. Sorry about the continued reverts. https://codereview.chromium.org/1904133002 will add these tests to the optional GPU tryservers, so the errors will be caught before commit.
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ==========
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/6ce03f87f6664043ab4adf6722847cf110567a31 Cr-Commit-Position: refs/heads/master@{#388461} ==========
Message was sent while issue was closed.
Patchset 23 (id:??) landed as https://crrev.com/6ce03f87f6664043ab4adf6722847cf110567a31 Cr-Commit-Position: refs/heads/master@{#388461}
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/6ce03f87f6664043ab4adf6722847cf110567a31 Cr-Commit-Position: refs/heads/master@{#388461} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ==========
Message was sent while issue was closed.
Patchset 23 (id:??) landed as https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745}
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ==========
kkinnunen@nvidia.com changed reviewers: + kbr@chromium.org - thakis@chromium.org, vabr@chromium.org
piman@, kbr@: Would it be possible to commit the test framework and one test to the main repository? and maybe make internal_gles2_conform_tests=1 just add more (private) tests. GLES2ConformTest.GL_read_format_input_run would be a candidate for the one test. So regardless of internal or external developer, the process would be always the same and there would be no surprises except for the number of tests. Alternatively, could I get full access to the thing? It appears that something related to reading pixels fails on linux. I don't know if this is just a symptom of bigger failure. On Windows, it appears that the new code tries to run code, maybe decoder destructor, after the context has been lost. The code tries to take that into account, but somehow it does not do that. I can not get any debug prints through to the logs of the private components. I can only submit a try job, wait 1 hour and get yes/no answer. It seems quite futile to debug this by this method.
On 2016/04/25 12:01:33, Kimmo Kinnunen wrote: > piman@, kbr@: > Would it be possible to commit the test framework and one test to the main > repository? > and maybe make internal_gles2_conform_tests=1 just add more (private) tests. > GLES2ConformTest.GL_read_format_input_run would be a candidate for the one test. > So regardless of internal or external developer, the process would be always the > same and there would be no surprises except for the number of tests. > > Alternatively, could I get full access to the thing? > > It appears that something related to reading pixels fails on linux. I don't know > if this is just a symptom of bigger failure. > On Windows, it appears that the new code tries to run code, maybe decoder > destructor, after the context has been lost. The code tries to take that into > account, but somehow it does not do that. > > I can not get any debug prints through to the logs of the private components. I > can only submit a try job, wait 1 hour and get yes/no answer. It seems quite > futile to debug this by this method. Kimmo: I'll contact you via email. I'm sorry that the gles2_conform_tests on the optional tryservers aren't helpful for tracking down your problem. It's not possible to open-source any of the GLES2 conformance tests themselves. I don't know how feasible it would be to open-source just a newly-written one. The problem is that several of the files that comprise the test harness, and in which the problematic code is likely contained, are covered under the same license and can't be put into a publicly visible workspace.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/460001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/460001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The optional gpu bots pass now. The last reviewed patch was #21, I think. After that, there's few relatively trivial changes. The one in display.cc, wrong order of clearing the hacky offscreen state variables, was one reason for the failures. Also, two other decoder changes went in to get this working. Taking the liberty to push the CQ button.
The CQ bit was checked by kkinnunen@nvidia.com
The patchset sent to the CQ was uploaded after l-g-t-m from vabr@chromium.org, piman@chromium.org Link to the patchset: https://codereview.chromium.org/1714883002/#ps480001 (title: "rebase")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/480001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/480001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ==========
Message was sent while issue was closed.
Committed patchset #25 (id:480001)
Message was sent while issue was closed.
A revert of this CL (patchset #25 id:480001) has been created in https://codereview.chromium.org/1929973003/ by stevenjb@chromium.org. The reason for reverting is: Still failing on official chromeos builders: egl_native_windowless.cc:79:69: error: cannot convert 'tcu::egl::Display' to 'EGLDisplay {aka void*}' for argument '1' to 'void CommandBufferGLESSetNextCreateWindowSurfaceCreatesPBuffer(EGLDisplay, EGLint, EGLint)' Complete output: chromeos-chrome-52.0.2720.0_alpha-r1: FAILED: i686-pc-linux-gnu-g++ -B/usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.25.51-gold -MMD -MF obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o.d -DV8_DEPRECATION_WARNINGS '-DDEQP_TARGET_NAME="chrome-gpu-command-buffer"' -DDEQP_SUPPORT_GLES2=1 -DDEQP_SUPPORT_EGL=1 -DGTF_API=GTF_GLES20 -D_FILE_OFFSET_BITS=64 -DGOOGLE_CHROME_BUILD -DENABLE_RLZ -DCOMPONENT_BUILD -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 -DUSE_CAIRO=1 -DUSE_CRAS=1 -DUSE_OZONE=1 -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DIMAGE_LOADER_EXTENSION=1 -DENABLE_WEBRTC=1 -DENABLE_MEDIA_ROUTER=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS -DENABLE_NOTIFICATIONS -DENABLE_TOPCHROME_MD=1 -DENABLE_WAYLAND_SERVER=1 -DUSE_UDEV -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_PROD_WALLET_SERVICE=1 -DENABLE_PRINTING=1 -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 -DENABLE_HANGOUT_SERVICES_EXTENSION=1 -DV8_USE_EXTERNAL_STARTUP_DATA -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL -D_XOPEN_SOURCE=500 -DUSE_LIBPCI=1 -DUSE_NSS_CERTS=1 -DOS_CHROMEOS=1 -DNDEBUG -DNO_UNWIND_TABLES -DOFFICIAL_BUILD -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -Igen -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos -I../../../../../../../home/chrome-bot/chrome_root/src/gpu -I../../../../../../../home/chrome-bot/chrome_root/src -I../../../../../../../home/chrome-bot/chrome_root/src/skia/config -Igen/angle -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/debase -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/depool -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/dethread -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/deutil -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/decpp -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/qphelper -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/common -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl/wrapper -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/egl -pthread -fno-strict-aliasing -Wno-extra -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -g -Wno-unused-local-typedefs -msse2 -mfpmath=sse -mmmx -m32 --sysroot=/build/x86-alex -O2 -fno-ident -fdata-sections -ffunction-sections -fno-unwind-tables -fno-asynchronous-unwind-tables -g -march=i686 -pipe -march=i686 -pipe -pipe -march=atom -mtune=atom -mfpmath=sse -D__google_stl_debug_vector=1 -fno-threadsafe-statics -fvisibility-inlines-hidden -Wno-deprecated -std=gnu++11 -Wno-narrowing -Wno-literal-suffix -c ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc -o obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o chromeos-chrome-52.0.2720.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc: In member function 'virtual tcu::NativeWindow* egl::native::windowless::Platform::createWindow(tcu::NativeDisplay&, EGLConfig, const EGLint*, int, int, qpVisibility)': chromeos-chrome-52.0.2720.0_alpha-r1: ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc:79:69: error: cannot convert 'tcu::egl::Display' to 'EGLDisplay {aka void*}' for argument '1' to 'void CommandBufferGLESSetNextCreateWindowSurfaceCreatesPBuffer(EGLDisplay, EGLint, EGLint)' chromeos-chrome-52.0.2720.0_alpha-r1: height); .
Message was sent while issue was closed.
On 2016/04/28 16:54:04, stevenjb wrote: > A revert of this CL (patchset #25 id:480001) has been created in > https://codereview.chromium.org/1929973003/ by mailto:stevenjb@chromium.org. > > The reason for reverting is: Still failing on official chromeos builders: > egl_native_windowless.cc:79:69: error: cannot convert 'tcu::egl::Display' to > 'EGLDisplay {aka void*}' for argument '1' to 'void > CommandBufferGLESSetNextCreateWindowSurfaceCreatesPBuffer(EGLDisplay, EGLint, > EGLint)' > > Complete output: > > chromeos-chrome-52.0.2720.0_alpha-r1: FAILED: i686-pc-linux-gnu-g++ > -B/usr/x86_64-pc-linux-gnu/i686-pc-linux-gnu/binutils-bin/2.25.51-gold -MMD -MF > obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o.d > -DV8_DEPRECATION_WARNINGS '-DDEQP_TARGET_NAME="chrome-gpu-command-buffer"' > -DDEQP_SUPPORT_GLES2=1 -DDEQP_SUPPORT_EGL=1 -DGTF_API=GTF_GLES20 > -D_FILE_OFFSET_BITS=64 -DGOOGLE_CHROME_BUILD -DENABLE_RLZ -DCOMPONENT_BUILD > -DUI_COMPOSITOR_IMAGE_TRANSPORT -DUSE_AURA=1 -DUSE_ASH=1 -DUSE_PANGO=1 > -DUSE_CAIRO=1 -DUSE_CRAS=1 -DUSE_OZONE=1 -DUSE_DEFAULT_RENDER_THEME=1 > -DUSE_LIBJPEG_TURBO=1 -DIMAGE_LOADER_EXTENSION=1 -DENABLE_WEBRTC=1 > -DENABLE_MEDIA_ROUTER=1 -DUSE_PROPRIETARY_CODECS -DENABLE_PEPPER_CDMS > -DENABLE_NOTIFICATIONS -DENABLE_TOPCHROME_MD=1 -DENABLE_WAYLAND_SERVER=1 > -DUSE_UDEV -DENABLE_TASK_MANAGER=1 -DENABLE_EXTENSIONS=1 -DENABLE_PDF=1 > -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 > -DENABLE_AUTOFILL_DIALOG=1 -DENABLE_PROD_WALLET_SERVICE=1 -DENABLE_PRINTING=1 > -DENABLE_PRINT_PREVIEW=1 -DENABLE_SPELLCHECK=1 > -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DENABLE_APP_LIST=1 > -DENABLE_SUPERVISED_USERS=1 -DENABLE_MDNS=1 -DENABLE_SERVICE_DISCOVERY=1 > -DENABLE_HANGOUT_SERVICES_EXTENSION=1 -DV8_USE_EXTERNAL_STARTUP_DATA > -DFULL_SAFE_BROWSING -DSAFE_BROWSING_CSD -DSAFE_BROWSING_DB_LOCAL > -D_XOPEN_SOURCE=500 -DUSE_LIBPCI=1 -DUSE_NSS_CERTS=1 -DOS_CHROMEOS=1 -DNDEBUG > -DNO_UNWIND_TABLES -DOFFICIAL_BUILD -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 > -Igen -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos > -I../../../../../../../home/chrome-bot/chrome_root/src/gpu > -I../../../../../../../home/chrome-bot/chrome_root/src > -I../../../../../../../home/chrome-bot/chrome_root/src/skia/config -Igen/angle > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/debase > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/depool > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/dethread > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/deutil > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/delibs/decpp > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/qphelper > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/common > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/opengl/wrapper > -I../../../../../../../home/chrome-bot/chrome_root/src/third_party/khronos_glcts/framework/egl > -pthread -fno-strict-aliasing -Wno-extra -Wno-unused-parameter > -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -g > -Wno-unused-local-typedefs -msse2 -mfpmath=sse -mmmx -m32 > --sysroot=/build/x86-alex -O2 -fno-ident -fdata-sections -ffunction-sections > -fno-unwind-tables -fno-asynchronous-unwind-tables -g -march=i686 -pipe > -march=i686 -pipe -pipe -march=atom -mtune=atom -mfpmath=sse > -D__google_stl_debug_vector=1 -fno-threadsafe-statics > -fvisibility-inlines-hidden -Wno-deprecated -std=gnu++11 -Wno-narrowing > -Wno-literal-suffix -c > ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc > -o > obj/gpu/khronos_glcts_support/native/tcutil_platform_windowless.egl_native_windowless.o > chromeos-chrome-52.0.2720.0_alpha-r1: > ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc: > In member function 'virtual tcu::NativeWindow* > egl::native::windowless::Platform::createWindow(tcu::NativeDisplay&, EGLConfig, > const EGLint*, int, int, qpVisibility)': > chromeos-chrome-52.0.2720.0_alpha-r1: > ../../../../../../../home/chrome-bot/chrome_root/src/gpu/khronos_glcts_support/native/egl_native_windowless.cc:79:69: > error: cannot convert 'tcu::egl::Display' to 'EGLDisplay {aka void*}' for > argument '1' to 'void > CommandBufferGLESSetNextCreateWindowSurfaceCreatesPBuffer(EGLDisplay, EGLint, > EGLint)' > chromeos-chrome-52.0.2720.0_alpha-r1: > height); > . BTW, I am happy to run a cbuildbot job to test a patch, just email stevenjb@google.com or contact me via Hangouts.
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ==========
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/500001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/500001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
Message was sent while issue was closed.
Patchset 26 (id:??) landed as https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358}
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} ==========
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} ==========
stevenjb@: I rebased the patch again, if you have time to submit a build for chromeos. The patch keeps needing a rebase. There's a pepper patch that touches the files and it was reverted so new rebase is bound to be needed once that is committed again.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/540001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/540001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: android_compile_dbg on tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/android_comp...)
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/560001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/560001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by kkinnunen@nvidia.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/580001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/580001
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by kkinnunen@nvidia.com
The patchset sent to the CQ was uploaded after l-g-t-m from vabr@chromium.org, piman@chromium.org Link to the patchset: https://chromiumcodereview.appspot.com/1714883002/#ps600001 (title: "rebase")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1714883002/600001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1714883002/600001
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} ==========
Message was sent while issue was closed.
Committed patchset #31 (id:600001)
Message was sent while issue was closed.
Description was changed from ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} ========== to ========== command_buffer_gles2: Implement EGL default Display as a global object Make EGL Display a global. eglGetDisplay(EGL_DEFAULT_DISPLAY) will return the same object. Store EGL state in a new thread-local object (ThreadState). One display, multiple surfaces, multiple contexts. Fix the currently implemented entry points to return specified errors and behave as specified. Notable changes: * eglGetDisplay() does not create new displays for each invocation * eglTerminate() invalidates the created egl objects but leaves the current context intact as specified * eglMakeCurrent() is implemented more correctly with refcount semantics * eglQueryStrings() works without display for some names * eglReleaseThread() is implemeted * Config are now separate for pbuffers and windows, so that contexts can be created separate from surfaces * Context can be made current with different surfaces * Catches errors related to context being set current to multiple threads * Tries to be thread-safe In the implementation, the Display contains a lock ensuring all thread accesses are consistent. All functions using or changing thread-local state have explicit egl::ThreadState parameter. BUG=581634 CQ_INCLUDE_TRYBOTS=tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/de9aa3be41bca094454babbd62907815fad7f5c2 Cr-Commit-Position: refs/heads/master@{#377535} Committed: https://crrev.com/7b01a0867be0895009b120f37fcd4166a84f404b Cr-Commit-Position: refs/heads/master@{#386613} Committed: https://crrev.com/f9d5c7e6fd53570c0decc63e8ec51d30e0701c89 Cr-Commit-Position: refs/heads/master@{#387871} Committed: https://crrev.com/2a8624e1d4f8a82a9a8ce6b55fa5a48be09b9e09 Cr-Commit-Position: refs/heads/master@{#388745} Committed: https://crrev.com/50a2353656f05e3ed1ee850ee7c326c6ca99cd77 Cr-Commit-Position: refs/heads/master@{#390358} Committed: https://crrev.com/4b0a5f72ec65e8a61647c65312fbe1250032001d Cr-Commit-Position: refs/heads/master@{#392902} ==========
Message was sent while issue was closed.
Patchset 31 (id:??) landed as https://crrev.com/4b0a5f72ec65e8a61647c65312fbe1250032001d Cr-Commit-Position: refs/heads/master@{#392902} |