Org Wiki

Main Programming Platforms Projects Emacs Russian Quotes Old Lisa wiki

Table of Contents

1 VideoCore

1.1 Notes

  • DSL - Domain-Specific Language
  • TFU - Texture Formatting Unit (v3d)

Useful command for examining device tree:

> dtc -I fs /sys/firmware/devicetree/base | less

Search for e.g. `v3d`

1.2 Links

1.2.1 Crypto

1.2.2 FFT

1.4 config.txt

Other notes:

  • Pi4 OS should use at least Mesa 19.1. This version didn't make it into Buster.
  • reference
  • Blog with GPU settings
  • Location: /boot/config.txt Apparently, Ubuntu 64-bits: /boot/firmware/usercfg.txt

Pi4 (silke) settings:

# Enable DRM VC4 V3D driver on top of the dispmanx display stack
  • fkms - FAKE KMS
    • fake better supported than full
    • fake: dispman X API remains available (not with full KMS)
  • GPU mem set in raspi-config: 64MB
  • dtoverlay values
    • vc4-fkms-v3d - appears to be standard for PI4
    • vc4-kms-v3d
    • vc4-kms-v3d-pi4

1.5 Idea(s) for usage

  • UTF8 validation on QPU's - Blog

1.5.1 Crypto

1.6 Reference

See V3DLib for other links, most have been transferred to there

1.6.2 v3d

  • Forum 'Pi 4 - full specification of VideoCore 6'
  • BCM7268 V3D3.3 ("vc5") driver release
    • Addition of MMU - The addition of the MMU to the QPU eliminates the need for physically contiguous addresses in the memory I/O area, and also enables detection and blocking of illegal memory reads and writes.
    • There is no more register A/B file, so basic 32-bit value register allocation is simple
    • half-precision floating point operations - you can do twice as many add/sub/mul/min/maxes per cycle if you can pack them in the same register
  • List of V3D registers (link not found TODO search new link) - contains registers not in the ref doc: Source readl/writel

readl/writel are typically used for reading from memory mapped registers, which can cause hangs if accessed unclocked.

1.6.3 Other

2 CmdParameter

2.1 Competitors

  • Skipped all that is on the `getopt()` level.
  • In all cases, no action handling.
  • However, all of these are much smaller dan own, usually one header file.
  • Usual setup is a parser, then dynamic setting of help and validation
  • most do long/short options
  • parg - printf's in a switch for help
  • flags - per-option read-in; uses istream to process. No real help
  • argh - parses command line, then processes. Dynamic calls for adding validation and help
  • optionparser - does have usage-struct, POSIX conventions
  • cmdline - parse, dynamic adding of functionality
  • linkom - C-style, extensive parsing of syntax (i.e. order), '/A' style options
  • ProgramOptions - C+11, 'flow-style' syntax, dynamic

2.2 Blurb


  • Declarative: Centralized definition of the options
  • Validation of any parameters passed in
  • Add as much text as is necessary - can be big
  • Extensibility of data types
  • Support for actions on command line, like `aws`


  • Column alignment (no line wrapping)


  • POSIX - long/short options etc, investigate

3 OMeta

3.1 Reference

3.2 Links

3.3 TODO consider parsing all examples at OMeta/JS 2.0 Workspace

3.4 Gezira/Nile - from Alan Kay's talk

Source: Is it really "Complex"? Or did we just make it "Complicated"? - Alan Kay

Source2: How Complex is "Personal Computing"? - Combined talk Dan Amelang, Alex Warth, Nil/OMeta

  • Source2: 0:53:00 review 'foreign rule invocation' - try parsing first as OMeta grammar; if that doesn't work, try js.

"Hardware is just software crystallized early" - Alan Kay, Source, 1:37:35

Of further interest:

  • Pseudo time (0:51:25)
    • Semaphore is bad idea that won out
    • better: pseudo time
  • Bret Victor (0:55:0) Visualizer for Nile

3.5 Nile:

"Nile is a dataflow language"

From Dan's talk:

  • Everything is a data stream processed by kernels
  • Kernel syntax optimized for expressing arithmetic, vector computations
  • Various compile targets - other languages, hardware targets (maybe, haven't done that yet)

Dan Amelang, from end of Source.

Adjusts itself to the hardware:

  • automatically parallellize high level programs
  • automatic SIMD generation
  • spread among cores of desktop
  • spread among computers


4 vis.js

4.1 Links

4.2 Consider

4.2.1 Examples for Graph3D

4.2.2 Device pixel ratio alternative


window.devicePixelRatio = window.devicePixelRatio || 
                          window.screen.deviceXDPI / 

4.3 Rheingold and Tilford layout

For hierarchical graphs.

See slideshow document CS448B-20111110-GraphsAndTrees.pdf for step-by-step explanation.

5 Other

Author: Wim Rijnders

Created: 2021-11-13 Sat 07:22