render(scene, markTypes) {
      const r = this;

      // bind arguments into a render call, and cache it
      // this function may be subsequently called for async redraw
      r._call = function () {
        r._render(scene, markTypes);
      };

      // invoke the renderer
      r._call();

      // clear the cached call for garbage collection
      // async redraws will stash their own copy
      r._call = null;
      return r;
    }
Render an input scenegraph, potentially with a set of dirty items.
This method will perform an immediate rendering with available resources.
The renderer may also need to perform image loading to perform a complete
render. This process can lead to asynchronous re-rendering of the scene
after this method returns. To receive notification when rendering is
complete, use the renderAsync method instead.
@param {object} scene - The root mark of a scenegraph to render.
@param {Array} markTypes - Array of the mark types to render.
                           If undefined, render all mark types
@return {Renderer} - This renderer instance.