Commit Graph
51 Commits
Author SHA1 Message Date
swung0x48 076cd0d19d [Feat] (MG_State, MG_Impl/GLImpl): per-target default texture objects (name 0) - binding 0 binds a real per-context default object (the initial binding of every unit/target slot, rebound on delete of a bound texture), so glTexImage*/glTexParameter*/glGetTex* on it work like any texture while glIsTexture(0)/Gen/Delete keep excluding it and TexStorage* rejects it per spec; backends skip image-less defaults as cheaply as the old null slots (DirectGLES per-draw sync/bind loops, DirectVulkan sampler-fallback resolve); also accept the full advertised GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS range in glActiveTexture, allow zero-layer TexImage3DMultisample, and let glTexBuffer(buffer=0) detach - the texture section of GL CTS per-case state reset (gluStateReset) now runs clean 2026-07-16 23:36:43 -04:00
swung0x48 808c5dcc46 [Perf] (MG_Backend/DirectVulkan): re-land content-version texture early-out; bump content version on glGenerateMipmap so cached sampled views re-sync (fixes Iris shader retrace) 2026-07-13 00:50:09 -04:00
swung0x48 ecea8054a6 Revert content-version texture early-out (e8e1521): the SyncTexture cross-draw skip breaks Iris shader retrace validation (correctness regression) 2026-07-12 23:27:54 -04:00
swung0x48 e8e1521972 [Perf] (MG_Backend/DirectVulkan): skip cross-draw re-sync of unchanged textures via a content-version early-out; SyncTextureAndGetDescriptor 8.9%->2.4% 2026-07-12 18:40:48 -04:00
swung0x48andClaude Fable 5 bd208783d7 [Perf] (MG_Backend/DirectVulkan, MG_State): stop re-deriving per-draw state
- Memoize the program content hash on ProgramObject (keyed by the backend
  state version + compile flags; relinking and binding changes invalidate
  it) and the vertex-input hash on VertexArrayObject (keyed by a new
  aggregate config version bumped by every attribute mutation). Full-SPIRV
  XXH64 hashing fell from 13.7% to 1.4% of the render thread.
- ProgramObject also gains a link version and a global-UBO content version
  (bumped by uniform writes and on relink, wrap-safe around the backends'
  "never uploaded" sentinel) for backends to gate uploads and link caches.
- Reuse member scratch vectors in SetupDraw, UploadAndBindVertexBuffers,
  GetOrCreatePipeline and BindProgramUniformBuffers instead of allocating
  per draw (~12% of render-thread time was in the allocator).
- Replace hot-path dynamic_cast with AsMipmapTexture (storage-type tag +
  static_cast); TextureObjectMipmap is the only Mipmap-tagged branch.
- Register/prune texture aliases only when a new (texture, lifetimeId)
  identity appears instead of scanning the entire alive map on every
  sampled-texture sync.
- Make the fallback VkPresentModeKHR log strings report the actual mode.

