Commit 656c5a5e authored by Sunny Sachanandani's avatar Sunny Sachanandani Committed by Commit Bot

gpu: Fix command buffer PRESUBMIT script

Current implementation of PRESUBMIT makes it impossible to fix autogen
files by running the generator if it wasn't run by accident and missed
by PRESUBMIT earlier.

New implementation removes this check, and replaces it with a more
robust check for running the generator which won't reject changes
unless there's an actual mismatch with generator output.

TEST=Ran git cl presubmit on CL from running build_gles2_cmd_buffer.py

Bug: 974337
Change-Id: Ic812bf44b921fd0718a58b70892b042876e3d357
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1662711
Auto-Submit: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: default avatarKenneth Russell <kbr@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#669861}
parent 6b6d5811
# Copyright 2019 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.
"""Enforces command buffer autogen matches script output.
See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
......@@ -11,60 +10,84 @@ for more details on the presubmit API built into depot_tools.
import os.path
def _IsGLES2CmdBufferFile(file):
filename = os.path.basename(file.LocalPath())
if filename in [
'build_cmd_buffer_lib.py', 'build_gles2_cmd_buffer.py',
'gles2_cmd_buffer_functions.txt', 'gl2.h', 'gl2ext.h', 'gl3.h', 'gl31.h',
'gl2chromium.h', 'gl2extchromium.h'
]:
return True
return ((filename.startswith('gles2') or filename.startswith('context_state')
or filename.startswith('client_context_state')) and
filename.endswith('_autogen.h'))
def _IsRasterCmdBufferFile(file):
filename = os.path.basename(file.LocalPath())
if filename in [
'build_cmd_buffer_lib.py', 'build_raster_cmd_buffer.py',
'raster_cmd_buffer_functions.txt'
]:
return True
return filename.startswith('raster') and filename.endswith('_autogen.h')
def _IsWebGPUCmdBufferFile(file):
filename = os.path.basename(file.LocalPath())
if filename in [
'build_cmd_buffer_lib.py', 'build_webgpu_cmd_buffer.py',
'webgpu_cmd_buffer_functions.txt'
]:
return True
return filename.startswith('webgpu') and filename.endswith('_autogen.h')
def CommonChecks(input_api, output_api):
gles2_cmd_buffer_files = input_api.AffectedFiles(
file_filter=lambda x: os.path.basename(x.LocalPath()) in [
'build_cmd_buffer_lib.py', 'build_gles2_cmd_buffer.py',
'gles2_cmd_buffer_functions.txt'])
file_filter=_IsGLES2CmdBufferFile)
raster_cmd_buffer_files = input_api.AffectedFiles(
file_filter=lambda x: os.path.basename(x.LocalPath()) in [
'build_cmd_buffer_lib.py', 'build_raster_cmd_buffer.py',
'raster_cmd_buffer_functions.txt'])
file_filter=_IsRasterCmdBufferFile)
webgpu_cmd_buffer_files = input_api.AffectedFiles(
file_filter=lambda x: os.path.basename(x.LocalPath()) in [
'build_cmd_buffer_lib.py', 'build_webgpu_cmd_buffer.py',
'webgpu_cmd_buffer_functions.txt'])
autogen_files = input_api.AffectedFiles(
file_filter=lambda x: x.LocalPath().endswith('_autogen.h'))
# Use input_api.change.AffectedFiles() to get files outside this directory.
external_gl_headers = input_api.change.AffectedFiles(
file_filter=lambda x: os.path.basename(x.LocalPath()) in [
'gl2.h', 'gl2ext.h', 'gl3.h', 'gl31.h', 'gl2chromium.h',
'gl2extchromium.h'
])
file_filter=_IsWebGPUCmdBufferFile)
messages = []
if (len(autogen_files) > 0 and len(gles2_cmd_buffer_files) == 0 and
len(external_gl_headers) == 0 and len(raster_cmd_buffer_files) == 0 and
len(webgpu_cmd_buffer_files) == 0):
long_text = 'Changed files:\n'
for file in autogen_files:
long_text += file.LocalPath() + '\n'
long_text += '\n'
messages.append(output_api.PresubmitError(
'Command buffer autogenerated files changed but generators did not.',
long_text=long_text))
with input_api.temporary_directory() as temp_dir:
commands = []
if len(gles2_cmd_buffer_files) > 0:
commands.append(input_api.Command(name='build_gles2_cmd_buffer',
cmd=[input_api.python_executable, 'build_gles2_cmd_buffer.py',
'--check', '--output-dir=' + temp_dir],
kwargs={}, message=output_api.PresubmitError))
commands.append(
input_api.Command(
name='build_gles2_cmd_buffer',
cmd=[
input_api.python_executable, 'build_gles2_cmd_buffer.py',
'--check', '--output-dir=' + temp_dir
],
kwargs={},
message=output_api.PresubmitError))
if len(raster_cmd_buffer_files) > 0:
commands.append(input_api.Command(name='build_raster_cmd_buffer',
cmd=[input_api.python_executable, 'build_raster_cmd_buffer.py',
'--check', '--output-dir=' + temp_dir],
kwargs={}, message=output_api.PresubmitError))
commands.append(
input_api.Command(
name='build_raster_cmd_buffer',
cmd=[
input_api.python_executable, 'build_raster_cmd_buffer.py',
'--check', '--output-dir=' + temp_dir
],
kwargs={},
message=output_api.PresubmitError))
if len(webgpu_cmd_buffer_files) > 0:
commands.append(input_api.Command(name='build_webgpu_cmd_buffer',
cmd=[input_api.python_executable, 'build_webgpu_cmd_buffer.py',
'--check', '--output-dir=' + temp_dir],
kwargs={}, message=output_api.PresubmitError))
commands.append(
input_api.Command(
name='build_webgpu_cmd_buffer',
cmd=[
input_api.python_executable, 'build_webgpu_cmd_buffer.py',
'--check', '--output-dir=' + temp_dir
],
kwargs={},
message=output_api.PresubmitError))
if len(commands) > 0:
messages.extend(input_api.RunTests(commands))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment