Wire up texture usage.

This commit is contained in:
Chinmay Garde 2021-07-15 12:31:31 -07:00 committed by Dan Field
parent 15c9aaeb13
commit 1b830f9c82
5 changed files with 26 additions and 2 deletions

View File

@ -73,7 +73,7 @@ impeller_component("compositor") {
"../shader_glue",
]
libs = [ "Metal.framework" ]
frameworks = [ "Metal.framework" ]
}
source_set("compositor_unittests") {

View File

@ -59,6 +59,15 @@ enum class StoreAction {
kStore,
};
using TextureUsageMask = uint64_t;
enum class TextureUsage : TextureUsageMask {
kUnknown,
kShaderRead,
kShaderWrite,
kRenderTarget,
};
enum class PrimitiveType {
kTriangle,
kTriangleStrip,

View File

@ -83,6 +83,19 @@ MTLTextureDescriptor* ToMTLTextureDescriptor(const TextureDescriptor& desc) {
mtl_desc.width = desc.size.width;
mtl_desc.height = desc.size.height;
mtl_desc.mipmapLevelCount = desc.mip_count;
mtl_desc.usage = MTLTextureUsageUnknown;
if (desc.usage & static_cast<TextureUsageMask>(TextureUsage::kUnknown)) {
mtl_desc.usage |= MTLTextureUsageUnknown;
}
if (desc.usage & static_cast<TextureUsageMask>(TextureUsage::kShaderRead)) {
mtl_desc.usage |= MTLTextureUsageShaderRead;
}
if (desc.usage & static_cast<TextureUsageMask>(TextureUsage::kShaderWrite)) {
mtl_desc.usage |= MTLTextureUsageShaderWrite;
}
if (desc.usage & static_cast<TextureUsageMask>(TextureUsage::kRenderTarget)) {
mtl_desc.usage |= MTLTextureUsageRenderTarget;
}
return mtl_desc;
}

View File

@ -16,6 +16,8 @@ struct TextureDescriptor {
PixelFormat format = PixelFormat::kUnknown;
ISize size;
size_t mip_count = 1u; // Size::MipCount is usually appropriate.
TextureUsageMask usage =
static_cast<TextureUsageMask>(TextureUsage::kShaderRead);
constexpr size_t GetSizeOfBaseMipLevel() const {
if (!IsValid()) {

View File

@ -20,7 +20,7 @@ impeller_component("playground") {
]
if (is_mac) {
libs = [
frameworks = [
"AppKit.framework",
"QuartzCore.framework",
]