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

Unified Diff: gpu/gles2_conform_support/egl/display.h

Issue 1714883002: command_buffer_gles2: Implement EGL default Display as a global object (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@command_buffer_gles2-multiple-contexts
Patch Set: rebase Created 4 years, 7 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gpu/gles2_conform_support/egl/context.cc ('k') | gpu/gles2_conform_support/egl/display.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/gles2_conform_support/egl/display.h
diff --git a/gpu/gles2_conform_support/egl/display.h b/gpu/gles2_conform_support/egl/display.h
index bb7700179ae4a60b9f2c4b171d1ac0982ea91c6e..5ac6e46f7ca3ba266992cc0bb894926f2d273244 100644
--- a/gpu/gles2_conform_support/egl/display.h
+++ b/gpu/gles2_conform_support/egl/display.h
@@ -10,126 +10,98 @@
#include <stdint.h>
#include <memory>
+#include <vector>
#include "base/macros.h"
-#include "gpu/command_buffer/client/gles2_cmd_helper.h"
-#include "gpu/command_buffer/client/gpu_control.h"
-#include "gpu/command_buffer/service/command_buffer_service.h"
-#include "gpu/command_buffer/service/command_executor.h"
-#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
-#include "gpu/command_buffer/service/gpu_preferences.h"
-#include "gpu/config/gpu_driver_bug_workarounds.h"
-#include "ui/gfx/native_widget_types.h"
-#include "ui/gl/gl_context.h"
-#include "ui/gl/gl_surface.h"
-
-namespace gpu {
-class CommandBufferService;
-class GpuControl;
-class CommandExecutor;
-class TransferBuffer;
-class TransferBufferManagerInterface;
-
-namespace gles2 {
-class GLES2CmdHelper;
-class GLES2Implementation;
-} // namespace gles2
-} // namespace gpu
+#include "base/memory/ref_counted.h"
+#include "base/synchronization/lock.h"
namespace egl {
class Config;
+class Context;
class Surface;
+class ThreadState;
-class Display : private gpu::GpuControl {
+class Display {
public:
- explicit Display(EGLNativeDisplayType display_id);
- ~Display() override;
-
- void SetCreateOffscreen(int width, int height) {
- create_offscreen_ = true;
- create_offscreen_width_ = width;
- create_offscreen_height_ = height;
- }
+ explicit Display();
+ ~Display();
bool is_initialized() const { return is_initialized_; }
- bool Initialize();
+
+ void ReleaseCurrentForReleaseThread(ThreadState*);
+
+ // A function for windowless GTF tests.
+ void SetNextCreateWindowSurfaceCreatesPBuffer(EGLint width, EGLint height);
+
+ EGLBoolean Initialize(ThreadState* ts, EGLint* major, EGLint* minor);
+ EGLBoolean Terminate(ThreadState* ts);
+ const char* QueryString(ThreadState* ts, EGLint name);
// Config routines.
- bool IsValidConfig(EGLConfig config);
- bool ChooseConfigs(
- EGLConfig* configs, EGLint config_size, EGLint* num_config);
- bool GetConfigs(EGLConfig* configs, EGLint config_size, EGLint* num_config);
- bool GetConfigAttrib(EGLConfig config, EGLint attribute, EGLint* value);
+ EGLBoolean GetConfigAttrib(ThreadState* ts,
+ EGLConfig cfg,
+ EGLint attribute,
+ EGLint* value);
+ EGLBoolean ChooseConfig(ThreadState* ts,
+ const EGLint* attrib_list,
+ EGLConfig* configs,
+ EGLint config_size,
+ EGLint* num_config);
+ EGLBoolean GetConfigs(ThreadState*,
+ EGLConfig*,
+ EGLint config_size,
+ EGLint* num_config);
// Surface routines.
- bool IsValidNativeWindow(EGLNativeWindowType win);
- bool IsValidSurface(EGLSurface surface);
- EGLSurface CreateWindowSurface(EGLConfig config,
+ static bool IsValidNativeWindow(EGLNativeWindowType);
+ EGLSurface CreatePbufferSurface(ThreadState*,
+ EGLConfig,
+ const EGLint* attrib_list);
+ EGLSurface CreateWindowSurface(ThreadState*,
+ EGLConfig,
EGLNativeWindowType win,
const EGLint* attrib_list);
- void DestroySurface(EGLSurface surface);
- void SwapBuffers(EGLSurface surface);
+ EGLBoolean DestroySurface(ThreadState*, EGLSurface);
+ EGLBoolean SwapBuffers(ThreadState*, EGLSurface);
// Context routines.
- bool IsValidContext(EGLContext ctx);
- EGLContext CreateContext(EGLConfig config,
- EGLContext share_ctx,
+ EGLContext CreateContext(ThreadState*,
+ EGLConfig,
+ EGLSurface share_ctx,
const EGLint* attrib_list);
- void DestroyContext(EGLContext ctx);
- bool MakeCurrent(EGLSurface draw, EGLSurface read, EGLContext ctx);
-
- // GpuControl implementation.
- void SetGpuControlClient(gpu::GpuControlClient*) override;
- gpu::Capabilities GetCapabilities() override;
- int32_t CreateImage(ClientBuffer buffer,
- size_t width,
- size_t height,
- unsigned internalformat) override;
- void DestroyImage(int32_t id) override;
- int32_t CreateGpuMemoryBufferImage(size_t width,
- size_t height,
- unsigned internalformat,
- unsigned usage) override;
- void SignalQuery(uint32_t query, const base::Closure& callback) override;
- void SetLock(base::Lock*) override;
- void EnsureWorkVisible() override;
- gpu::CommandBufferNamespace GetNamespaceID() const override;
- gpu::CommandBufferId GetCommandBufferID() const override;
- int32_t GetExtraCommandBufferData() const override;
- uint64_t GenerateFenceSyncRelease() override;
- bool IsFenceSyncRelease(uint64_t release) override;
- bool IsFenceSyncFlushed(uint64_t release) override;
- bool IsFenceSyncFlushReceived(uint64_t release) override;
- void SignalSyncToken(const gpu::SyncToken& sync_token,
- const base::Closure& callback) override;
- bool CanWaitUnverifiedSyncToken(const gpu::SyncToken* sync_token) override;
+ EGLBoolean DestroyContext(ThreadState*, EGLContext);
- private:
- EGLNativeDisplayType display_id_;
+ EGLBoolean ReleaseCurrent(ThreadState*);
+ EGLBoolean MakeCurrent(ThreadState*, EGLSurface, EGLSurface, EGLContext);
- gpu::GpuPreferences gpu_preferences_;
- const gpu::GpuDriverBugWorkarounds gpu_driver_bug_workarounds_;
- bool is_initialized_;
+ uint64_t GenerateFenceSyncRelease();
+ bool IsFenceSyncRelease(uint64_t release);
+ bool IsFenceSyncFlushed(uint64_t release);
+ bool IsFenceSyncFlushReceived(uint64_t release);
- bool create_offscreen_;
- int create_offscreen_width_;
- int create_offscreen_height_;
+ private:
+ void InitializeConfigsIfNeeded();
+ const Config* GetConfig(EGLConfig);
+ Surface* GetSurface(EGLSurface);
+ Context* GetContext(EGLContext);
+ EGLSurface DoCreatePbufferSurface(ThreadState* ts,
+ const Config* config,
+ EGLint width,
+ EGLint height);
+
+ base::Lock lock_;
+ bool is_initialized_;
uint64_t next_fence_sync_release_;
-
- scoped_refptr<gpu::TransferBufferManagerInterface> transfer_buffer_manager_;
- std::unique_ptr<gpu::CommandBufferService> command_buffer_;
- std::unique_ptr<gpu::CommandExecutor> executor_;
- std::unique_ptr<gpu::gles2::GLES2Decoder> decoder_;
- scoped_refptr<gfx::GLContext> gl_context_;
- scoped_refptr<gfx::GLSurface> gl_surface_;
- std::unique_ptr<gpu::gles2::GLES2CmdHelper> gles2_cmd_helper_;
- std::unique_ptr<gpu::TransferBuffer> transfer_buffer_;
-
- // TODO(alokp): Support more than one config, surface, and context.
- std::unique_ptr<Config> config_;
- std::unique_ptr<Surface> surface_;
- std::unique_ptr<gpu::gles2::GLES2Implementation> context_;
+ std::vector<scoped_refptr<Surface>> surfaces_;
+ std::vector<scoped_refptr<Context>> contexts_;
+ std::unique_ptr<Config> configs_[2];
+
+ // GTF windowless support.
+ bool next_create_window_surface_creates_pbuffer_;
+ EGLint window_surface_pbuffer_width_;
+ EGLint window_surface_pbuffer_height_;
DISALLOW_COPY_AND_ASSIGN(Display);
};
« no previous file with comments | « gpu/gles2_conform_support/egl/context.cc ('k') | gpu/gles2_conform_support/egl/display.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698