Home | History | Annotate | Download | only in gpu
      1 /*
      2 * Copyright 2016 Google Inc.
      3 *
      4 * Use of this source code is governed by a BSD-style license that can be
      5 * found in the LICENSE file.
      6 */
      7 
      8 #include "GrGpuCommandBuffer.h"
      9 
     10 #include "GrCaps.h"
     11 #include "GrFixedClip.h"
     12 #include "GrGpu.h"
     13 #include "GrPrimitiveProcessor.h"
     14 #include "GrRenderTarget.h"
     15 #include "SkRect.h"
     16 
     17 void GrGpuCommandBuffer::submit() {
     18     this->gpu()->handleDirtyContext();
     19     this->onSubmit();
     20 }
     21 
     22 void GrGpuCommandBuffer::clear(GrRenderTarget* rt, const GrFixedClip& clip, GrColor color) {
     23 #ifdef SK_DEBUG
     24     SkASSERT(rt);
     25     SkASSERT(!clip.scissorEnabled() ||
     26              (SkIRect::MakeWH(rt->width(), rt->height()).contains(clip.scissorRect()) &&
     27               SkIRect::MakeWH(rt->width(), rt->height()) != clip.scissorRect()));
     28 #endif
     29     this->onClear(rt, clip, color);
     30 }
     31 
     32 void GrGpuCommandBuffer::clearStencilClip(GrRenderTarget* rt, const GrFixedClip& clip,
     33                                           bool insideStencilMask) {
     34     this->onClearStencilClip(rt, clip, insideStencilMask);
     35 }
     36 
     37 bool GrGpuCommandBuffer::draw(const GrPipeline& pipeline,
     38                               const GrPrimitiveProcessor& primProc,
     39                               const GrMesh* mesh,
     40                               int meshCount,
     41                               const SkRect& bounds) {
     42     SkASSERT(pipeline.isInitialized());
     43     if (primProc.numAttribs() > this->gpu()->caps()->maxVertexAttributes()) {
     44         this->gpu()->stats()->incNumFailedDraws();
     45         return false;
     46     }
     47     this->onDraw(pipeline, primProc, mesh, meshCount, bounds);
     48     return true;
     49 }
     50 
     51