From bcd4b65f7d72ac388d2f50ca6ebf2a072b1f8397 Mon Sep 17 00:00:00 2001 From: Mathias Agopian Date: Fri, 23 Apr 2021 15:08:24 -0700 Subject: [PATCH] fix a memory corruption introduced recently fixes #3844 --- filament/include/filament/RenderTarget.h | 2 -- filament/src/RenderTarget.cpp | 4 ++-- filament/src/details/RenderTarget.h | 3 ++- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/filament/include/filament/RenderTarget.h b/filament/include/filament/RenderTarget.h index dd4c4f688f..fd2d207b9d 100644 --- a/filament/include/filament/RenderTarget.h +++ b/filament/include/filament/RenderTarget.h @@ -59,8 +59,6 @@ public: COLOR = COLOR0, //!< identifies the 1st color attachment }; - static constexpr size_t ATTACHMENT_COUNT = backend::MRT::MAX_SUPPORTED_RENDER_TARGET_COUNT + 1; - //! Use Builder to construct a RenderTarget object instance class Builder : public BuilderBase { friend struct BuilderDetails; diff --git a/filament/src/RenderTarget.cpp b/filament/src/RenderTarget.cpp index de4dc4513f..2abc74f710 100644 --- a/filament/src/RenderTarget.cpp +++ b/filament/src/RenderTarget.cpp @@ -28,7 +28,7 @@ namespace filament { using namespace backend; struct RenderTarget::BuilderDetails { - FRenderTarget::Attachment mAttachments[RenderTarget::ATTACHMENT_COUNT] = {}; + FRenderTarget::Attachment mAttachments[FRenderTarget::ATTACHMENT_COUNT] = {}; uint32_t mWidth{}; uint32_t mHeight{}; uint8_t mSamples = 1; // currently not settable in the public facing API @@ -127,7 +127,7 @@ FRenderTarget::FRenderTarget(FEngine& engine, const RenderTarget::Builder& build } }; - for (size_t i = 0; i < ATTACHMENT_COUNT; i++) { + for (size_t i = 0; i < MRT::MAX_SUPPORTED_RENDER_TARGET_COUNT; i++) { if (mAttachments[i].texture) { mAttachmentMask |= getMRTColorFlag(i); setAttachment(mrt[i], (AttachmentPoint)i); diff --git a/filament/src/details/RenderTarget.h b/filament/src/details/RenderTarget.h index 6b07bf69e7..2992c950c6 100644 --- a/filament/src/details/RenderTarget.h +++ b/filament/src/details/RenderTarget.h @@ -57,7 +57,8 @@ public: private: friend class RenderTarget; - Attachment mAttachments[RenderTarget::ATTACHMENT_COUNT]; + static constexpr size_t ATTACHMENT_COUNT = backend::MRT::MAX_SUPPORTED_RENDER_TARGET_COUNT + 1; + Attachment mAttachments[ATTACHMENT_COUNT]; HwHandle mHandle{}; backend::TargetBufferFlags mAttachmentMask = {}; };