blob: 3a422d58a506fc69b4367c22393a8e121bd196bc [file] [log] [blame]
// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef LIB_ESCHER_IMPL_MODEL_DISPLAY_LIST_FLAGS_H_
#define LIB_ESCHER_IMPL_MODEL_DISPLAY_LIST_FLAGS_H_
#include <vulkan/vulkan.hpp>
#include "lib/escher/util/debug_print.h"
namespace escher {
namespace impl {
// Flags used to configure construction of a ModelDisplayList.
enum class ModelDisplayListFlag {
kNull = 0,
kSortByPipeline = 1 << 0,
kDisableDepthTest = 1 << 1,
kShareDescriptorSetsBetweenObjects = 1 << 2
};
using ModelDisplayListFlags = vk::Flags<ModelDisplayListFlag>;
inline ModelDisplayListFlags operator|(ModelDisplayListFlag bit0,
ModelDisplayListFlag bit1) {
return ModelDisplayListFlags(bit0) | bit1;
}
inline ModelDisplayListFlags operator~(ModelDisplayListFlag bit) {
return ~ModelDisplayListFlags(bit);
}
} // namespace impl
// Debugging.
ESCHER_DEBUG_PRINTABLE(impl::ModelDisplayListFlag);
ESCHER_DEBUG_PRINTABLE(impl::ModelDisplayListFlags);
} // namespace escher
namespace vk {
template <>
struct FlagTraits<escher::impl::ModelDisplayListFlag> {
enum {
allFlags = VkFlags(escher::impl::ModelDisplayListFlag::kSortByPipeline) |
VkFlags(escher::impl::ModelDisplayListFlag::kDisableDepthTest) |
VkFlags(escher::impl::ModelDisplayListFlag::
kShareDescriptorSetsBetweenObjects)
};
};
} // namespace vk
#endif // LIB_ESCHER_IMPL_MODEL_DISPLAY_LIST_FLAGS_H_