1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2020 Google LLC 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#include "src/gpu/d3d/GrD3DSemaphore.h" 9cb93a386Sopenharmony_ci 10cb93a386Sopenharmony_ci#include "src/gpu/d3d/GrD3DGpu.h" 11cb93a386Sopenharmony_ci 12cb93a386Sopenharmony_ci 13cb93a386Sopenharmony_cistd::unique_ptr<GrD3DSemaphore> GrD3DSemaphore::Make(GrD3DGpu* gpu) { 14cb93a386Sopenharmony_ci GrD3DFenceInfo fenceInfo; 15cb93a386Sopenharmony_ci gpu->device()->CreateFence(0, D3D12_FENCE_FLAG_NONE, IID_PPV_ARGS(&fenceInfo.fFence)); 16cb93a386Sopenharmony_ci fenceInfo.fValue = 1; 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_ci return std::unique_ptr<GrD3DSemaphore>(new GrD3DSemaphore(fenceInfo)); 19cb93a386Sopenharmony_ci} 20cb93a386Sopenharmony_ci 21cb93a386Sopenharmony_cistd::unique_ptr<GrD3DSemaphore> GrD3DSemaphore::MakeWrapped(const GrD3DFenceInfo& fenceInfo) { 22cb93a386Sopenharmony_ci return std::unique_ptr<GrD3DSemaphore>(new GrD3DSemaphore(fenceInfo)); 23cb93a386Sopenharmony_ci} 24cb93a386Sopenharmony_ci 25cb93a386Sopenharmony_ciGrD3DSemaphore::GrD3DSemaphore(const GrD3DFenceInfo& fenceInfo) : fFenceInfo(fenceInfo) {} 26cb93a386Sopenharmony_ci 27cb93a386Sopenharmony_ciGrBackendSemaphore GrD3DSemaphore::backendSemaphore() const { 28cb93a386Sopenharmony_ci GrBackendSemaphore backendSemaphore; 29cb93a386Sopenharmony_ci backendSemaphore.initDirect3D(fFenceInfo); 30cb93a386Sopenharmony_ci return backendSemaphore; 31cb93a386Sopenharmony_ci} 32