Asking the bitmap loader for uncompressed pixels does not get them from a DXT file
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 76/100
Direzione di ricerca
Start with bm_lock_dds in bmpman.cpp and compare its flags handling with conversion_needed in ddsutils.cpp, the existing DXT decode decision. The issue identifies the EFF stream as the only caller requesting uncompressed pixels; trace that caller and the skip described in #7886. Done when a DXT lock requesting uncompressed pixels returns plain 32-bit pixels while callers accepting any texture remain unchanged.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
When code locks a bitmap it tells the loader what kind of texture it can accept. Most of the engine says "anything". Code that has to read the pixels itself says "uncompressed only". The DDS loader does not act on that: it hands back a DXT file as compressed blocks no matter what was asked, and the only time it decodes one is when the graphics card has no DXT support at all. On any normal GPU, code that asked for plain pixels gets compressed blocks anyway. The spot is bm_lock_dds in bmpman.cpp, which ignores its flags argument.
Where it shows
#7886 makes EFF streaming animations copy each frame into their own buffer. A frame that arrives compressed cannot be copied, so the stream skips it and logs a line, and a DXT-framed EFF plays as nothing on a real GPU. Before #7886 such a stream showed its first frame and then froze on it, so neither version ever played it. None of the mods installed here stream a DXT EFF, so this is a gap rather than something players hit today, but it is the one case #7886 leaves behind.
Expected
Locking a DXT file with the "uncompressed only" request should return plain 32-bit pixels, using the decoder the engine already has for cards without DXT support.
Fix direction
In bm_lock_dds, when the caller accepts only uncompressed textures and the file is DXT, take the existing decode path and mark the result as uncompressed. The EFF stream's skip can then go. The stream is the only caller that asks for uncompressed only; the renderer asks for anything and would not change.
Further reading
#7886 (the stream change and the skip), #7885 (the related reload guard), conversion_needed in ddsutils.cpp (the existing decode decision).
- Lingua principale
- C++
- Stelle
- 488
- Fork
- 184
- Merge medio
- 2g 9h
- PR unite (30g)
- 40
Preparare l'ambiente
Non abbiamo ancora controllato i file di configurazione di questo progetto. Parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di scp-fs2open/fs2open.github.com
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
scp-fs2open/fs2open.github.com#7918 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
scp-fs2open/fs2open.github.com#7917 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
scp-fs2open/fs2open.github.com#7916 ·
I maintainer di solito rispondono entro 1 giorno
-
P2: A timed rotation maneuver does nothing on a ship that had an earlier timed lateral maneuverForse già presa @vovosta l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
scp-fs2open/fs2open.github.com#7914 · 3 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
scp-fs2open/fs2open.github.com#7901 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di scp-fs2open/fs2open.github.com
Issue simili
-
v9.6.0: CMake incorrectly enforces presence of libevdevForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 65/100
mltframework/shotcut#1943 ·
I maintainer di solito rispondono entro 1 giorno
-
Rowan (2017) electron heating gives NaN for beta > beta_max; clip() then sets electrons to kel_minAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
parthenon-hpc-lab/kharma#213 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
metasequoiaime/msime#9113 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
tone-3000/tone3000-plugin#257 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno