This patch does a couple of things to make CL integration with drivers as seamless as possible: - We pull in opencl-c.h and opencl-c-base.h to stop relying on system headers. - Parts of libcl.h are moved to new headers that are incomplete CL-safe variants of libc headers. - A couple of util headers are changed to remove now unnecessary __OPENCL_VERSION__ guards and make more headers CL safe. - Drivers now include src/compiler/libcl and use headers like macros.h,u_math.h instead of libcl.h. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33576>
35 lines
612 B
C
35 lines
612 B
C
/*
|
|
* Copyright 2024 Valve Corporation
|
|
* Copyright 2023 Alyssa Rosenzweig
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#ifndef __OPENCL_VERSION__
|
|
#error "should only be included from OpenCL"
|
|
#endif
|
|
|
|
#define CL_FLT_EPSILON 1.1920928955078125e-7f
|
|
|
|
/* OpenCL C lacks roundf and llroundf, we can emulate it */
|
|
static inline float roundf(float x)
|
|
{
|
|
return trunc(x + copysign(0.5f - 0.25f * CL_FLT_EPSILON, x));
|
|
}
|
|
|
|
static inline long long llroundf(float x)
|
|
{
|
|
return roundf(x);
|
|
}
|
|
|
|
static inline long lrintf(float x)
|
|
{
|
|
return (long)roundf(x);
|
|
}
|
|
|
|
static inline float fabsf(float x)
|
|
{
|
|
return fabs(x);
|
|
}
|