diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/lldynamictexture.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llgltfmaterialpreviewmgr.cpp | 20 | ||||
| -rw-r--r-- | indra/newview/llgltfmaterialpreviewmgr.h | 8 | 
3 files changed, 23 insertions, 7 deletions
| diff --git a/indra/newview/lldynamictexture.cpp b/indra/newview/lldynamictexture.cpp index a66c3876fc..f8a6195bdd 100644 --- a/indra/newview/lldynamictexture.cpp +++ b/indra/newview/lldynamictexture.cpp @@ -118,6 +118,8 @@ BOOL LLViewerDynamicTexture::render()  //-----------------------------------------------------------------------------  void LLViewerDynamicTexture::preRender(BOOL clear_depth)  { +    LL_PROFILE_ZONE_SCOPED_CATEGORY_UI; +       //use the bottom left corner  	mOrigin.set(0, 0); diff --git a/indra/newview/llgltfmaterialpreviewmgr.cpp b/indra/newview/llgltfmaterialpreviewmgr.cpp index 901db87eed..36bd552c31 100644 --- a/indra/newview/llgltfmaterialpreviewmgr.cpp +++ b/indra/newview/llgltfmaterialpreviewmgr.cpp @@ -58,6 +58,15 @@ LLGLTFPreviewTexture::MaterialLoadLevels::MaterialLoadLevels()      }  } +bool LLGLTFPreviewTexture::MaterialLoadLevels::isFullyLoaded() +{ +    for (U32 i = 0; i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT; ++i) +    { +        if (levels[i] != FULLY_LOADED) { return false; } +    } +    return true; +} +  S32& LLGLTFPreviewTexture::MaterialLoadLevels::operator[](size_t i)  {      llassert(i >= 0 && i < LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT); @@ -187,17 +196,26 @@ LLPointer<LLGLTFPreviewTexture> LLGLTFPreviewTexture::create(LLPointer<LLFetched      return new LLGLTFPreviewTexture(material, LLPipeline::MAX_BAKE_WIDTH);  } -void LLGLTFPreviewTexture::preRender(BOOL clear_depth) +BOOL LLGLTFPreviewTexture::needsRender()  {      LL_PROFILE_ZONE_SCOPED_CATEGORY_UI; +    if (!mShouldRender && mBestLoad.isFullyLoaded()) { return false; }      MaterialLoadLevels current_load = get_material_load_levels(*mGLTFMaterial.get());      if (current_load < mBestLoad)      {          mShouldRender = true;          mBestLoad = current_load; +        return true;      } +    return false; +} + +void LLGLTFPreviewTexture::preRender(BOOL clear_depth) +{ +    LL_PROFILE_ZONE_SCOPED_CATEGORY_UI; +    llassert(mShouldRender);      if (!mShouldRender) { return; }      LLViewerDynamicTexture::preRender(clear_depth); diff --git a/indra/newview/llgltfmaterialpreviewmgr.h b/indra/newview/llgltfmaterialpreviewmgr.h index cc40a6f2e2..981c8b0592 100644 --- a/indra/newview/llgltfmaterialpreviewmgr.h +++ b/indra/newview/llgltfmaterialpreviewmgr.h @@ -40,7 +40,7 @@ public:      // Width scales with size of material's textures      static LLPointer<LLGLTFPreviewTexture> create(LLPointer<LLFetchedGLTFMaterial> material); -    BOOL needsRender() override { return mNeedsRender; } +    BOOL needsRender() override;      void preRender(BOOL clear_depth = TRUE) override;      BOOL render() override;      void postRender(BOOL success) override; @@ -50,15 +50,12 @@ public:          S32 levels[LLGLTFMaterial::GLTF_TEXTURE_INFO_COUNT];          MaterialLoadLevels(); - +        bool isFullyLoaded();          S32& operator[](size_t i); -          const S32& operator[](size_t i) const; -          // Less is better          // Returns false if lhs is not strictly less or equal for all levels          bool operator<(const MaterialLoadLevels& other) const; -          // Less is better          // Returns false if lhs is not strictly greater or equal for all levels          bool operator>(const MaterialLoadLevels& other) const; @@ -66,7 +63,6 @@ public:  private:      LLPointer<LLFetchedGLTFMaterial> mGLTFMaterial; -    bool mNeedsRender = true;      bool mShouldRender = true;      MaterialLoadLevels mBestLoad;  }; | 
