From 14b753f666eed3933ba155fb493e6142c33cb96e Mon Sep 17 00:00:00 2001 From: Chad Versace Date: Wed, 20 Jan 2016 15:53:54 -0800 Subject: [PATCH] isl: Add func isl_device_get_sample_counts() --- src/isl/isl.c | 32 ++++++++++++++++++++++++++++++++ src/isl/isl.h | 15 +++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/src/isl/isl.c b/src/isl/isl.c index 40663ca..acc80ea 100644 --- a/src/isl/isl.c +++ b/src/isl/isl.c @@ -68,6 +68,38 @@ isl_device_init(struct isl_device *dev, } /** + * @brief Query the set of multisamples supported by the device. + * + * This function always returns non-zero, as ISL_SAMPLE_COUNT_1_BIT is always + * supported. + */ +isl_sample_count_mask_t ATTRIBUTE_CONST +isl_device_get_sample_counts(struct isl_device *dev) +{ + if (ISL_DEV_GEN(dev) >= 9) { + return ISL_SAMPLE_COUNT_1_BIT | + ISL_SAMPLE_COUNT_2_BIT | + ISL_SAMPLE_COUNT_4_BIT | + ISL_SAMPLE_COUNT_8_BIT | + ISL_SAMPLE_COUNT_16_BIT; + } else if (ISL_DEV_GEN(dev) >= 8) { + return ISL_SAMPLE_COUNT_1_BIT | + ISL_SAMPLE_COUNT_2_BIT | + ISL_SAMPLE_COUNT_4_BIT | + ISL_SAMPLE_COUNT_8_BIT; + } else if (ISL_DEV_GEN(dev) >= 7) { + return ISL_SAMPLE_COUNT_1_BIT | + ISL_SAMPLE_COUNT_4_BIT | + ISL_SAMPLE_COUNT_8_BIT; + } else if (ISL_DEV_GEN(dev) >= 6) { + return ISL_SAMPLE_COUNT_1_BIT | + ISL_SAMPLE_COUNT_4_BIT; + } else { + return ISL_SAMPLE_COUNT_1_BIT; + } +} + +/** * @param[out] info is written only on success */ bool diff --git a/src/isl/isl.h b/src/isl/isl.h index 9b99e00..85e43b8 100644 --- a/src/isl/isl.h +++ b/src/isl/isl.h @@ -458,6 +458,18 @@ typedef uint64_t isl_surf_usage_flags_t; /** @} */ /** + * Identical to VkSampleCountFlagBits. + */ +enum isl_sample_count { + ISL_SAMPLE_COUNT_1_BIT = 1u, + ISL_SAMPLE_COUNT_2_BIT = 2u, + ISL_SAMPLE_COUNT_4_BIT = 4u, + ISL_SAMPLE_COUNT_8_BIT = 8u, + ISL_SAMPLE_COUNT_16_BIT = 16u, +}; +typedef uint32_t isl_sample_count_mask_t; + +/** * @brief Multisample Format */ enum isl_msaa_layout { @@ -690,6 +702,9 @@ isl_device_init(struct isl_device *dev, const struct brw_device_info *info, bool has_bit6_swizzling); +isl_sample_count_mask_t ATTRIBUTE_CONST +isl_device_get_sample_counts(struct isl_device *dev); + static inline const struct isl_format_layout * ATTRIBUTE_CONST isl_format_get_layout(enum isl_format fmt) { -- 2.7.4