blob: 7d47f9d7a7806dc32decfcbc18bfe1f3d11d197e [file] [log] [blame] [edit]
// Copyright 2022 The Chromium Authors
// Copyright 2024 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "fake_driver.h"
namespace libvafake {
FakeDriver::FakeDriver(int drm_fd) : scoped_bo_mapping_factory_(drm_fd) {}
FakeDriver::~FakeDriver() = default;
FakeConfig::IdType FakeDriver::CreateConfig(
VAProfile profile,
VAEntrypoint entrypoint,
std::vector<VAConfigAttrib> attrib_list) {
return config_.CreateObject(profile, entrypoint, std::move(attrib_list));
}
bool FakeDriver::ConfigExists(FakeConfig::IdType id) {
return config_.ObjectExists(id);
}
const FakeConfig& FakeDriver::GetConfig(FakeConfig::IdType id) {
return config_.GetObject(id);
}
void FakeDriver::DestroyConfig(FakeConfig::IdType id) {
config_.DestroyObject(id);
}
FakeSurface::IdType FakeDriver::CreateSurface(
unsigned int format,
unsigned int width,
unsigned int height,
std::vector<VASurfaceAttrib> attrib_list) {
return surface_.CreateObject(format, width, height, std::move(attrib_list),
scoped_bo_mapping_factory_);
}
bool FakeDriver::SurfaceExists(FakeSurface::IdType id) {
return surface_.ObjectExists(id);
}
const FakeSurface& FakeDriver::GetSurface(FakeSurface::IdType id) {
return surface_.GetObject(id);
}
void FakeDriver::DestroySurface(FakeSurface::IdType id) {
surface_.DestroyObject(id);
}
FakeContext::IdType FakeDriver::CreateContext(
VAConfigID config_id,
int picture_width,
int picture_height,
int flag,
std::vector<VASurfaceID> render_targets) {
return context_.CreateObject(GetConfig(config_id), picture_width,
picture_height, flag, std::move(render_targets));
}
bool FakeDriver::ContextExists(FakeContext::IdType id) {
return context_.ObjectExists(id);
}
const FakeContext& FakeDriver::GetContext(FakeContext::IdType id) {
return context_.GetObject(id);
}
void FakeDriver::DestroyContext(FakeContext::IdType id) {
context_.DestroyObject(id);
}
FakeBuffer::IdType FakeDriver::CreateBuffer(VAContextID context,
VABufferType type,
unsigned int size_per_element,
unsigned int num_elements,
const void* data) {
return buffers_.CreateObject(context, type, size_per_element, num_elements,
data);
}
bool FakeDriver::BufferExists(FakeBuffer::IdType id) {
return buffers_.ObjectExists(id);
}
const FakeBuffer& FakeDriver::GetBuffer(FakeBuffer::IdType id) {
return buffers_.GetObject(id);
}
void FakeDriver::DestroyBuffer(FakeBuffer::IdType id) {
buffers_.DestroyObject(id);
}
void FakeDriver::CreateImage(const VAImageFormat& format,
int width,
int height,
VAImage* va_image) {
images_.CreateObject(format, width, height, /*fake_driver=*/*this, va_image);
}
bool FakeDriver::ImageExists(FakeImage::IdType id) {
return images_.ObjectExists(id);
}
const FakeImage& FakeDriver::GetImage(FakeImage::IdType id) {
return images_.GetObject(id);
}
void FakeDriver::DestroyImage(FakeImage::IdType id) {
images_.DestroyObject(id);
}
} // namespace libvafake