File tree Expand file tree Collapse file tree 3 files changed +17
-6
lines changed Expand file tree Collapse file tree 3 files changed +17
-6
lines changed Original file line number Diff line number Diff line change @@ -1103,8 +1103,13 @@ fn default_hdr10_profile(op: vk::VideoCodecOperationFlagsKHR) -> vk::VideoProfil
1103
1103
. luma_bit_depth ( vk:: VideoComponentBitDepthFlagsKHR :: TYPE_10 )
1104
1104
}
1105
1105
1106
- fn default_encode_usage ( ) -> vk:: VideoEncodeUsageInfoKHR < ' static > {
1107
- let tuning_mode = vk:: VideoEncodeTuningModeKHR :: ULTRA_LOW_LATENCY ;
1106
+ fn default_encode_usage ( driver_version : DriverVersion ) -> vk:: VideoEncodeUsageInfoKHR < ' static > {
1107
+ // Nvidia chokes on "ULTRA LOW" for some reason.
1108
+ let tuning_mode = if matches ! ( driver_version, DriverVersion :: NvidiaProprietary { .. } ) {
1109
+ vk:: VideoEncodeTuningModeKHR :: LOW_LATENCY
1110
+ } else {
1111
+ vk:: VideoEncodeTuningModeKHR :: ULTRA_LOW_LATENCY
1112
+ } ;
1108
1113
1109
1114
vk:: VideoEncodeUsageInfoKHR :: default ( )
1110
1115
. video_usage_hints ( vk:: VideoEncodeUsageFlagsKHR :: STREAMING )
Original file line number Diff line number Diff line change @@ -79,8 +79,11 @@ impl H264Encoder {
79
79
let h264_profile_info =
80
80
vk:: VideoEncodeH264ProfileInfoEXT :: default ( ) . std_profile_idc ( profile_idc) ;
81
81
82
- let mut profile =
83
- H264EncodeProfile :: new ( profile, super :: default_encode_usage ( ) , h264_profile_info) ;
82
+ let mut profile = H264EncodeProfile :: new (
83
+ profile,
84
+ super :: default_encode_usage ( vk. device_info . driver_version . clone ( ) ) ,
85
+ h264_profile_info,
86
+ ) ;
84
87
85
88
let mut caps = H264EncodeCapabilities :: default ( ) ;
86
89
Original file line number Diff line number Diff line change @@ -76,8 +76,11 @@ impl H265Encoder {
76
76
let h265_profile_info =
77
77
vk:: VideoEncodeH265ProfileInfoEXT :: default ( ) . std_profile_idc ( profile_idc) ;
78
78
79
- let mut profile =
80
- H265EncodeProfile :: new ( profile, super :: default_encode_usage ( ) , h265_profile_info) ;
79
+ let mut profile = H265EncodeProfile :: new (
80
+ profile,
81
+ super :: default_encode_usage ( vk. device_info . driver_version . clone ( ) ) ,
82
+ h265_profile_info,
83
+ ) ;
81
84
82
85
let mut caps = H265EncodeCapabilities :: default ( ) ;
83
86
You can’t perform that action at this time.
0 commit comments