Basic passthrough working

... but super unstable. It looks as if pixel data gets subtly corrupted
when output over HDMI.

To-Do:
 * Check whether broken output persists on Windows and is not linux-only
 * Check whether output is still broken if software
   rendering/window compositing is used
 * Maybe check on an apple platform?
 * Research this behavior
This commit is contained in:
jaseg 2021-06-25 19:55:58 +02:00
parent df66872fee
commit d49062bddb
6 changed files with 32853 additions and 39 deletions

View file

@ -3,7 +3,7 @@
{
"cell_type": "code",
"execution_count": 121,
"id": "correct-stationery",
"id": "martial-democrat",
"metadata": {},
"outputs": [],
"source": [
@ -20,7 +20,7 @@
{
"cell_type": "code",
"execution_count": 94,
"id": "sustainable-intranet",
"id": "flexible-synthetic",
"metadata": {},
"outputs": [],
"source": [
@ -63,7 +63,7 @@
{
"cell_type": "code",
"execution_count": 185,
"id": "ignored-chart",
"id": "fifteen-swimming",
"metadata": {},
"outputs": [],
"source": [
@ -83,7 +83,7 @@
{
"cell_type": "code",
"execution_count": 111,
"id": "original-module",
"id": "excessive-permit",
"metadata": {},
"outputs": [],
"source": [
@ -94,28 +94,49 @@
},
{
"cell_type": "code",
"execution_count": 173,
"id": "interracial-gambling",
"execution_count": 192,
"id": "cathedral-information",
"metadata": {},
"outputs": [],
"source": [
"with open('test_data/test_glyphmem_data.hex', 'w') as f:\n",
" for row in range(128):\n",
" for col, c in enumerate(itertools.islice(itertools.cycle(string.printable), row, row+256)):\n",
" if col == row+30:\n",
" c = '\\n'\n",
" underline = bool(row&1)\n",
" bold = bool(row&2)\n",
" bgcolor = max(0, col%24-8) if col//24%2 == 1 else 0\n",
" fgcolor = 0 if col//24%2 == 1 and col%24 > 8 else (7 if col%24<8 else col%24-8)\n",
" code = (int(underline)<<19) | (int(bold)<<18) | (bgcolor<<12) | (fgcolor<<8) | ord(c)\n",
" print(f'{code:05x}', file=f)"
"def write_glyph_buffer_init_file(fn):\n",
" with open(fn, 'w') as f:\n",
" for row in range(128):\n",
" for col, c in enumerate(itertools.islice(itertools.cycle(string.printable), row, row+256)):\n",
" if col == row+30:\n",
" c = '\\n'\n",
" underline = bool(row&1)\n",
" bold = bool(row&2)\n",
" bgcolor = max(0, col%24-8) if col//24%2 == 1 else 0\n",
" fgcolor = 0 if col//24%2 == 1 and col%24 > 8 else (7 if col%24<8 else col%24-8)\n",
" code = (int(underline)<<19) | (int(bold)<<18) | (bgcolor<<12) | (fgcolor<<8) | ord(c)\n",
" print(f'{code:05x}', file=f)"
]
},
{
"cell_type": "code",
"execution_count": 193,
"id": "available-being",
"metadata": {},
"outputs": [],
"source": [
"write_glyph_buffer_init_file('test_data/test_glyphmem_data.hex')"
]
},
{
"cell_type": "code",
"execution_count": 198,
"id": "hollow-husband",
"metadata": {},
"outputs": [],
"source": [
"write_glyph_buffer_init_file(f'../src/gen/glyph_buffer_init_file.hex')"
]
},
{
"cell_type": "code",
"execution_count": 172,
"id": "later-listing",
"id": "selective-pepper",
"metadata": {},
"outputs": [
{
@ -137,7 +158,7 @@
{
"cell_type": "code",
"execution_count": 175,
"id": "oriental-blake",
"id": "alone-olympus",
"metadata": {},
"outputs": [
{
@ -159,7 +180,7 @@
{
"cell_type": "code",
"execution_count": 176,
"id": "tamil-fault",
"id": "certified-olive",
"metadata": {},
"outputs": [
{
@ -181,7 +202,7 @@
{
"cell_type": "code",
"execution_count": 186,
"id": "organized-ceiling",
"id": "empty-scoop",
"metadata": {},
"outputs": [
{
@ -203,7 +224,7 @@
{
"cell_type": "code",
"execution_count": 191,
"id": "violent-swaziland",
"id": "christian-intention",
"metadata": {},
"outputs": [
{