diff options
| author | Dave Parks <davep@lindenlab.com> | 2023-03-30 10:42:04 -0500 | 
|---|---|---|
| committer | Dave Parks <davep@lindenlab.com> | 2023-03-30 10:42:04 -0500 | 
| commit | 9a03c819d430ca8b45f661204f6d666e609e9b51 (patch) | |
| tree | 2ee3fc1dde37928e69c9819ee42d21e74e324dc4 /indra/newview | |
| parent | 6162b9208a087f78eba609d3fe9da5c8385f7ade (diff) | |
| parent | 9e6d442ab5fb50e68e14b47ca3eefd08a7a6b1ef (diff) | |
Merge branch 'DRTVWR-559' of github.com:secondlife/viewer into DRTVWR-559
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 22 | 
1 files changed, 13 insertions, 9 deletions
| diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 8570c0cd5d..d7426b7092 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -79,6 +79,8 @@  #include <boost/bind.hpp>	// for SkinFolder listener  #include <boost/signals2.hpp> +// *TODO: Consider enabling mipmaps (they have been disabled for a long time). Likely has a significant performance impact for tiled/high texture repeat media. Mip generation in a shader may also be an option if necessary. +constexpr BOOL USE_MIPMAPS = FALSE;  void init_threaded_picker_load_dialog(LLPluginClassMedia* plugin, LLFilePicker::ELoadFilter filter, bool get_multiple)  { @@ -1564,7 +1566,8 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,  	// connect this media_impl to the media texture, creating it if it doesn't exist.0  	// This is necessary because we need to be able to use getMaxVirtualSize() even if the media plugin is not loaded. -	LLViewerMediaTexture* media_tex = LLViewerTextureManager::getMediaTexture(mTextureId); +    // *TODO: Consider enabling mipmaps (they have been disabled for a long time). Likely has a significant performance impact for tiled/high texture repeat media. Mip generation in a shader may also be an option if necessary. +	LLViewerMediaTexture* media_tex = LLViewerTextureManager::getMediaTexture(mTextureId, USE_MIPMAPS);  	if(media_tex)  	{  		media_tex->setMediaImpl(); @@ -2961,12 +2964,15 @@ void LLViewerMediaImpl::doMediaTexUpdate(LLViewerMediaTexture* media_tex, U8* da      LL_PROFILE_ZONE_SCOPED_CATEGORY_MEDIA;      mLock.lock();   // don't allow media source tear-down during update +    const LLGLuint tex_name = media_tex->getGLTexture() ? media_tex->getGLTexture()->getTexName() : (LLGLuint)0; +    if (!tex_name) +    { +        llassert(false); +        return; +    } +      // wrap "data" in an LLImageRaw but do NOT make a copy      LLPointer<LLImageRaw> raw = new LLImageRaw(data, media_tex->getWidth(), media_tex->getHeight(), media_tex->getComponents(), true); -         -    // Allocate GL texture based on LLImageRaw but do NOT copy to GL -    LLGLuint tex_name = 0; -    media_tex->createGLTexture(0, raw, 0, TRUE, LLGLTexture::OTHER, true, &tex_name);      // copy just the subimage covered by the image raw to GL      media_tex->setSubImage(data, data_width, data_height, x_pos, y_pos, width, height, tex_name); @@ -3002,10 +3008,10 @@ LLViewerMediaTexture* LLViewerMediaImpl::updateMediaImage()      }      llassert(!mTextureId.isNull()); -    LLViewerMediaTexture* media_tex = LLViewerTextureManager::getMediaTexture( mTextureId ); +    // *TODO: Consider enabling mipmaps (they have been disabled for a long time). Likely has a significant performance impact for tiled/high texture repeat media. Mip generation in a shader may also be an option if necessary. +    LLViewerMediaTexture* media_tex = LLViewerTextureManager::getMediaTexture( mTextureId, USE_MIPMAPS );      if ( mNeedsNewTexture -        || media_tex->getUseMipMaps()          || (media_tex->getWidth() != mMediaSource->getTextureWidth())          || (media_tex->getHeight() != mMediaSource->getTextureHeight())          || (mTextureUsedWidth != mMediaSource->getWidth()) @@ -3021,8 +3027,6 @@ LLViewerMediaTexture* LLViewerMediaImpl::updateMediaImage()          // MEDIAOPT: check to see if size actually changed before doing work          media_tex->destroyGLTexture(); -        // MEDIAOPT: apparently just calling setUseMipMaps(FALSE) doesn't work? -        media_tex->reinit(FALSE);	// probably not needed          // MEDIAOPT: seems insane that we actually have to make an imageraw then          // immediately discard it | 
