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 e3a57bcb49671113e2cad34ad4885ba0d4cca910..b48c87bdfa9ca74a35daed8f826e522ed6c32d60 100644 |
--- a/gpu/gles2_conform_support/egl/display.h |
+++ b/gpu/gles2_conform_support/egl/display.h |
@@ -9,122 +9,84 @@ |
#include <stddef.h> |
#include <stdint.h> |
+#include <vector> |
+ |
#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.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/gles2_cmd_decoder.h" |
-#include "gpu/command_buffer/service/gpu_scheduler.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 GpuScheduler; |
-class TransferBuffer; |
-class TransferBufferManagerInterface; |
- |
-namespace gles2 { |
-class GLES2CmdHelper; |
-class GLES2Implementation; |
-} // namespace gles2 |
-} // namespace gpu |
+#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(); |
+ 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. |
- 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; |
- bool IsGpuChannelLost() override; |
- void EnsureWorkVisible() override; |
- gpu::CommandBufferNamespace GetNamespaceID() const override; |
- uint64_t 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); |
+ |
+ EGLBoolean ReleaseCurrent(ThreadState*); |
+ EGLBoolean MakeCurrent(ThreadState*, EGLSurface, EGLSurface, EGLContext); |
+ |
+ uint64_t GenerateFenceSyncRelease(); |
+ bool IsFenceSyncRelease(uint64_t release); |
+ bool IsFenceSyncFlushed(uint64_t release); |
+ bool IsFenceSyncFlushReceived(uint64_t release); |
private: |
- EGLNativeDisplayType display_id_; |
+ void InitializeConfigsIfNeeded(); |
+ const Config* GetConfig(EGLConfig); |
+ Surface* GetSurface(EGLSurface); |
+ Context* GetContext(EGLContext); |
+ base::Lock lock_; |
bool is_initialized_; |
- |
- bool create_offscreen_; |
- int create_offscreen_width_; |
- int create_offscreen_height_; |
uint64_t next_fence_sync_release_; |
- |
- scoped_refptr<gpu::TransferBufferManagerInterface> transfer_buffer_manager_; |
- scoped_ptr<gpu::CommandBufferService> command_buffer_; |
- scoped_ptr<gpu::GpuScheduler> gpu_scheduler_; |
- scoped_ptr<gpu::gles2::GLES2Decoder> decoder_; |
- scoped_refptr<gfx::GLContext> gl_context_; |
- scoped_refptr<gfx::GLSurface> gl_surface_; |
- scoped_ptr<gpu::gles2::GLES2CmdHelper> gles2_cmd_helper_; |
- scoped_ptr<gpu::TransferBuffer> transfer_buffer_; |
- |
- // TODO(alokp): Support more than one config, surface, and context. |
- scoped_ptr<Config> config_; |
- scoped_ptr<Surface> surface_; |
- scoped_ptr<gpu::gles2::GLES2Implementation> context_; |
+ std::vector<scoped_refptr<Surface>> surfaces_; |
+ std::vector<scoped_refptr<Context>> contexts_; |
+ Config* configs_[2]; |
DISALLOW_COPY_AND_ASSIGN(Display); |
}; |