diff options
Diffstat (limited to 'gpu')
-rw-r--r-- | gpu/config/gpu_info.cc | 40 | ||||
-rw-r--r-- | gpu/config/gpu_info.h | 20 | ||||
-rw-r--r-- | gpu/config/gpu_info_collector.cc | 2 | ||||
-rw-r--r-- | gpu/config/gpu_info_unittest.cc | 1 |
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); } |