Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PicoVision #829

Merged
merged 23 commits into from
Oct 19, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
32c6193
pico: initial picovision config
Daft-Freak Jul 13, 2023
3e9576f
pico: Hacky and inefficent PicoVision display
Daft-Freak Jul 13, 2023
2fb42a5
pico: enable PicoVision SD card
Daft-Freak Jul 13, 2023
7c73a4d
Allow passing blend functions through set_screen_mode_format
Daft-Freak Jul 14, 2023
e868cad
pico: initial not very optimised custom blend funcs for PicoVision
Daft-Freak Jul 14, 2023
2d988aa
pico: lower level picovision display
Daft-Freak Jul 15, 2023
981a380
pico: Avoid static framebuffer allocation for PicoVision
Daft-Freak Jul 15, 2023
9c735dc
pico: handle additional horizontal scaling in blend funcs
Daft-Freak Jul 15, 2023
ec4e5dd
pico: clamp PicoVision fills to 1k
Daft-Freak Jul 15, 2023
1784614
pico: try to batch fills
Daft-Freak Jul 16, 2023
10658d7
pico: split copy part of PicoVision pen blend for reuse
Daft-Freak Jul 16, 2023
90131df
Pass through pen get for PicoVision
Daft-Freak Jul 18, 2023
3a20b09
pico: move to pimoroni/picovision
Daft-Freak Sep 25, 2023
42c0b11
ci: checkout pimoroni/picovision for drivers
Daft-Freak Jul 15, 2023
ccccd8c
ci: build PicoVision
Daft-Freak Jul 15, 2023
ffe22fa
Start adding PicoVision to pico docs
Daft-Freak Sep 26, 2023
80eb274
pico: update for picovision line mode change
Daft-Freak Sep 29, 2023
5e4303a
pico: prepare for more PicoVision modes
Daft-Freak Jul 21, 2023
8a21799
Add BGR555 format
Daft-Freak Jul 26, 2023
6e0d533
pico: stop pretending PicoVision is RGB565
Daft-Freak Jul 26, 2023
b577eac
pico: move batch check into the branch that uses it
Daft-Freak Oct 6, 2023
08cdc26
pico: double-buffer picovision fill batching
Daft-Freak Oct 6, 2023
b2128de
pico: handle rgb555 blits for PicoVision
Daft-Freak Jul 18, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,14 @@ jobs:
cmake-args: -D32BLIT_DIR=$GITHUB_WORKSPACE -DPICO_SDK_PATH=$GITHUB_WORKSPACE/pico-sdk -DPICO_BOARD=pimoroni_picosystem -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
apt-packages: ccache gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib python3-setuptools

- os: ubuntu-20.04
pico-sdk: true
name: PicoVision
cache-key: picovision
release-suffix: PicoVision
cmake-args: -D32BLIT_DIR=$GITHUB_WORKSPACE -DPICO_SDK_PATH=$GITHUB_WORKSPACE/pico-sdk -DPICO_BOARD=pico_w -DPICO_ADDON=pimoroni_picovision -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
apt-packages: ccache gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib python3-setuptools

- os: ubuntu-20.04
name: MinGW
cache-key: mingw
Expand Down Expand Up @@ -84,6 +92,15 @@ jobs:
repository: raspberrypi/pico-extras
path: pico-extras

# PicoVision needs the RAM driver and the firmware
- name: Checkout PicoVision
if: matrix.name == 'PicoVision'
uses: actions/checkout@v3
with:
repository: pimoroni/picovision
ref: 03df7694ed4fb396c1d12adf90d0150ada6baedc
path: picovision

- name: Cache
uses: actions/cache@v3
with:
Expand Down
9 changes: 8 additions & 1 deletion 32blit-pico/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ elseif(BLIT_AUDIO_DRIVER STREQUAL "pwm")
list(APPEND BLIT_BOARD_LIBRARIES pico_audio_pwm)
endif()

if(BLIT_DISPLAY_DRIVER STREQUAL "scanvideo")
if(BLIT_DISPLAY_DRIVER STREQUAL "picovision")
list(APPEND BLIT_BOARD_LIBRARIES hardware_i2c aps6404 swd_load)
elseif(BLIT_DISPLAY_DRIVER STREQUAL "scanvideo")
set(BLIT_REQUIRE_PICO_EXTRAS TRUE)
set(BLIT_ENABLE_CORE1 TRUE)
list(APPEND BLIT_BOARD_LIBRARIES pico_scanvideo_dpi)
Expand Down Expand Up @@ -147,6 +149,11 @@ pico_sdk_init()
pico_generate_pio_header(BlitHalPico ${CMAKE_CURRENT_LIST_DIR}/st7789.pio)
pico_generate_pio_header(BlitHalPico ${CMAKE_CURRENT_LIST_DIR}/spi.pio)

# include picovision drivers
if(BLIT_DISPLAY_DRIVER STREQUAL "picovision")
include(picovision_import.cmake)
endif()

# driver sources
target_sources(BlitHalPico INTERFACE
${CMAKE_CURRENT_LIST_DIR}/audio_${BLIT_AUDIO_DRIVER}.cpp
Expand Down
14 changes: 14 additions & 0 deletions 32blit-pico/board/pimoroni_picovision/config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
set(BLIT_BOARD_NAME "PicoVision")

set(BLIT_BOARD_DEFINITIONS
PICO_AUDIO_I2S_PIO=0
PICO_AUDIO_I2S_DATA_PIN=26
PICO_AUDIO_I2S_CLOCK_PIN_BASE=27
PICO_AUDIO_I2S_BUFFER_SAMPLE_LENGTH=256
)

blit_driver(audio i2s)
blit_driver(display picovision)
blit_driver(input usb_hid)
blit_driver(storage sd_spi)
blit_driver(usb host)
14 changes: 14 additions & 0 deletions 32blit-pico/board/pimoroni_picovision/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#pragma once

#define DEFAULT_SCREEN_FORMAT PixelFormat::BGR555

// native
#define SD_CLK 10
#define SD_CMD 11
#define SD_DAT0 12

// spi
#define SD_SCK 10
#define SD_MOSI 11
#define SD_MISO 12
#define SD_CS 15
4 changes: 3 additions & 1 deletion 32blit-pico/display.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ using namespace blit;

static SurfaceInfo cur_surf_info;

#if ALLOW_HIRES
#if defined(BLIT_BOARD_PIMORONI_PICOVISION)
static const uint16_t *screen_fb = nullptr;
#elif ALLOW_HIRES
uint16_t screen_fb[DISPLAY_WIDTH * DISPLAY_HEIGHT];
#else
uint16_t screen_fb[lores_page_size]; // double-buffered
Expand Down
2 changes: 2 additions & 0 deletions 32blit-pico/display.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
static const int lores_page_size = (DISPLAY_WIDTH / 2) * ((DISPLAY_HEIGHT + 1) / 2) * 2;

extern blit::ScreenMode cur_screen_mode;
#ifndef BLIT_BOARD_PIMORONI_PICOVISION
extern uint16_t screen_fb[];
#endif

void init_display();
void update_display(uint32_t time);
Expand Down
Loading
Loading