Skip to content

use DRAM as fallback if PSRAM fails#5631

Merged
DedeHai merged 1 commit into
wled:mainfrom
DedeHai:PSRAM_fallback
May 20, 2026
Merged

use DRAM as fallback if PSRAM fails#5631
DedeHai merged 1 commit into
wled:mainfrom
DedeHai:PSRAM_fallback

Conversation

@DedeHai
Copy link
Copy Markdown
Collaborator

@DedeHai DedeHai commented May 19, 2026

fix for #5629

Summary by CodeRabbit

  • Bug Fixes
    • Improved memory allocation handling to enhance compatibility and stability on devices with limited or no PSRAM by enabling fallback to DRAM when needed.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

Walkthrough

Memory allocation preference flags are clarified in documentation. The allocate_buffer() function's PSRAM-preference path is updated to use p_malloc() instead of PSRAM-only allocation, enabling fallback to DRAM when PSRAM is unavailable.

Changes

PSRAM Memory Allocation Fallback

Layer / File(s) Summary
Memory allocation flag documentation
wled00/fcn_declare.h
BFRALLOC_PREFER_DRAM, BFRALLOC_ENFORCE_DRAM, BFRALLOC_PREFER_PSRAM, and BFRALLOC_ENFORCE_PSRAM macro documentation strings are updated. Bitmask values remain unchanged.
PSRAM allocation with DRAM fallback
wled00/util.cpp
allocate_buffer() PSRAM-preference path switches from heap_caps_malloc() with MALLOC_CAP_SPIRAM (PSRAM-only) to p_malloc() (PSRAM-preferred with DRAM fallback).

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

  • wled/WLED#4783: Introduces fallback-capable realloc helpers (p_realloc_malloc, d_realloc_malloc) and updates FX segment/pixel buffer allocation, continuing the pattern of PSRAM/DRAM allocation fallback behavior.

Suggested reviewers

  • willmmiles
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title directly describes the main change: modifying buffer allocation to use DRAM as a fallback when PSRAM fails, which aligns with the primary code change in util.cpp.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
wled00/fcn_declare.h (1)

530-530: 💤 Low value

Consider renaming flag to clarify fallback semantics.

The updated comment clarifies that BFRALLOC_ENFORCE_PSRAM now "falls back to DRAM if PSRAM fails," which is accurate. However, the term "ENFORCE" typically implies strict/mandatory behavior, while the new implementation allows fallback. This could cause confusion for developers expecting PSRAM-only allocation.

Consider renaming to BFRALLOC_REQUIRE_PSRAM or BFRALLOC_PSRAM_FIRST to better convey the "attempt PSRAM, accept DRAM fallback" semantics, distinguishing it from BFRALLOC_PREFER_PSRAM (which applies heuristics and may choose DRAM even when PSRAM is available).

That said, if the naming is established and the updated documentation is deemed sufficient, this is acceptable as-is.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@wled00/fcn_declare.h` at line 530, The macro name BFRALLOC_ENFORCE_PSRAM
suggests mandatory PSRAM but the implementation allows falling back to DRAM;
rename the macro to something clearer (e.g., BFRALLOC_PSRAM_FIRST or
BFRALLOC_REQUIRE_PSRAM) and update its comment and all references/usages (search
for BFRALLOC_ENFORCE_PSRAM in the codebase) so the symbol, its documentation,
and any conditional logic reflect the "try PSRAM, accept DRAM fallback"
semantics consistently.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@wled00/fcn_declare.h`:
- Line 530: The macro name BFRALLOC_ENFORCE_PSRAM suggests mandatory PSRAM but
the implementation allows falling back to DRAM; rename the macro to something
clearer (e.g., BFRALLOC_PSRAM_FIRST or BFRALLOC_REQUIRE_PSRAM) and update its
comment and all references/usages (search for BFRALLOC_ENFORCE_PSRAM in the
codebase) so the symbol, its documentation, and any conditional logic reflect
the "try PSRAM, accept DRAM fallback" semantics consistently.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 806b0897-1a1b-41ce-b29b-2b795b3317a3

📥 Commits

Reviewing files that changed from the base of the PR and between f68f91d and b7f9f71.

📒 Files selected for processing (2)
  • wled00/fcn_declare.h
  • wled00/util.cpp

Copy link
Copy Markdown
Member

@softhack007 softhack007 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good for me 👍

please also cherry-pick into 16_x after merge.

@DedeHai DedeHai merged commit 2d3c8c9 into wled:main May 20, 2026
26 checks passed
@DedeHai
Copy link
Copy Markdown
Collaborator Author

DedeHai commented May 20, 2026

merged an cherry picked to 16_x

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants