Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Side by Side Diff: ui/gl/gl_surface_egl.cc

Issue 2497503004: Revert of Refactor context creation parameters into a struct. (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/gl/init/gl_factory.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gl/gl_surface_egl.h" 5 #include "ui/gl/gl_surface_egl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 const unsigned int MULTISWAP_FRAME_VSYNC_THRESHOLD = 60; 119 const unsigned int MULTISWAP_FRAME_VSYNC_THRESHOLD = 60;
120 #endif 120 #endif
121 121
122 namespace { 122 namespace {
123 123
124 EGLDisplay g_display = EGL_NO_DISPLAY; 124 EGLDisplay g_display = EGL_NO_DISPLAY;
125 EGLNativeDisplayType g_native_display = EGL_DEFAULT_DISPLAY; 125 EGLNativeDisplayType g_native_display = EGL_DEFAULT_DISPLAY;
126 126
127 const char* g_egl_extensions = nullptr; 127 const char* g_egl_extensions = nullptr;
128 bool g_egl_create_context_robustness_supported = false; 128 bool g_egl_create_context_robustness_supported = false;
129 bool g_egl_create_context_bind_generates_resource_supported = false;
130 bool g_egl_create_context_webgl_compatability_supported = false;
131 bool g_egl_sync_control_supported = false; 129 bool g_egl_sync_control_supported = false;
132 bool g_egl_window_fixed_size_supported = false; 130 bool g_egl_window_fixed_size_supported = false;
133 bool g_egl_surfaceless_context_supported = false; 131 bool g_egl_surfaceless_context_supported = false;
134 bool g_egl_surface_orientation_supported = false; 132 bool g_egl_surface_orientation_supported = false;
135 bool g_use_direct_composition = false; 133 bool g_use_direct_composition = false;
136 134
137 EGLDisplay GetPlatformANGLEDisplay(EGLNativeDisplayType native_display, 135 EGLDisplay GetPlatformANGLEDisplay(EGLNativeDisplayType native_display,
138 EGLenum platform_type, 136 EGLenum platform_type,
139 bool warpDevice) { 137 bool warpDevice) {
140 std::vector<EGLint> display_attribs; 138 std::vector<EGLint> display_attribs;
(...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 InitializeDisplay(native_display); 471 InitializeDisplay(native_display);
474 if (g_display == EGL_NO_DISPLAY) 472 if (g_display == EGL_NO_DISPLAY)
475 return false; 473 return false;
476 474
477 // Must be called after InitializeDisplay(). 475 // Must be called after InitializeDisplay().
478 g_driver_egl.InitializeExtensionBindings(); 476 g_driver_egl.InitializeExtensionBindings();
479 477
480 g_egl_extensions = eglQueryString(g_display, EGL_EXTENSIONS); 478 g_egl_extensions = eglQueryString(g_display, EGL_EXTENSIONS);
481 g_egl_create_context_robustness_supported = 479 g_egl_create_context_robustness_supported =
482 HasEGLExtension("EGL_EXT_create_context_robustness"); 480 HasEGLExtension("EGL_EXT_create_context_robustness");
483 g_egl_create_context_bind_generates_resource_supported =
484 HasEGLExtension("EGL_CHROMIUM_create_context_bind_generates_resource");
485 g_egl_create_context_webgl_compatability_supported =
486 HasEGLExtension("EGL_ANGLE_create_context_webgl_compatibility");
487 g_egl_sync_control_supported = 481 g_egl_sync_control_supported =
488 HasEGLExtension("EGL_CHROMIUM_sync_control"); 482 HasEGLExtension("EGL_CHROMIUM_sync_control");
489 g_egl_window_fixed_size_supported = 483 g_egl_window_fixed_size_supported =
490 HasEGLExtension("EGL_ANGLE_window_fixed_size"); 484 HasEGLExtension("EGL_ANGLE_window_fixed_size");
491 g_egl_surface_orientation_supported = 485 g_egl_surface_orientation_supported =
492 HasEGLExtension("EGL_ANGLE_surface_orientation"); 486 HasEGLExtension("EGL_ANGLE_surface_orientation");
493 487
494 // Need EGL_ANGLE_flexible_surface_compatibility to allow surfaces with and 488 // Need EGL_ANGLE_flexible_surface_compatibility to allow surfaces with and
495 // without alpha to be bound to the same context. 489 // without alpha to be bound to the same context.
496 g_use_direct_composition = 490 g_use_direct_composition =
(...skipping 11 matching lines...) Expand all
508 #else 502 #else
509 // Check if SurfacelessEGL is supported. 503 // Check if SurfacelessEGL is supported.
510 g_egl_surfaceless_context_supported = 504 g_egl_surfaceless_context_supported =
511 HasEGLExtension("EGL_KHR_surfaceless_context"); 505 HasEGLExtension("EGL_KHR_surfaceless_context");
512 if (g_egl_surfaceless_context_supported) { 506 if (g_egl_surfaceless_context_supported) {
513 // EGL_KHR_surfaceless_context is supported but ensure 507 // EGL_KHR_surfaceless_context is supported but ensure
514 // GL_OES_surfaceless_context is also supported. We need a current context 508 // GL_OES_surfaceless_context is also supported. We need a current context
515 // to query for supported GL extensions. 509 // to query for supported GL extensions.
516 scoped_refptr<GLSurface> surface = new SurfacelessEGL(gfx::Size(1, 1)); 510 scoped_refptr<GLSurface> surface = new SurfacelessEGL(gfx::Size(1, 1));
517 scoped_refptr<GLContext> context = InitializeGLContext( 511 scoped_refptr<GLContext> context = InitializeGLContext(
518 new GLContextEGL(nullptr), surface.get(), GLContextAttribs()); 512 new GLContextEGL(nullptr), surface.get(), PreferIntegratedGpu);
519 if (!context->MakeCurrent(surface.get())) 513 if (!context->MakeCurrent(surface.get()))
520 g_egl_surfaceless_context_supported = false; 514 g_egl_surfaceless_context_supported = false;
521 515
522 // Ensure context supports GL_OES_surfaceless_context. 516 // Ensure context supports GL_OES_surfaceless_context.
523 if (g_egl_surfaceless_context_supported) { 517 if (g_egl_surfaceless_context_supported) {
524 g_egl_surfaceless_context_supported = context->HasExtension( 518 g_egl_surfaceless_context_supported = context->HasExtension(
525 "GL_OES_surfaceless_context"); 519 "GL_OES_surfaceless_context");
526 context->ReleaseCurrent(surface.get()); 520 context->ReleaseCurrent(surface.get());
527 } 521 }
528 } 522 }
529 #endif 523 #endif
530 initialized_ = true; 524 initialized_ = true;
531 525
532 return true; 526 return true;
533 } 527 }
534 528
535 // static 529 // static
536 void GLSurfaceEGL::ResetForTesting() { 530 void GLSurfaceEGL::ResetForTesting() {
537 if (g_display != EGL_NO_DISPLAY) 531 if (g_display != EGL_NO_DISPLAY)
538 eglTerminate(g_display); 532 eglTerminate(g_display);
539 g_display = EGL_NO_DISPLAY; 533 g_display = EGL_NO_DISPLAY;
540 534
541 g_egl_extensions = nullptr; 535 g_egl_extensions = nullptr;
542 g_egl_create_context_robustness_supported = false; 536 g_egl_create_context_robustness_supported = false;
543 g_egl_create_context_bind_generates_resource_supported = false;
544 g_egl_create_context_webgl_compatability_supported = false;
545 g_egl_sync_control_supported = false; 537 g_egl_sync_control_supported = false;
546 g_egl_window_fixed_size_supported = false; 538 g_egl_window_fixed_size_supported = false;
547 g_egl_surface_orientation_supported = false; 539 g_egl_surface_orientation_supported = false;
548 g_use_direct_composition = false; 540 g_use_direct_composition = false;
549 g_egl_surfaceless_context_supported = false; 541 g_egl_surfaceless_context_supported = false;
550 542
551 initialized_ = false; 543 initialized_ = false;
552 } 544 }
553 545
554 // static 546 // static
(...skipping 14 matching lines...) Expand all
569 // static 561 // static
570 bool GLSurfaceEGL::HasEGLExtension(const char* name) { 562 bool GLSurfaceEGL::HasEGLExtension(const char* name) {
571 return ExtensionsContain(GetEGLExtensions(), name); 563 return ExtensionsContain(GetEGLExtensions(), name);
572 } 564 }
573 565
574 // static 566 // static
575 bool GLSurfaceEGL::IsCreateContextRobustnessSupported() { 567 bool GLSurfaceEGL::IsCreateContextRobustnessSupported() {
576 return g_egl_create_context_robustness_supported; 568 return g_egl_create_context_robustness_supported;
577 } 569 }
578 570
579 bool GLSurfaceEGL::IsCreateContextBindGeneratesResourceSupported() {
580 return g_egl_create_context_bind_generates_resource_supported;
581 }
582
583 bool GLSurfaceEGL::IsCreateContextWebGLCompatabilitySupported() {
584 return g_egl_create_context_webgl_compatability_supported;
585 }
586
587 // static 571 // static
588 bool GLSurfaceEGL::IsEGLSurfacelessContextSupported() { 572 bool GLSurfaceEGL::IsEGLSurfacelessContextSupported() {
589 return g_egl_surfaceless_context_supported; 573 return g_egl_surfaceless_context_supported;
590 } 574 }
591 575
592 // static 576 // static
593 bool GLSurfaceEGL::IsDirectCompositionSupported() { 577 bool GLSurfaceEGL::IsDirectCompositionSupported() {
594 return g_use_direct_composition; 578 return g_use_direct_composition;
595 } 579 }
596 580
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 } 1200 }
1217 1201
1218 void* SurfacelessEGL::GetShareHandle() { 1202 void* SurfacelessEGL::GetShareHandle() {
1219 return NULL; 1203 return NULL;
1220 } 1204 }
1221 1205
1222 SurfacelessEGL::~SurfacelessEGL() { 1206 SurfacelessEGL::~SurfacelessEGL() {
1223 } 1207 }
1224 1208
1225 } // namespace gl 1209 } // namespace gl
OLDNEW
« no previous file with comments | « ui/gl/gl_surface_egl.h ('k') | ui/gl/init/gl_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698