Vanilla render-thread share of libMobileGL dropped from 48% to 35% on
DirectVulkan (simpleperf, Adreno 830).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-09 12:12:50 +00:00
swung0x48 e83e6ed76e [Fix] (MG_State/GLState, MG_Impl/GLImpl): track immutable texture storage [skip ci] 2026-07-02 22:49:54 +08:00
swung0x48 0cd236414e [Fix] (MG_Impl/GLImpl, MG_State/GLState): fix texture integer border color queries [skip ci] 2026-07-02 13:17:08 +08:00
BZLZHH a4261f8b19 [Fix] (MG_Backend/DirectVulkan, MG_State/TextureState, MG_Test): harden default-fbo clear lifetime tracking 2026-06-10 09:49:16 +08:00
BZLZHH c499480692 [Feat] (MG_Impl/Texture, MG_State/TextureState, MG_Impl/Framebuffer, MG_Test/Texture): implement multisample frontend state 2026-06-10 01:37:59 +08:00
BZLZHH 15e24cda78 [Perf|Improvement] (All): Improve performance & optimize code. 2026-02-23 16:00:38 +08:00
BZLZHH 8413874e82 [Feat|Refactor] (MG_Backend|MG_Impl): Implement BackendObject, replacing previous methods. 2026-02-18 10:36:56 +08:00
swung0x48 de8342a96b Revert "[Optimize] (MG_Backend/DirectGLES): Texture object mipmap dirty bit"
This reverts commit 8f551794
2026-02-04 22:56:28 +08:00
BZLZHH 7daa69cf73 [Feat] (MG_State/TextureState): Add resource version for texture params. 2026-02-03 00:15:50 +08:00
swung0x48 8f55179493 [Optimize] (MG_Backend/DirectGLES): Texture object mipmap dirty bit 2026-02-02 15:37:55 +08:00
BZLZHH 0cf9d9223d [Feat|Perf] (*/BufferState): Improve dirty mark for Buffer. 2026-02-02 02:25:41 +08:00
BZLZHH 20fbfc2956 [Chore] (LICENSE): Switch project license to LGPLv3. 2026-01-18 09:33:33 +08:00
BZLZHH 3714e275ab [Chore] (All): Update copyright year in source code files. 2026-01-01 00:42:06 +08:00
BZLZHH e7d9da42dc [Chore] (All): Adjust copyright declaration. 2025-12-31 21:49:54 +08:00
BZLZHH 8ed8efe347 [Chore] (All): Add standardized source file header and update script. 2025-12-31 15:45:34 +08:00
swung0x48 c3755d77ef [Feat] (MG_Impl/Texture): implement GL_TEXTURE_SWIZZLE_RGBA 2025-12-13 21:28:04 +08:00
swung0x48 cb4e6b5f19 [Feat] (MG_State/Texture, MG_Impl/Texture): glTexBuffer (and implement TextureObjectBuffer accordingly) 2025-12-09 21:20:39 +08:00
swung0x48 0a89ad4f30 [Feat] (MG_State/Texture): separate mipmap from TextureObjectBase 2025-12-09 10:57:10 +08:00
swung0x48 ab6d9f60e7 [Refactor] (MG_State/Texture): decouple texture object and mipmap storage 2025-12-06 22:24:30 +08:00
BZLZHH 521bcadbee [Fix] (...): Fix code mess. 2025-11-29 01:43:58 +08:00
BZLZHH 32c062d019 [Feat] (MG_State/TextureState): Add ITextureObject::GetAllSwizzleParams 2025-11-29 01:33:58 +08:00
BZLZHH 75fc52febe [Feat] (MG_State/TextureState): Stubs for unimplemented texture types. 2025-11-29 01:31:41 +08:00
swung0x48 da5b9686ba [Fix]: build on macOS 2025-11-26 22:05:02 +08:00
swung0x48 a0aaba3cb5 [Feat] (MG_State/Texture): Initial implementation of cube map 2025-11-25 22:47:41 +08:00
swung0x48 4d44dda117 [Chore] (MG_State/TextureObject): separate TextureObjectWithOneMipmap 2025-11-25 21:52:01 +08:00
swung0x48 e79d2fd059 [Chore]: get rid of junk in texture stuff 2025-11-25 14:20:37 +08:00
swung0x48 352df37b91 [Feat] (MG_State/TextureObject): implement GetIndexOfTextureUploadTarget() 2025-11-25 14:14:05 +08:00
swung0x48 419a67cd08 [Feat] (MG_State/TextureState): refractor mipmap (TextureStorage) 2025-11-25 00:10:13 +08:00
swung0x48 718eeaab43 [Chore] (MG_State/TextureObject): extract mipmap stuff 2025-11-24 16:59:59 +08:00
swung0x48 ca8d2b7bab [Chore]: separate TextureObject child classes into individual files 2025-11-24 09:51:39 +08:00
BZLZHH 3809a9f52f [Feat] (MG_State/SamplerState): Implement SamplerState. 2025-11-15 23:53:54 +08:00
BZLZHH 784b53344c [Feat] (MG_State/TextureState|MG_Impl/Texture): Add hasData mark for MipmapLevelInternal. 2025-11-15 23:17:01 +08:00
BZLZHH a01037b6fe [Misc] (MG_State/TextureState): Remove completed TODO. 2025-11-14 11:09:27 +08:00
BZLZHH 4d8db7fb3b [Feat] (MG_State/TextureState): Implement full texture parameter track. 2025-11-01 15:49:16 +08:00
BZLZHH 1269bc76f3 [Feat] (MG_State): Add external index getter for each object. 2025-11-01 11:18:35 +08:00
swung0x48 7151080a67 [Fix] (Types, GL_Texture): Memcpy insanity, proxy texture fix 2025-10-28 11:49:08 +08:00
BZLZHH 93a0bbaed8 [Feat] (MG_Backend/DirectGLES): Implement basic stuff for DirectGLES backend. 2025-10-19 11:47:44 +08:00
BZLZHH bd1056f9c9 [Feat|Fix] (...): Add/Fix lots of stuff, being able not to crash in MC. 2025-10-06 16:08:35 +08:00
BZLZHH 776e1d99cf [Feat] (MG_State/TextureState): Implement TextureObjectBase::IsComplete. 2025-10-02 20:22:12 +08:00
BZLZHH fd82a2495f [Improvement] (MG_State/TextureState): Mark the mipmap as dirty by default. 2025-09-06 08:53:11 +08:00
BZLZHH b92bc0b44a [Feat] (MG_State/TextureState): Add dirty mark for MipmapLevelInternal. 2025-08-25 15:18:34 +08:00
BZLZHH 427e069085 [Feat] (MG_State/TextureState): Implement GetMipmap for TextureObject. 2025-08-25 15:13:01 +08:00
BZLZHH 675ee4915b [Feat|Fix] (MG_Impl/Texture): Implement TexImage2D & related stuff. 2025-08-14 18:32:37 +08:00
BZLZHH 115cdef6fd [Feat] (MG_State/TextureState): Add TextureUploadTarget enum. Add more TextureTarget enum. 2025-08-14 15:19:32 +08:00
BZLZHH 4eba014513 [Fix] (MG_State/TextureState): Fix incorrect behavior. 2025-08-12 18:11:36 +08:00
BZLZHH 253e14f2c9 [Improvement] (...): Optimize code. 2025-08-10 23:18:01 +08:00