| // Copyright 2020 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "media/gpu/vaapi/test/scoped_va_context.h" |
| |
| #include "media/gpu/vaapi/test/macros.h" |
| #include "media/gpu/vaapi/test/scoped_va_config.h" |
| #include "media/gpu/vaapi/test/vaapi_device.h" |
| |
| namespace media { |
| namespace vaapi_test { |
| |
| ScopedVAContext::ScopedVAContext(const VaapiDevice& device, |
| const ScopedVAConfig& config, |
| const gfx::Size& size) |
| : device_(device), |
| config_(config), |
| context_id_(VA_INVALID_ID), |
| size_(size) { |
| const VAStatus res = |
| vaCreateContext(device_.display(), config_.id(), size_.width(), |
| size_.height(), VA_PROGRESSIVE, |
| /*render_targets=*/nullptr, |
| /*num_render_targets=*/0, &context_id_); |
| VA_LOG_ASSERT(res, "vaCreateContext"); |
| LOG_ASSERT(context_id_ != VA_INVALID_ID) |
| << "vaCreateContext created invalid context ID"; |
| VLOG(1) << "Created context with ID " << context_id_; |
| } |
| |
| ScopedVAContext::~ScopedVAContext() { |
| VLOG(1) << "Destroying context " << context_id_; |
| DCHECK_NE(context_id_, VA_INVALID_ID); |
| const VAStatus res = vaDestroyContext(device_.display(), context_id_); |
| VA_LOG_ASSERT(res, "vaDestroyContext"); |
| } |
| |
| } // namespace vaapi_test |
| } // namespace media |