mirror of
https://github.com/elwrcl/intel-hard-graphics.git
synced 2026-11-01 03:18:02 +03:00
45 lines
1.3 KiB
C
45 lines
1.3 KiB
C
/*
|
|
* Copyright (C) 2019-2020 Collabora, Ltd.
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#ifndef __BI_QUIRKS_H
|
|
#define __BI_QUIRKS_H
|
|
|
|
#include "panfrost/model/pan_model.h"
|
|
|
|
/* Model-specific quirks requiring compiler workarounds/etc. Quirks
|
|
* may be errata requiring a workaround, or features. We're trying to be
|
|
* quirk-positive here; quirky is the best! */
|
|
|
|
/* Whether this GPU lacks support for fp32 transcendentals, requiring backend
|
|
* lowering to low-precision lookup tables and polynomial approximation */
|
|
|
|
#define BIFROST_NO_FP32_TRANSCENDENTALS (1 << 0)
|
|
|
|
/* Whether this GPU lacks support for the full form of the CLPER instruction.
|
|
* These GPUs use a simple encoding of CLPER that does not support
|
|
* inactive_result, subgroup_size, or lane_op. Using those features requires
|
|
* lowering to additional ALU instructions. The encoding forces inactive_result
|
|
* = zero, subgroup_size = subgroup4, and lane_op = none. */
|
|
|
|
#define BIFROST_LIMITED_CLPER (1 << 1)
|
|
|
|
static inline unsigned
|
|
bifrost_get_quirks(uint64_t gpu_id)
|
|
{
|
|
unsigned arch_maj_min =
|
|
(PAN_ARCH_MAJOR(gpu_id) << 4) | PAN_ARCH_MINOR(gpu_id);
|
|
switch (arch_maj_min) {
|
|
case 0x60: /* G71 */
|
|
return BIFROST_NO_FP32_TRANSCENDENTALS | BIFROST_LIMITED_CLPER;
|
|
case 0x62: /* G72 */
|
|
case 0x70: /* G31 */
|
|
return BIFROST_LIMITED_CLPER;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
#endif
|