Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • shocknovaa/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
411 results
Show changes
Commits on Source (2)
  • Fatih Uzunoğlu's avatar
    Revert "qml: set children ShaderEffects' `supportsAtlasTextures` in BlurEffect" · 6e8403fa
    Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
    This reverts commit 2baca715.
    
    Unfortunately it turns out that "They support atlas/sub textures" is not fully
    correct. I made that assumption after taking a look at the shader code, and I
    concluded that they simply did not bother setting `supportsAtlasTextures` to
    `true` from its default value `false` due to negligence because the shader
    code that samples the source texture primarily uses the coordinate Qt supplies
    (`qt_MultiTexCoord0`) where it already takes the atlas textures into account.
    
    ShaderEffect's documentation states that:
    
    > If supportsAtlasTextures is true, coordinates will be based on position in
    > the atlas instead.
    
    Therefore, the coordinates supplied can be used as is with atlas textures. In
    fact, we (and Qt) are already doing this in various places (`vec4 texel =
    texture(source, qt_TexCoord0)`).
    
    The blur effect shaders uses the same (pre-adjusted) coordinate for sampling
    the texture. So, I thought that setting `supportsAtlasTextures` would not have
    a negative impact.
    
    However, due to the way Qt does blurring, this pre-adjusted (atlas) coordinate
    is offsetted and that offset is obviously specific to the blur effect and not
    pre-adjusted for the atlas texture (as Qt does with `ShaderEffect`) since
    they never claim to support atlas textures in blur effect, they don't bother
    normalizing the offset coordinate according to the atlas.
    
    Unfortunately, this means that atlas textures must be detached from the atlas,
    incurring a copy, to be used as a source for the blur effect. This is not a
    big problem for us, because most of the places where we use the blur effect
    already have the source textures independent (not in the atlas). And we still
    benefit from `QSGTextureView` that it prevents incurring a copy when the source
    texture is not in the atlas.
    
    - Main view (for mini player frosted glass effect background) is an item
    layer (not to mention a dynamic texture). They are never put in the atlas.
    - Player background uses mipmap, currently Qt does not support mipmapped
    atlas textures, so all mipmapped textures are independent textures. We use
    mipmapping here not to prevent this issue, but we actually benefit from
    mipmapping in this case as we do fluent size change based on window size.
    - Music artist header background, depending on the atlas size, may be put
    in the atlas. This currently depends on the initial window size, if it is
    small, the texture is not put in the atlas and blurring works fine. This
    is because currently Qt determines the atlas size based on the initial
    window size (I guess this is from the times when they primarily targeted
    mobile platforms with Qt Quick, back in 2010s).
    
    Unfortunately `QQuickImage` (`Image`) does not have a parameter to disable
    putting textures in the atlas. Setting `mipmap` as done in player would
    be fine, but we don't want/need mipmapping in music artist view. This does
    not mean much anyway, as with the revert here the shader effect would ask
    the texture to "remove" itself from the atlas (by copying, as per the default
    RHI atlas texture implementation), so blurring starts working fine.
    
    This change brings an additional requirement, although not used currently,
    if a target of `QSGTextureView` is in the atlas, and the texture view is
    used as source for blur effect, the request of detaching from the atlas
    texture (`QSGTexture::removedFromAtlas()`) would fail. The next commit
    makes sure that `::removedFromAtlas()` works fine with `QSGTextureView`,
    too, even though currently it is not used (I used a trick to disable
    layering instead of using `QSGTextureView` in music artist header).
    6e8403fa
  • Fatih Uzunoğlu's avatar
    qt: implement `QSGTextureView::removedFromAtlas()` · 1908011f
    Fatih Uzunoğlu authored and Steve Lhomme's avatar Steve Lhomme committed
    This is useful when `QSGTextureView` is used as the source
    of a `ShaderEffect` that does not support atlas textures.
    
    Notable examples are `FastBlur` and `MultiEffect`.
    1908011f
......@@ -191,12 +191,27 @@ bool QSGTextureView::isAtlasTexture() const
QSGTexture *QSGTextureView::removedFromAtlas(QRhiResourceUpdateBatch *batch) const
{
Q_UNUSED(batch);
// QSGTextureView does not remove the source texture from the atlas. Removing
// from atlas means copying the texture, and this is not necessary. Shaders
// support atlas texture by having `qt_SubRect_X` uniform, or, in the case
// of `ShaderEffect`, `supportsAtlasTextures` is set.
assert(m_texture); // it is absurd to call removedFromAtlas() when there is no target
// We can "remove" the target texture from the atlas, and re-attach the view to the detached texture.
// It should be noted that this method does not mutate the target texture, which can be guessed by
// the method signature (being a const method), but rather creates a new texture which is an independent
// texture that has its content copied from the atlas texture (still owned by the atlas texture).
// This would not cause a leak, because:
// 1) we are not owning the atlas texture (current view target) here.
// 2) the returned (detached) texture is owned by the atlas texture (current view target).
QSGTexture *const detachedTexture = m_texture->removedFromAtlas(batch);
if (Q_LIKELY(detachedTexture))
{
// This virtual method is const, which is fine for QSGTexture (removing
// from atlas means returning a new image which is a copy from the relevant
// part of the atlas), but not for QSGTextureView, because the texture view
// needs to mutate to point to the detached texture. There is not much to
// do besides 1) creating a new QSGTextureView and returning it, and leaking
// this instance 2) using const cast.
const_cast<QSGTextureView*>(this)->setTexture(detachedTexture);
return const_cast<QSGTextureView*>(this);
}
return nullptr;
}
......
......@@ -31,15 +31,4 @@ MultiEffect {
autoPaddingEnabled: false
property alias radius: effect.blurMax
onChildrenChanged: {
for (let i in children) {
if (children[i] instanceof ShaderEffect) {
// Qt creates multiple ShaderEffect, depending
// on parameters. They support atlas/sub textures
// but Qt does not set `supportsAtlasTextures`:
children[i].supportsAtlasTextures = true
}
}
}
}
......@@ -26,15 +26,4 @@ FastBlur {
// Avoid using padding, as Qt thinks that it needs to layering implicitly.
transparentBorder: false
onChildrenChanged: {
for (let i in children) {
if (children[i] instanceof ShaderEffect) {
// Qt creates multiple ShaderEffect, depending
// on parameters. They support atlas/sub textures
// but Qt does not set `supportsAtlasTextures`:
children[i].supportsAtlasTextures = true
}
}
}
}