diff --git a/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py b/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py
index a9a62e6..4c0f5b5 100644
--- a/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py
+++ b/client/site_tests/video_HangoutHardwarePerf/video_HangoutHardwarePerf.py
@@ -202,12 +202,17 @@
             v[0] = self._downloads.get_path(v[0])
             v[-1:-1] = ['0', '0'] # no fps requirements
             test_video_data.append(':'.join(v))
-        return [self.get_chrome_binary_path(VDA_BINARY),
-                '--gtest_filter=DecodeVariations/*/0',
-                '--test_video_data=%s' % ';'.join(test_video_data),
-                '--rendering_warm_up=%d' % RENDERING_WARM_UP,
-                '--rendering_fps=%f' % RENDERING_FPS,
-                '--num_play_throughs=%d' % MAX_INT]
+        cmd_line = [
+            self.get_chrome_binary_path(VDA_BINARY),
+            '--gtest_filter=DecodeVariations/*/0',
+            '--test_video_data=%s' % ';'.join(test_video_data),
+            '--rendering_warm_up=%d' % RENDERING_WARM_UP,
+            '--rendering_fps=%f' % RENDERING_FPS,
+            '--num_play_throughs=%d' % MAX_INT]
+        if utils.is_freon():
+            cmd_line.append('--ozone-platform=gbm')
+        return cmd_line
+
 
     def get_vea_unittest_cmd_line(self, encode_videos):
         test_stream_data = []
diff --git a/client/site_tests/video_VDAPerf/video_VDAPerf.py b/client/site_tests/video_VDAPerf/video_VDAPerf.py
index 4d22de6..9a532fc 100644
--- a/client/site_tests/video_VDAPerf/video_VDAPerf.py
+++ b/client/site_tests/video_VDAPerf/video_VDAPerf.py
@@ -9,6 +9,7 @@
 import re
 import urllib2
 
+from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.cros import chrome_binary_test
 
@@ -226,14 +227,23 @@
             '%s_%s_%s' % (test_name, type_name, filename))
 
 
+    def _append_freon_switch_if_needed(self, cmd_line):
+        if utils.is_freon():
+            return cmd_line + ' --ozone-platform=gbm'
+        else:
+            return cmd_line
+
+
     def _run_test_case(self, name, test_video_data, frame_num, rendering_fps):
 
         # Get frame delivery time, decode as fast as possible.
         test_log_file = self._results_file(name, 'no_rendering', OUTPUT_LOG)
-        cmd_line = ('--test_video_data="%s" ' % test_video_data +
-                    '--gtest_filter=DecodeVariations/*/0 ' +
-                    '--disable_rendering ' +
-                    '--output_log="%s"' % test_log_file)
+        cmd_line = self._append_freon_switch_if_needed(
+            '--test_video_data="%s" ' % test_video_data +
+            '--gtest_filter=DecodeVariations/*/0 ' +
+            '--disable_rendering ' +
+            '--output_log="%s"' % test_log_file)
+
         self.run_chrome_test_binary(BINARY, cmd_line)
 
         frame_delivery_times = self._load_frame_delivery_times(test_log_file)
@@ -246,11 +256,12 @@
         # Get frame drop rate & CPU usage, decode at the specified fps
         test_log_file = self._results_file(name, 'with_rendering', OUTPUT_LOG)
         time_log_file = self._results_file(name, 'with_rendering', TIME_LOG)
-        cmd_line = ('--test_video_data="%s" ' % test_video_data +
-                    '--gtest_filter=DecodeVariations/*/0 ' +
-                    '--rendering_warm_up=%d ' % RENDERING_WARM_UP_ITERS +
-                    ('--rendering_fps=%s ' % rendering_fps) +
-                    '--output_log="%s"' % test_log_file)
+        cmd_line = self._append_freon_switch_if_needed(
+            '--test_video_data="%s" ' % test_video_data +
+            '--gtest_filter=DecodeVariations/*/0 ' +
+            '--rendering_warm_up=%d ' % RENDERING_WARM_UP_ITERS +
+            '--rendering_fps=%s ' % rendering_fps +
+            '--output_log="%s"' % test_log_file)
         time_cmd = ('%s -f "%s" -o "%s" ' %
                     (TIME_BINARY, TIME_OUTPUT_FORMAT, time_log_file))
         self.run_chrome_test_binary(BINARY, cmd_line, prefix=time_cmd)
@@ -261,9 +272,10 @@
 
         # Get decode time median.
         test_log_file = self._results_file(name, 'decode_time', OUTPUT_LOG)
-        cmd_line = ('--test_video_data="%s" ' % test_video_data +
-                    '--gtest_filter=*TestDecodeTimeMedian ' +
-                    '--output_log="%s"' % test_log_file)
+        cmd_line = self._append_freon_switch_if_needed(
+            '--test_video_data="%s" ' % test_video_data +
+            '--gtest_filter=*TestDecodeTimeMedian ' +
+            '--output_log="%s"' % test_log_file)
         self.run_chrome_test_binary(BINARY, cmd_line)
         line = open(test_log_file, 'r').read()
         m = RE_DECODE_TIME_MEDIAN.match(line)
diff --git a/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py b/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py
index af8bb0a..889682b 100644
--- a/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py
+++ b/client/site_tests/video_VideoDecodeAccelerator/video_VideoDecodeAccelerator.py
@@ -4,6 +4,7 @@
 
 import logging
 import os
+from autotest_lib.client.bin import utils
 from autotest_lib.client.common_lib import error
 from autotest_lib.client.cros import chrome_binary_test
 
@@ -42,6 +43,9 @@
             if gtest_filter:
               cmd_line = '%s --gtest_filter=%s' % (cmd_line, gtest_filter)
 
+            if utils.is_freon():
+                cmd_line += ' --ozone-platform=gbm'
+
             try:
                 self.run_chrome_test_binary(self.binary, cmd_line)
             except error.TestFail as test_failure:
