blob: c73d780585cb63c40e85e59af5cee54933357504 [file] [log] [blame]
Greg Daniel02c45902020-03-09 10:58:09 -04001/*
2 * Copyright 2020 Google LLC
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 "src/gpu/d3d/GrD3DResourceProvider.h"
9
Greg Daniele52c9782020-03-23 14:18:37 -040010#include "src/gpu/d3d/GrD3DCommandList.h"
Greg Daniel02c45902020-03-09 10:58:09 -040011#include "src/gpu/d3d/GrD3DGpu.h"
12
Greg Daniel85da3362020-03-09 15:18:35 -040013GrD3DResourceProvider::GrD3DResourceProvider(GrD3DGpu* gpu) : fGpu(gpu) {
Greg Daniel85da3362020-03-09 15:18:35 -040014}
15
Greg Daniele52c9782020-03-23 14:18:37 -040016std::unique_ptr<GrD3DDirectCommandList> GrD3DResourceProvider::findOrCreateDirectCommandList() {
Greg Daniel7a5f1fa2020-03-24 14:50:19 -040017 if (fAvailableDirectCommandLists.count()) {
18 std::unique_ptr<GrD3DDirectCommandList> list =
19 std::move(fAvailableDirectCommandLists.back());
20 fAvailableDirectCommandLists.pop_back();
21 return list;
22 }
Greg Daniel83ed2132020-03-24 13:15:33 -040023 return GrD3DDirectCommandList::Make(fGpu->device());
Greg Daniel85da3362020-03-09 15:18:35 -040024}
Greg Daniel7a5f1fa2020-03-24 14:50:19 -040025
26void GrD3DResourceProvider::recycleDirectCommandList(
27 std::unique_ptr<GrD3DDirectCommandList> commandList) {
28 commandList.reset();
29 fAvailableDirectCommandLists.push_back(std::move(commandList));
30}