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); |
}; |