Commit 8226dc23 by John Plate Committed by Commit Bot

Generate CL enums in libGLESv2

Bug: angleproject:5869 Change-Id: Ie547d415bed37accef6cb62d28bc6b088a1eb810 Reviewed-on: https://chromium-review.googlesource.com/c/angle/angle/+/2829370Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org> Reviewed-by: 's avatarCody Northrop <cnorthrop@google.com> Commit-Queue: John Plate <jplate@google.com>
parent fbfecbe2
......@@ -10,7 +10,7 @@
"scripts/entry_point_packed_gl_enums.json":
"4f7b43863a5e61991bba4010db463679",
"scripts/generate_entry_points.py":
"15459e0793e7bfece50f13991be8d51b",
"6be5ee077187f1ec68e8e6035bcd2cae",
"scripts/gl.xml":
"2a73a58a7e26d8676a2c0af6d528cae6",
"scripts/gl_angle_ext.xml":
......@@ -120,7 +120,7 @@
"src/libGL/libGL_autogen.def":
"2789d87b05eea9f53d52e2aff499b785",
"src/libGLESv2/cl_stubs_autogen.h":
"719dd03921e8cfcd8db6c53c0bddd4ae",
"a20a5e774c40e4230878b90e76fe4f82",
"src/libGLESv2/egl_ext_stubs_autogen.h":
"2ef3b8d087f2a97f7270b96077c93856",
"src/libGLESv2/egl_get_labeled_object_data.json":
......@@ -128,7 +128,7 @@
"src/libGLESv2/egl_stubs_autogen.h":
"6439daa350c1663e71dd0af37dcc91df",
"src/libGLESv2/entry_points_cl_autogen.cpp":
"fc02d4dce683eedc19e4e9e321928238",
"3a65b1fd9a07a192819df70e7b8ec292",
"src/libGLESv2/entry_points_cl_autogen.h":
"129fa7936c8bc6a20de9269da0c3c7d3",
"src/libGLESv2/entry_points_egl_autogen.cpp":
......
{
"src/common/PackedCLEnums_autogen.cpp":
"399217e4821b02c00fb96788de683c55",
"src/common/PackedCLEnums_autogen.h":
"76e2457971997ca26ff3761ac21573e4",
"src/common/PackedEGLEnums_autogen.cpp":
"1e5cf84847c9880d32d1f638b366ed08",
"src/common/PackedEGLEnums_autogen.h":
"0a944740b92f9ff99e3dd99e81122326",
"0574ea48b14b76dc13e654a11597bf1d",
"src/common/PackedGLEnums_autogen.cpp":
"e2cb0a29dcd2bdbda338b82953c752ee",
"src/common/PackedGLEnums_autogen.h":
"be253a688922f04c20166b4e31f6a227",
"60a5b286c98aba32a0e3b537a1424ee9",
"src/common/gen_packed_gl_enums.py":
"d0f03fcaaefd38e45b3ac1bdfefc0bab",
"7453287e3f184427043604d172a6765b",
"src/common/packed_cl_enums.json":
"a30fcf0740b85c0a32518fe4f7d1e138",
"src/common/packed_egl_enums.json":
"76e1b814421e121164d60a0d89cb16c1",
"src/common/packed_gl_enums.json":
......
......@@ -251,7 +251,9 @@ void CL_API_CALL CL_{name}({params})
{{
CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
// TODO: {name}
{packed_gl_enum_conversions}
// TODO: validate
cl::{name}({internal_params});
}}
......@@ -262,7 +264,9 @@ TEMPLATE_CL_ENTRY_POINT_WITH_RETURN = """\
{{
CL_EVENT({name}, "{format_params}"{comma_if_needed}{pass_params});
// TODO: {name}
{packed_gl_enum_conversions}
// TODO: validate
return cl::{name}({internal_params});
}}
......@@ -283,6 +287,8 @@ TEMPLATE_CL_STUBS_HEADER = """\
#include "angle_cl.h"
#include "common/PackedCLEnums_autogen.h"
namespace cl
{{
{stubs}
......@@ -970,6 +976,9 @@ LIBCL_SOURCE_INCLUDES = """\
#include "cl_stubs_autogen.h"
#include "entry_points_cl_utils.h"
#include "validationCL.h"
using namespace cl;
"""
TEMPLATE_EVENT_COMMENT = """\
......@@ -1184,7 +1193,28 @@ TEMPLATE_RESOURCE_ID_TYPE_NAME_CASE = """\
case ResourceIDType::{resource_id_type}:
return "{resource_id_type}";"""
CL_PACKED_TYPES = {}
CL_PACKED_TYPES = {
"cl_platform_info": "PlatformInfo",
"cl_device_info": "DeviceInfo",
"cl_context_info": "ContextInfo",
"cl_command_queue_info": "CommandQueueInfo",
"cl_mem_object_type": "MemObjectType",
"cl_mem_info": "MemInfo",
"cl_image_info": "ImageInfo",
"cl_pipe_info": "PipeInfo",
"cl_addressing_mode": "AddressingMode",
"cl_filter_mode": "FilterMode",
"cl_sampler_info": "SamplerInfo",
"cl_program_info": "ProgramInfo",
"cl_program_build_info": "ProgramBuildInfo",
"cl_kernel_info": "KernelInfo",
"cl_kernel_arg_info": "KernelArgInfo",
"cl_kernel_work_group_info": "KernelWorkGroupInfo",
"cl_kernel_sub_group_info": "KernelSubGroupInfo",
"cl_kernel_exec_info": "KernelExecInfo",
"cl_event_info": "EventInfo",
"cl_profiling_info": "ProfilingInfo",
}
EGL_PACKED_TYPES = {
"EGLContext": "gl::Context *",
......@@ -1831,7 +1861,8 @@ class CLEntryPoints(ANGLEEntryPoints):
commands,
CLEntryPoints.all_param_types,
CLEntryPoints.get_packed_enums(),
export_template=TEMPLATE_CL_ENTRY_POINT_EXPORT)
export_template=TEMPLATE_CL_ENTRY_POINT_EXPORT,
packed_param_types=CL_PACKED_TYPES)
@classmethod
def get_packed_enums(cls):
......
......@@ -14,7 +14,6 @@
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <angle_gl.h>
#include <cstdint>
#include <ostream>
......
......@@ -12,8 +12,6 @@
#ifndef COMMON_PACKEDGLENUMS_AUTOGEN_H_
#define COMMON_PACKEDGLENUMS_AUTOGEN_H_
#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <angle_gl.h>
#include <cstdint>
......
......@@ -18,15 +18,24 @@ Generators = [
{
'json': 'packed_gl_enums.json',
'output': 'PackedGLEnums',
'includes': '#include <angle_gl.h>',
'namespace': 'gl',
'enum_type': 'GLenum',
},
{
'json': 'packed_egl_enums.json',
'output': 'PackedEGLEnums',
'includes': '#include <EGL/egl.h>\n#include <EGL/eglext.h>',
'namespace': 'egl',
'enum_type': 'EGLenum',
},
{
'json': 'packed_cl_enums.json',
'output': 'PackedCLEnums',
'includes': '#include <angle_cl.h>\ntypedef cl_uint CLenum;',
'namespace': 'cl',
'enum_type': 'CLenum',
},
]
......@@ -73,9 +82,7 @@ header_template = """// GENERATED FILE - DO NOT EDIT.
#ifndef COMMON_{include_guard}_
#define COMMON_{include_guard}_
#include <angle_gl.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
{includes}
#include <cstdint>
#include <ostream>
......@@ -107,7 +114,8 @@ std::ostream &operator<<(std::ostream &os, {enum_name} value);
"""
def write_header(enums, path_prefix, file_name, data_source_name, namespace, api_enum_name):
def write_header(enums, path_prefix, file_name, data_source_name, includes, namespace,
api_enum_name):
content = ['']
for enum in enums:
......@@ -128,6 +136,7 @@ def write_header(enums, path_prefix, file_name, data_source_name, namespace, api
script_name=sys.argv[0],
file_name=file_name,
include_guard=generate_include_guard(file_name),
includes=includes,
namespace=namespace,
api_enum_name=api_enum_name)
......@@ -257,11 +266,12 @@ def main():
for generator in Generators:
json_file = generator['json']
output_file = generator['output']
includes = generator['includes']
namespace = generator['namespace']
enum_type = generator['enum_type']
enums = load_enums(path_prefix + json_file)
write_header(enums, path_prefix, output_file + '_autogen.h', json_file, namespace,
enum_type)
write_header(enums, path_prefix, output_file + '_autogen.h', json_file, includes,
namespace, enum_type)
write_cpp(enums, path_prefix, output_file + '_autogen.cpp', json_file, namespace,
enum_type)
return 0
......
......@@ -11,6 +11,8 @@ libangle_common_sources = [
"src/common/MemoryBuffer.cpp",
"src/common/MemoryBuffer.h",
"src/common/Optional.h",
"src/common/PackedCLEnums_autogen.cpp",
"src/common/PackedCLEnums_autogen.h",
"src/common/PackedEGLEnums_autogen.cpp",
"src/common/PackedEGLEnums_autogen.h",
"src/common/PackedEnums.cpp",
......@@ -542,6 +544,7 @@ libglesv2_sources = [
"src/libGLESv2/proc_table_egl.h",
"src/libGLESv2/proc_table_egl_autogen.cpp",
"src/libGLESv2/resource.h",
"src/libGLESv2/validationCL.h",
]
if (is_win) {
......
......@@ -16,7 +16,7 @@ cl_int GetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms, cl_uint *n
}
cl_int GetPlatformInfo(cl_platform_id platform,
cl_platform_info param_name,
PlatformInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -34,7 +34,7 @@ cl_int GetDeviceIDs(cl_platform_id platform,
}
cl_int GetDeviceInfo(cl_device_id device,
cl_device_info param_name,
DeviceInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -116,7 +116,7 @@ cl_int ReleaseContext(cl_context context)
}
cl_int GetContextInfo(cl_context context,
cl_context_info param_name,
ContextInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -151,7 +151,7 @@ cl_int ReleaseCommandQueue(cl_command_queue command_queue)
}
cl_int GetCommandQueueInfo(cl_command_queue command_queue,
cl_command_queue_info param_name,
CommandQueueInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -230,7 +230,7 @@ cl_int ReleaseMemObject(cl_mem memobj)
cl_int GetSupportedImageFormats(cl_context context,
cl_mem_flags flags,
cl_mem_object_type image_type,
MemObjectType image_type,
cl_uint num_entries,
cl_image_format *image_formats,
cl_uint *num_image_formats)
......@@ -239,7 +239,7 @@ cl_int GetSupportedImageFormats(cl_context context,
}
cl_int GetMemObjectInfo(cl_mem memobj,
cl_mem_info param_name,
MemInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -248,7 +248,7 @@ cl_int GetMemObjectInfo(cl_mem memobj,
}
cl_int GetImageInfo(cl_mem image,
cl_image_info param_name,
ImageInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -257,7 +257,7 @@ cl_int GetImageInfo(cl_mem image,
}
cl_int GetPipeInfo(cl_mem pipe,
cl_pipe_info param_name,
PipeInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -297,7 +297,7 @@ cl_int ReleaseSampler(cl_sampler sampler)
}
cl_int GetSamplerInfo(cl_sampler sampler,
cl_sampler_info param_name,
SamplerInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -409,7 +409,7 @@ cl_int UnloadPlatformCompiler(cl_platform_id platform)
}
cl_int GetProgramInfo(cl_program program,
cl_program_info param_name,
ProgramInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -419,7 +419,7 @@ cl_int GetProgramInfo(cl_program program,
cl_int GetProgramBuildInfo(cl_program program,
cl_device_id device,
cl_program_build_info param_name,
ProgramBuildInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -466,7 +466,7 @@ cl_int SetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, const void *a
}
cl_int SetKernelExecInfo(cl_kernel kernel,
cl_kernel_exec_info param_name,
KernelExecInfo param_name,
size_t param_value_size,
const void *param_value)
{
......@@ -474,7 +474,7 @@ cl_int SetKernelExecInfo(cl_kernel kernel,
}
cl_int GetKernelInfo(cl_kernel kernel,
cl_kernel_info param_name,
KernelInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -484,7 +484,7 @@ cl_int GetKernelInfo(cl_kernel kernel,
cl_int GetKernelArgInfo(cl_kernel kernel,
cl_uint arg_index,
cl_kernel_arg_info param_name,
KernelArgInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -494,7 +494,7 @@ cl_int GetKernelArgInfo(cl_kernel kernel,
cl_int GetKernelWorkGroupInfo(cl_kernel kernel,
cl_device_id device,
cl_kernel_work_group_info param_name,
KernelWorkGroupInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -504,7 +504,7 @@ cl_int GetKernelWorkGroupInfo(cl_kernel kernel,
cl_int GetKernelSubGroupInfo(cl_kernel kernel,
cl_device_id device,
cl_kernel_sub_group_info param_name,
KernelSubGroupInfo param_name,
size_t input_value_size,
const void *input_value,
size_t param_value_size,
......@@ -520,7 +520,7 @@ cl_int WaitForEvents(cl_uint num_events, const cl_event *event_list)
}
cl_int GetEventInfo(cl_event event,
cl_event_info param_name,
EventInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -559,7 +559,7 @@ cl_int SetEventCallback(cl_event event,
}
cl_int GetEventProfilingInfo(cl_event event,
cl_profiling_info param_name,
ProfilingInfo param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
......@@ -1005,8 +1005,8 @@ cl_command_queue CreateCommandQueue(cl_context context,
cl_sampler CreateSampler(cl_context context,
cl_bool normalized_coords,
cl_addressing_mode addressing_mode,
cl_filter_mode filter_mode,
AddressingMode addressing_mode,
FilterMode filter_mode,
cl_int *errcode_ret)
{
return 0;
......
......@@ -12,11 +12,13 @@
#include "angle_cl.h"
#include "common/PackedCLEnums_autogen.h"
namespace cl
{
cl_int GetPlatformIDs(cl_uint num_entries, cl_platform_id *platforms, cl_uint *num_platforms);
cl_int GetPlatformInfo(cl_platform_id platform,
cl_platform_info param_name,
PlatformInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -26,7 +28,7 @@ cl_int GetDeviceIDs(cl_platform_id platform,
cl_device_id *devices,
cl_uint *num_devices);
cl_int GetDeviceInfo(cl_device_id device,
cl_device_info param_name,
DeviceInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -64,7 +66,7 @@ cl_context CreateContextFromType(const cl_context_properties *properties,
cl_int RetainContext(cl_context context);
cl_int ReleaseContext(cl_context context);
cl_int GetContextInfo(cl_context context,
cl_context_info param_name,
ContextInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -79,7 +81,7 @@ cl_command_queue CreateCommandQueueWithProperties(cl_context context,
cl_int RetainCommandQueue(cl_command_queue command_queue);
cl_int ReleaseCommandQueue(cl_command_queue command_queue);
cl_int GetCommandQueueInfo(cl_command_queue command_queue,
cl_command_queue_info param_name,
CommandQueueInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -122,22 +124,22 @@ cl_int RetainMemObject(cl_mem memobj);
cl_int ReleaseMemObject(cl_mem memobj);
cl_int GetSupportedImageFormats(cl_context context,
cl_mem_flags flags,
cl_mem_object_type image_type,
MemObjectType image_typePacked,
cl_uint num_entries,
cl_image_format *image_formats,
cl_uint *num_image_formats);
cl_int GetMemObjectInfo(cl_mem memobj,
cl_mem_info param_name,
MemInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
cl_int GetImageInfo(cl_mem image,
cl_image_info param_name,
ImageInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
cl_int GetPipeInfo(cl_mem pipe,
cl_pipe_info param_name,
PipeInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -152,7 +154,7 @@ cl_sampler CreateSamplerWithProperties(cl_context context,
cl_int RetainSampler(cl_sampler sampler);
cl_int ReleaseSampler(cl_sampler sampler);
cl_int GetSamplerInfo(cl_sampler sampler,
cl_sampler_info param_name,
SamplerInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -212,13 +214,13 @@ cl_int SetProgramSpecializationConstant(cl_program program,
const void *spec_value);
cl_int UnloadPlatformCompiler(cl_platform_id platform);
cl_int GetProgramInfo(cl_program program,
cl_program_info param_name,
ProgramInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
cl_int GetProgramBuildInfo(cl_program program,
cl_device_id device,
cl_program_build_info param_name,
ProgramBuildInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -233,29 +235,29 @@ cl_int ReleaseKernel(cl_kernel kernel);
cl_int SetKernelArg(cl_kernel kernel, cl_uint arg_index, size_t arg_size, const void *arg_value);
cl_int SetKernelArgSVMPointer(cl_kernel kernel, cl_uint arg_index, const void *arg_value);
cl_int SetKernelExecInfo(cl_kernel kernel,
cl_kernel_exec_info param_name,
KernelExecInfo param_namePacked,
size_t param_value_size,
const void *param_value);
cl_int GetKernelInfo(cl_kernel kernel,
cl_kernel_info param_name,
KernelInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
cl_int GetKernelArgInfo(cl_kernel kernel,
cl_uint arg_index,
cl_kernel_arg_info param_name,
KernelArgInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
cl_int GetKernelWorkGroupInfo(cl_kernel kernel,
cl_device_id device,
cl_kernel_work_group_info param_name,
KernelWorkGroupInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
cl_int GetKernelSubGroupInfo(cl_kernel kernel,
cl_device_id device,
cl_kernel_sub_group_info param_name,
KernelSubGroupInfo param_namePacked,
size_t input_value_size,
const void *input_value,
size_t param_value_size,
......@@ -263,7 +265,7 @@ cl_int GetKernelSubGroupInfo(cl_kernel kernel,
size_t *param_value_size_ret);
cl_int WaitForEvents(cl_uint num_events, const cl_event *event_list);
cl_int GetEventInfo(cl_event event,
cl_event_info param_name,
EventInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -278,7 +280,7 @@ cl_int SetEventCallback(cl_event event,
void *user_data),
void *user_data);
cl_int GetEventProfilingInfo(cl_event event,
cl_profiling_info param_name,
ProfilingInfo param_namePacked,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret);
......@@ -564,8 +566,8 @@ cl_command_queue CreateCommandQueue(cl_context context,
cl_int *errcode_ret);
cl_sampler CreateSampler(cl_context context,
cl_bool normalized_coords,
cl_addressing_mode addressing_mode,
cl_filter_mode filter_mode,
AddressingMode addressing_modePacked,
FilterMode filter_modePacked,
cl_int *errcode_ret);
cl_int EnqueueTask(cl_command_queue command_queue,
cl_kernel kernel,
......
//
// Copyright 2021 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// validationCL.h: Validation functions for generic CL entry point parameters
#ifndef LIBGLESV2_VALIDATIONCL_H_
#define LIBGLESV2_VALIDATIONCL_H_
#include "common/PackedCLEnums_autogen.h"
#include <type_traits>
namespace cl
{
// First case: handling packed enums.
template <typename PackedT, typename FromT>
typename std::enable_if<std::is_enum<PackedT>::value, PackedT>::type PackParam(FromT from)
{
return FromCLenum<PackedT>(from);
}
template <typename PackedT, typename FromT>
inline typename std::enable_if<!std::is_enum<PackedT>::value,
typename std::remove_reference<PackedT>::type>::type
PackParam(FromT from)
{
return static_cast<PackedT>(from);
}
} // namespace cl
#endif // LIBGLESV2_VALIDATIONCL_H_
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