summaryrefslogtreecommitdiffstats
path: root/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'gpu')
-rw-r--r--gpu/config/gpu_info.cc40
-rw-r--r--gpu/config/gpu_info.h20
-rw-r--r--gpu/config/gpu_info_collector.cc2
-rw-r--r--gpu/config/gpu_info_unittest.cc1
4 files changed, 48 insertions, 15 deletions
diff --git a/gpu/config/gpu_info.cc b/gpu/config/gpu_info.cc
index 3653a10..85d26fb 100644
--- a/gpu/config/gpu_info.cc
+++ b/gpu/config/gpu_info.cc
@@ -6,8 +6,8 @@
namespace {
-void EnumerateGPUDevice(gpu::GPUInfo::Enumerator* enumerator,
- const gpu::GPUInfo::GPUDevice& device) {
+void EnumerateGPUDevice(const gpu::GPUInfo::GPUDevice& device,
+ gpu::GPUInfo::Enumerator* enumerator) {
enumerator->BeginGPUDevice();
enumerator->AddInt("vendorId", device.vendor_id);
enumerator->AddInt("deviceId", device.device_id);
@@ -17,9 +17,21 @@ void EnumerateGPUDevice(gpu::GPUInfo::Enumerator* enumerator,
enumerator->EndGPUDevice();
}
+void EnumerateVideoDecodeAcceleratorSupportedProfile(
+ const gpu::VideoDecodeAcceleratorSupportedProfile& profile,
+ gpu::GPUInfo::Enumerator* enumerator) {
+ enumerator->BeginVideoDecodeAcceleratorSupportedProfile();
+ enumerator->AddInt("profile", profile.profile);
+ enumerator->AddInt("maxResolutionWidth", profile.max_resolution.width());
+ enumerator->AddInt("maxResolutionHeight", profile.max_resolution.height());
+ enumerator->AddInt("minResolutionWidth", profile.min_resolution.width());
+ enumerator->AddInt("minResolutionHeight", profile.min_resolution.height());
+ enumerator->EndVideoDecodeAcceleratorSupportedProfile();
+}
+
void EnumerateVideoEncodeAcceleratorSupportedProfile(
- gpu::GPUInfo::Enumerator* enumerator,
- const gpu::VideoEncodeAcceleratorSupportedProfile profile) {
+ const gpu::VideoEncodeAcceleratorSupportedProfile& profile,
+ gpu::GPUInfo::Enumerator* enumerator) {
enumerator->BeginVideoEncodeAcceleratorSupportedProfile();
enumerator->AddInt("profile", profile.profile);
enumerator->AddInt("maxResolutionWidth", profile.max_resolution.width());
@@ -101,7 +113,9 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
CollectInfoResult dx_diagnostics_info_state;
DxDiagNode dx_diagnostics;
#endif
- std::vector<VideoEncodeAcceleratorSupportedProfile>
+ VideoDecodeAcceleratorSupportedProfiles
+ video_decode_accelerator_supported_profiles;
+ VideoEncodeAcceleratorSupportedProfiles
video_encode_accelerator_supported_profiles;
};
@@ -115,10 +129,9 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
// Required fields (according to DevTools protocol) first.
enumerator->AddString("machineModelName", machine_model_name);
enumerator->AddString("machineModelVersion", machine_model_version);
- EnumerateGPUDevice(enumerator, gpu);
- for (size_t ii = 0; ii < secondary_gpus.size(); ++ii) {
- EnumerateGPUDevice(enumerator, secondary_gpus[ii]);
- }
+ EnumerateGPUDevice(gpu, enumerator);
+ for (const auto& secondary_gpu: secondary_gpus)
+ EnumerateGPUDevice(secondary_gpu, enumerator);
enumerator->BeginAuxAttributes();
enumerator->AddTimeDeltaInSecondsF("initializationTime",
@@ -159,11 +172,10 @@ void GPUInfo::EnumerateFields(Enumerator* enumerator) const {
enumerator->AddInt("DxDiagnosticsInfoState", dx_diagnostics_info_state);
#endif
// TODO(kbr): add dx_diagnostics on Windows.
- for (size_t ii = 0; ii < video_encode_accelerator_supported_profiles.size();
- ++ii) {
- EnumerateVideoEncodeAcceleratorSupportedProfile(
- enumerator, video_encode_accelerator_supported_profiles[ii]);
- }
+ for (const auto& profile : video_decode_accelerator_supported_profiles)
+ EnumerateVideoDecodeAcceleratorSupportedProfile(profile, enumerator);
+ for (const auto& profile : video_encode_accelerator_supported_profiles)
+ EnumerateVideoEncodeAcceleratorSupportedProfile(profile, enumerator);
enumerator->EndAuxAttributes();
}
diff --git a/gpu/config/gpu_info.h b/gpu/config/gpu_info.h
index cbd8361..f377698 100644
--- a/gpu/config/gpu_info.h
+++ b/gpu/config/gpu_info.h
@@ -54,6 +54,15 @@ enum VideoCodecProfile {
VIDEO_CODEC_PROFILE_MAX = VP9PROFILE_ANY,
};
+// Specification of a decoding profile supported by a hardware decoder.
+struct GPU_EXPORT VideoDecodeAcceleratorSupportedProfile {
+ VideoCodecProfile profile;
+ gfx::Size max_resolution;
+ gfx::Size min_resolution;
+};
+using VideoDecodeAcceleratorSupportedProfiles =
+ std::vector<VideoDecodeAcceleratorSupportedProfile>;
+
// Specification of an encoding profile supported by a hardware encoder.
struct GPU_EXPORT VideoEncodeAcceleratorSupportedProfile {
VideoCodecProfile profile;
@@ -61,6 +70,8 @@ struct GPU_EXPORT VideoEncodeAcceleratorSupportedProfile {
uint32 max_framerate_numerator;
uint32 max_framerate_denominator;
};
+using VideoEncodeAcceleratorSupportedProfiles =
+ std::vector<VideoEncodeAcceleratorSupportedProfile>;
struct GPU_EXPORT GPUInfo {
struct GPU_EXPORT GPUDevice {
@@ -206,7 +217,9 @@ struct GPU_EXPORT GPUInfo {
DxDiagNode dx_diagnostics;
#endif
- std::vector<VideoEncodeAcceleratorSupportedProfile>
+ VideoDecodeAcceleratorSupportedProfiles
+ video_decode_accelerator_supported_profiles;
+ VideoEncodeAcceleratorSupportedProfiles
video_encode_accelerator_supported_profiles;
// Note: when adding new members, please remember to update EnumerateFields
// in gpu_info.cc.
@@ -232,6 +245,11 @@ struct GPU_EXPORT GPUInfo {
virtual void BeginGPUDevice() = 0;
virtual void EndGPUDevice() = 0;
+ // Markers indicating that a VideoDecodeAcceleratorSupportedProfile is
+ // being described.
+ virtual void BeginVideoDecodeAcceleratorSupportedProfile() = 0;
+ virtual void EndVideoDecodeAcceleratorSupportedProfile() = 0;
+
// Markers indicating that a VideoEncodeAcceleratorSupportedProfile is
// being described.
virtual void BeginVideoEncodeAcceleratorSupportedProfile() = 0;
diff --git a/gpu/config/gpu_info_collector.cc b/gpu/config/gpu_info_collector.cc
index c673057..2403340 100644
--- a/gpu/config/gpu_info_collector.cc
+++ b/gpu/config/gpu_info_collector.cc
@@ -163,6 +163,8 @@ void MergeGPUInfoGL(GPUInfo* basic_gpu_info,
basic_gpu_info->direct_rendering = context_gpu_info.direct_rendering;
basic_gpu_info->context_info_state = context_gpu_info.context_info_state;
basic_gpu_info->initialization_time = context_gpu_info.initialization_time;
+ basic_gpu_info->video_decode_accelerator_supported_profiles =
+ context_gpu_info.video_decode_accelerator_supported_profiles;
basic_gpu_info->video_encode_accelerator_supported_profiles =
context_gpu_info.video_encode_accelerator_supported_profiles;
}
diff --git a/gpu/config/gpu_info_unittest.cc b/gpu/config/gpu_info_unittest.cc
index 1d5fa6e..21dd4ff 100644
--- a/gpu/config/gpu_info_unittest.cc
+++ b/gpu/config/gpu_info_unittest.cc
@@ -33,6 +33,7 @@ TEST(GPUInfoBasicTest, EmptyGPUInfo) {
#if defined(OS_WIN)
EXPECT_EQ(gpu_info.dx_diagnostics_info_state, kCollectInfoNone);
#endif
+ EXPECT_EQ(gpu_info.video_decode_accelerator_supported_profiles.size(), 0u);
EXPECT_EQ(gpu_info.video_encode_accelerator_supported_profiles.size(), 0u);
}