Home | History | Annotate | Download | only in resources
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "cc/resources/scoped_gpu_raster.h"
      6 #include "gpu/command_buffer/client/gles2_interface.h"
      7 #include "third_party/khronos/GLES2/gl2.h"
      8 #include "third_party/khronos/GLES2/gl2ext.h"
      9 #include "third_party/skia/include/gpu/GrContext.h"
     10 
     11 using gpu::gles2::GLES2Interface;
     12 
     13 namespace cc {
     14 
     15 ScopedGpuRaster::ScopedGpuRaster(ContextProvider* context_provider)
     16     : context_provider_(context_provider) {
     17   BeginGpuRaster();
     18 }
     19 
     20 ScopedGpuRaster::~ScopedGpuRaster() {
     21   EndGpuRaster();
     22 }
     23 
     24 void ScopedGpuRaster::BeginGpuRaster() {
     25   GLES2Interface* gl = context_provider_->ContextGL();
     26 
     27   // TODO(alokp): Use a trace macro to push/pop markers.
     28   // Using push/pop functions directly incurs cost to evaluate function
     29   // arguments even when tracing is disabled.
     30   gl->PushGroupMarkerEXT(0, "GpuRasterization");
     31 
     32   class GrContext* gr_context = context_provider_->GrContext();
     33   // TODO(sohanjg): Remove when TestContextProvider gives a GrContext.
     34   if (gr_context)
     35     gr_context->resetContext();
     36 }
     37 
     38 void ScopedGpuRaster::EndGpuRaster() {
     39   GLES2Interface* gl = context_provider_->ContextGL();
     40 
     41   class GrContext* gr_context = context_provider_->GrContext();
     42   // TODO(sohanjg): Remove when TestContextProvider gives a GrContext.
     43   if (gr_context)
     44     gr_context->flush();
     45 
     46   // TODO(alokp): Use a trace macro to push/pop markers.
     47   // Using push/pop functions directly incurs cost to evaluate function
     48   // arguments even when tracing is disabled.
     49   gl->PopGroupMarkerEXT();
     50 }
     51 
     52 }  // namespace cc
     53