性能优化:P0/P1 热路径优化及 DepthBuffer 定点化
- 新增 USE_RGB565_BACKBUFFER 选项,FrameBuffer 内部以 RGB565 存储,present 阶段直接 memcpy,消除逐像素格式转换 - 新增 set_pixel_unsafe / get_depth_unsafe / set_depth_unsafe 快路径,热路径去除重复边界检查 - fill_rect 改为行级批量填充,draw_text/draw_sprite_ex 改用 unsafe 写入 - DepthBuffer 从 float 迁移至 uint16_t 定点深度,clear 支持 memset 快速路径 - TriangleRasterizer 深度测试适配 uint16_t(临时桥接,待全面定点化) - 修复 USE_RGB565_BACKBUFFER 宏未传递到编译器的问题
This commit is contained in:
@@ -9,6 +9,7 @@ if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
|
||||
endif()
|
||||
|
||||
option(USE_FRAMEBUFFER "Use Linux framebuffer instead of SDL2" OFF)
|
||||
option(USE_RGB565_BACKBUFFER "Use RGB565 internal backbuffer to eliminate present conversion on RGB565 fb0" OFF)
|
||||
|
||||
set(CORE_SOURCES
|
||||
src/Core/Asset/ObjLoader.cpp
|
||||
@@ -58,6 +59,13 @@ target_include_directories(imx6u_core PUBLIC ${CORE_INCLUDE_DIRS})
|
||||
|
||||
if(USE_FRAMEBUFFER)
|
||||
target_compile_definitions(imx6u_core PUBLIC USE_FRAMEBUFFER)
|
||||
endif()
|
||||
|
||||
if(USE_RGB565_BACKBUFFER)
|
||||
target_compile_definitions(imx6u_core PUBLIC USE_RGB565_BACKBUFFER)
|
||||
endif()
|
||||
|
||||
if(USE_FRAMEBUFFER)
|
||||
else()
|
||||
if(WIN32)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
@@ -106,6 +114,15 @@ function(imx6u_configure_app_target target_name)
|
||||
"${SDL2_DLL}"
|
||||
"$<TARGET_FILE_DIR:${target_name}>"
|
||||
)
|
||||
elseif(SDL2_image_FOUND)
|
||||
add_executable(SpriteAssetTool ${SPRITE_ASSET_TOOL_SOURCES})
|
||||
target_include_directories(SpriteAssetTool PRIVATE
|
||||
src/Core/Asset
|
||||
src/Core/RenderData
|
||||
)
|
||||
target_link_libraries(SpriteAssetTool PRIVATE SDL2::SDL2 SDL2_image::SDL2_image)
|
||||
else()
|
||||
message(STATUS "SpriteAssetTool disabled: SDL2_image was not found")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
|
||||
Reference in New Issue
Block a user