| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 #include <stddef.h> | 4 #include <stddef.h> |
| 5 #include <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/at_exit.h" | 10 #include "base/at_exit.h" |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/command_line.h" | 12 #include "base/command_line.h" |
| 13 #include "base/logging.h" | 13 #include "base/logging.h" |
| 14 #include "base/memory/ref_counted.h" | 14 #include "base/memory/ref_counted.h" |
| 15 #include "build/build_config.h" | 15 #include "build/build_config.h" |
| 16 #include "gpu/command_buffer/common/constants.h" | 16 #include "gpu/command_buffer/common/constants.h" |
| 17 #include "gpu/command_buffer/common/gles2_cmd_utils.h" | 17 #include "gpu/command_buffer/common/gles2_cmd_utils.h" |
| 18 #include "gpu/command_buffer/common/sync_token.h" | 18 #include "gpu/command_buffer/common/sync_token.h" |
| 19 #include "gpu/command_buffer/service/buffer_manager.h" | 19 #include "gpu/command_buffer/service/buffer_manager.h" |
| 20 #include "gpu/command_buffer/service/command_buffer_service.h" | 20 #include "gpu/command_buffer/service/command_buffer_service.h" |
| 21 #include "gpu/command_buffer/service/command_executor.h" | 21 #include "gpu/command_buffer/service/command_executor.h" |
| 22 #include "gpu/command_buffer/service/context_group.h" | 22 #include "gpu/command_buffer/service/context_group.h" |
| 23 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 23 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
| 24 #include "gpu/command_buffer/service/logger.h" | 24 #include "gpu/command_buffer/service/logger.h" |
| 25 #include "gpu/command_buffer/service/mailbox_manager_impl.h" | 25 #include "gpu/command_buffer/service/mailbox_manager_impl.h" |
| 26 #include "gpu/command_buffer/service/progress_reporter_stub.h" |
| 26 #include "gpu/command_buffer/service/sync_point_manager.h" | 27 #include "gpu/command_buffer/service/sync_point_manager.h" |
| 27 #include "gpu/command_buffer/service/transfer_buffer_manager.h" | 28 #include "gpu/command_buffer/service/transfer_buffer_manager.h" |
| 28 #include "ui/gfx/geometry/size.h" | 29 #include "ui/gfx/geometry/size.h" |
| 29 #include "ui/gl/gl_context.h" | 30 #include "ui/gl/gl_context.h" |
| 30 #include "ui/gl/gl_context_stub_with_extensions.h" | 31 #include "ui/gl/gl_context_stub_with_extensions.h" |
| 31 #include "ui/gl/gl_image_ref_counted_memory.h" | 32 #include "ui/gl/gl_image_ref_counted_memory.h" |
| 32 #include "ui/gl/gl_share_group.h" | 33 #include "ui/gl/gl_share_group.h" |
| 33 #include "ui/gl/gl_stub_api.h" | 34 #include "ui/gl/gl_stub_api.h" |
| 34 #include "ui/gl/gl_surface.h" | 35 #include "ui/gl/gl_surface.h" |
| 35 #include "ui/gl/gl_surface_stub.h" | 36 #include "ui/gl/gl_surface_stub.h" |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 completeness_cache_ = new gles2::FramebufferCompletenessCache; | 111 completeness_cache_ = new gles2::FramebufferCompletenessCache; |
| 111 } | 112 } |
| 112 | 113 |
| 113 void InitDecoder() { | 114 void InitDecoder() { |
| 114 context_->MakeCurrent(surface_.get()); | 115 context_->MakeCurrent(surface_.get()); |
| 115 scoped_refptr<gles2::FeatureInfo> feature_info = | 116 scoped_refptr<gles2::FeatureInfo> feature_info = |
| 116 new gles2::FeatureInfo(); | 117 new gles2::FeatureInfo(); |
| 117 scoped_refptr<gles2::ContextGroup> context_group = new gles2::ContextGroup( | 118 scoped_refptr<gles2::ContextGroup> context_group = new gles2::ContextGroup( |
| 118 gpu_preferences_, mailbox_manager_.get(), nullptr, translator_cache_, | 119 gpu_preferences_, mailbox_manager_.get(), nullptr, translator_cache_, |
| 119 completeness_cache_, feature_info, true /* bind_generates_resource */, | 120 completeness_cache_, feature_info, true /* bind_generates_resource */, |
| 120 nullptr /* ImageFactory */); | 121 nullptr /* ImageFactory */, &progress_reporter_); |
| 121 command_buffer_.reset( | 122 command_buffer_.reset( |
| 122 new CommandBufferService(context_group->transfer_buffer_manager())); | 123 new CommandBufferService(context_group->transfer_buffer_manager())); |
| 123 command_buffer_->SetPutOffsetChangeCallback( | 124 command_buffer_->SetPutOffsetChangeCallback( |
| 124 base::Bind(&CommandBufferSetup::PumpCommands, base::Unretained(this))); | 125 base::Bind(&CommandBufferSetup::PumpCommands, base::Unretained(this))); |
| 125 command_buffer_->SetGetBufferChangeCallback(base::Bind( | 126 command_buffer_->SetGetBufferChangeCallback(base::Bind( |
| 126 &CommandBufferSetup::GetBufferChanged, base::Unretained(this))); | 127 &CommandBufferSetup::GetBufferChanged, base::Unretained(this))); |
| 127 InitializeInitialCommandBuffer(); | 128 InitializeInitialCommandBuffer(); |
| 128 | 129 |
| 129 decoder_.reset(gles2::GLES2Decoder::Create(context_group.get())); | 130 decoder_.reset(gles2::GLES2Decoder::Create(context_group.get())); |
| 130 executor_.reset(new CommandExecutor(command_buffer_.get(), decoder_.get(), | 131 executor_.reset(new CommandExecutor(command_buffer_.get(), decoder_.get(), |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 std::unique_ptr<CommandBufferService> command_buffer_; | 280 std::unique_ptr<CommandBufferService> command_buffer_; |
| 280 | 281 |
| 281 std::unique_ptr<gles2::GLES2Decoder> decoder_; | 282 std::unique_ptr<gles2::GLES2Decoder> decoder_; |
| 282 std::unique_ptr<CommandExecutor> executor_; | 283 std::unique_ptr<CommandExecutor> executor_; |
| 283 | 284 |
| 284 scoped_refptr<gles2::ShaderTranslatorInterface> vertex_translator_; | 285 scoped_refptr<gles2::ShaderTranslatorInterface> vertex_translator_; |
| 285 scoped_refptr<gles2::ShaderTranslatorInterface> fragment_translator_; | 286 scoped_refptr<gles2::ShaderTranslatorInterface> fragment_translator_; |
| 286 | 287 |
| 287 scoped_refptr<Buffer> buffer_; | 288 scoped_refptr<Buffer> buffer_; |
| 288 int32_t buffer_id_ = 0; | 289 int32_t buffer_id_ = 0; |
| 290 |
| 291 gles2::ProgressReporterStub progress_reporter_; |
| 289 }; | 292 }; |
| 290 | 293 |
| 291 } // anonymous namespace | 294 } // anonymous namespace |
| 292 } // namespace gpu | 295 } // namespace gpu |
| 293 | 296 |
| 294 | 297 |
| 295 static gpu::CommandBufferSetup& GetSetup() { | 298 static gpu::CommandBufferSetup& GetSetup() { |
| 296 static gpu::CommandBufferSetup setup; | 299 static gpu::CommandBufferSetup setup; |
| 297 return setup; | 300 return setup; |
| 298 } | 301 } |
| 299 | 302 |
| 300 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { | 303 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
| 301 GetSetup().RunCommandBuffer(data, size); | 304 GetSetup().RunCommandBuffer(data, size); |
| 302 return 0; | 305 return 0; |
| 303 } | 306 } |
| OLD | NEW |