| // |
| // Copyright 2019 The ANGLE Project Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| // MappedSubresourceVerifier11.h: Defines the rx::MappedSubresourceVerifier11 |
| // class, a simple wrapper to D3D11 Texture2D mapped memory so that ASAN |
| // MSAN can catch memory errors done with a pointer to the mapped texture |
| // memory. |
| |
| #ifndef LIBANGLE_RENDERER_D3D_D3D11_MAPPED_SUBRESOURCE_VERIFIER11_H_ |
| #define LIBANGLE_RENDERER_D3D_D3D11_MAPPED_SUBRESOURCE_VERIFIER11_H_ |
| |
| #include "common/MemoryBuffer.h" |
| #include "common/angleutils.h" |
| |
| namespace rx |
| { |
| |
| class MappedSubresourceVerifier11 final : angle::NonCopyable |
| { |
| public: |
| MappedSubresourceVerifier11(); |
| ~MappedSubresourceVerifier11(); |
| |
| void setDesc(const D3D11_TEXTURE2D_DESC &desc); |
| void setDesc(const D3D11_TEXTURE3D_DESC &desc); |
| void reset(); |
| |
| bool wrap(D3D11_MAP mapType, D3D11_MAPPED_SUBRESOURCE *map); |
| void unwrap(); |
| |
| private: |
| #if defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || defined(ANGLE_ENABLE_ASSERTS) |
| UINT D3D11_MAPPED_SUBRESOURCE::*mPitchType = nullptr; |
| size_t mPitchCount = 0; |
| angle::MemoryBuffer mWrapData; |
| uint8_t *mOrigData = nullptr; |
| #endif |
| }; |
| |
| #if !(defined(ADDRESS_SANITIZER) || defined(MEMORY_SANITIZER) || defined(ANGLE_ENABLE_ASSERTS)) |
| |
| inline MappedSubresourceVerifier11::MappedSubresourceVerifier11() = default; |
| inline MappedSubresourceVerifier11::~MappedSubresourceVerifier11() = default; |
| |
| inline void MappedSubresourceVerifier11::setDesc(const D3D11_TEXTURE2D_DESC &desc) {} |
| inline void MappedSubresourceVerifier11::setDesc(const D3D11_TEXTURE3D_DESC &desc) {} |
| inline void MappedSubresourceVerifier11::reset() {} |
| |
| inline bool MappedSubresourceVerifier11::wrap(D3D11_MAP mapType, D3D11_MAPPED_SUBRESOURCE *map) |
| { |
| return true; |
| } |
| |
| inline void MappedSubresourceVerifier11::unwrap() {} |
| |
| #endif |
| |
| } // namespace rx |
| |
| #endif // LIBANGLE_RENDERER_D3D_D3D11_MAPPED_SUBRESOURCE_VERIFIER11_H_ |