#include "base/command_line.h"
#include "base/debug/trace_event.h"
#include "base/logging.h"
-#include "content/browser/renderer_host/compositing_iosurface_shader_programs_mac.h"
#include "content/browser/gpu/gpu_data_manager_impl.h"
#include "ui/base/ui_base_switches.h"
#include "ui/gl/gl_switches.h"
// Note that VSync is ignored because CoreAnimation will automatically
// rate limit draws.
- // Prepare the shader program cache. Precompile the shader programs
- // needed to draw the IO Surface for non-offscreen contexts.
- bool prepared = false;
- scoped_ptr<CompositingIOSurfaceShaderPrograms> shader_program_cache;
- {
- gfx::ScopedCGLSetCurrentContext scoped_set_current_context(cgl_context);
- shader_program_cache.reset(new CompositingIOSurfaceShaderPrograms());
- if (window_number == kOffscreenContextWindowNumber) {
- prepared = true;
- } else {
- prepared = (
- shader_program_cache->UseBlitProgram() &&
- shader_program_cache->UseSolidWhiteProgram());
- }
- glUseProgram(0u);
- }
- if (!prepared) {
- LOG(ERROR) << "IOSurface failed to compile/link required shader programs.";
- return NULL;
- }
-
return new CompositingIOSurfaceContext(
window_number,
cgl_context_strong,
- cgl_context,
- shader_program_cache.Pass());
+ cgl_context);
}
void CompositingIOSurfaceContext::PoisonContextAndSharegroup() {
CompositingIOSurfaceContext::CompositingIOSurfaceContext(
int window_number,
base::ScopedTypeRef<CGLContextObj> cgl_context_strong,
- CGLContextObj cgl_context,
- scoped_ptr<CompositingIOSurfaceShaderPrograms> shader_program_cache)
+ CGLContextObj cgl_context)
: window_number_(window_number),
cgl_context_strong_(cgl_context_strong),
cgl_context_(cgl_context),
- shader_program_cache_(shader_program_cache.Pass()),
poisoned_(false) {
DCHECK(window_map()->find(window_number_) == window_map()->end());
window_map()->insert(std::make_pair(window_number_, this));
CompositingIOSurfaceContext::~CompositingIOSurfaceContext() {
GpuDataManager::GetInstance()->RemoveObserver(this);
- {
- gfx::ScopedCGLSetCurrentContext scoped_set_current_context(cgl_context_);
- shader_program_cache_->Reset();
- }
if (!poisoned_) {
DCHECK(window_map()->find(window_number_) != window_map()->end());
DCHECK(window_map()->find(window_number_)->second == this);