{"action":"created","issue":{"url":"https://api.github.com/repos/dolphin-emu/dolphin/issues/2602","labels_url":"https://api.github.com/repos/dolphin-emu/dolphin/issues/2602/labels{/name}","comments_url":"https://api.github.com/repos/dolphin-emu/dolphin/issues/2602/comments","events_url":"https://api.github.com/repos/dolphin-emu/dolphin/issues/2602/events","html_url":"https://github.com/dolphin-emu/dolphin/pull/2602","id":88011985,"number":2602,"title":"Support partial texture updates via efb copies","user":{"login":"mimimi085181","id":9304938,"avatar_url":"https://avatars.githubusercontent.com/u/9304938?v=3","gravatar_id":"","url":"https://api.github.com/users/mimimi085181","html_url":"https://github.com/mimimi085181","followers_url":"https://api.github.com/users/mimimi085181/followers","following_url":"https://api.github.com/users/mimimi085181/following{/other_user}","gists_url":"https://api.github.com/users/mimimi085181/gists{/gist_id}","starred_url":"https://api.github.com/users/mimimi085181/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mimimi085181/subscriptions","organizations_url":"https://api.github.com/users/mimimi085181/orgs","repos_url":"https://api.github.com/users/mimimi085181/repos","events_url":"https://api.github.com/users/mimimi085181/events{/privacy}","received_events_url":"https://api.github.com/users/mimimi085181/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dolphin-emu/dolphin/labels/WIP","name":"WIP","color":"0052cc"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":21,"created_at":"2015-06-13T14:25:52Z","updated_at":"2015-06-24T07:16:36Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/dolphin-emu/dolphin/pulls/2602","html_url":"https://github.com/dolphin-emu/dolphin/pull/2602","diff_url":"https://github.com/dolphin-emu/dolphin/pull/2602.diff","patch_url":"https://github.com/dolphin-emu/dolphin/pull/2602.patch"},"body":"New Super Mario Bros uses a 1024x1024 texture for most objects in the levels. This texture is generated from data in memory, but some parts of it are generated via efb copies. On efb to texure only, the data from the efb copies is not written to memory. This results in those parts being either static or missing in Dolphin's representation of the texture. Examples for this are the spinning coins, the blue coins and the question mark block animation.\r\n\r\nThis pr copies the graphics from these efb copies into the graphics of of the big texture, at the right position. After this, the data in memory is still wrong, but the textures on the GPU are correct. Since this is only a display issue, that's fine.\r\n\r\nNote: Apparently the efb copies happen 1st, and then the big texture is loaded, which is why the updates are applied on load, and not on the efb copy.\r\n\r\nThe limitations of this pr are(not going to be fixed in this pr):\r\n- The big texture is not upscaled, so the partial texture updates are disabled, if the IR is not 1 and scaled efb copies is enabled. Otherwise there would be big graphical issues.\r\n- The updates are disabled for efb to ram. 1. Without upscaling it would identical to how it looks now and 2. this would require a change or the removal of MakeRangeDynamic, among other things.\r\n- Paletted textures are excluded, because support for those would require more work, like converting the efb copies before using them for the updates. This needs an example where this would be useful.\r\n- Efb copies are excluded. Would this even make sense somehow?\r\n\r\nAbout 90% of the OpenGL part was written by HdkR, thanks a lot."},"comment":{"url":"https://api.github.com/repos/dolphin-emu/dolphin/issues/comments/114757926","html_url":"https://github.com/dolphin-emu/dolphin/pull/2602#issuecomment-114757926","issue_url":"https://api.github.com/repos/dolphin-emu/dolphin/issues/2602","id":114757926,"user":{"login":"degasus","id":2787141,"avatar_url":"https://avatars.githubusercontent.com/u/2787141?v=3","gravatar_id":"","url":"https://api.github.com/users/degasus","html_url":"https://github.com/degasus","followers_url":"https://api.github.com/users/degasus/followers","following_url":"https://api.github.com/users/degasus/following{/other_user}","gists_url":"https://api.github.com/users/degasus/gists{/gist_id}","starred_url":"https://api.github.com/users/degasus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/degasus/subscriptions","organizations_url":"https://api.github.com/users/degasus/orgs","repos_url":"https://api.github.com/users/degasus/repos","events_url":"https://api.github.com/users/degasus/events{/privacy}","received_events_url":"https://api.github.com/users/degasus/received_events","type":"User","site_admin":false},"created_at":"2015-06-24T07:16:36Z","updated_at":"2015-06-24T07:16:36Z","body":"I think it's fine for now. If I want it in the opposite way, I can still swap it again :D"}}