Coder Social home page Coder Social logo

add virtio gpu support about v86 HOT 15 CLOSED

copy avatar copy commented on May 14, 2024
add virtio gpu support

from v86.

Comments (15)

s-macke avatar s-macke commented on May 14, 2024

Just saw this "issue" accidental. I am already working on enhancement on virtio to support it.
So jor1k will support it sooner or later.
Who wants to write an opengl to webgl translation in a few months? ;)

from v86.

warpcoil avatar warpcoil commented on May 14, 2024

That's not too difficult, it's already planned for JSIX

from v86.

warpcoil avatar warpcoil commented on May 14, 2024

My solution would entail AMD modules, but I should imagine you could port it to your own thing.

When a DLL is loaded, and function is called, it is downloaded via requirejs and executed before returning to the process being executed. Binary DLLs also happen in this manner via kernel32.dll/LoadLibrary and kernel32.dll/GetProcAddress (and of course the imports field in the PE JSON header).

JSIX Application Update:

I am on holiday all next week so I hope to have a couple of apps completed and published into the web. I have a hosting provider, SSL and CDN ready.

You can check progress @ http://test.emulayer.com from tomorrow, I'm still compressing js at the moment.

What works:

  • Notepad (Provided by wine project) -> Works but need to continue porting functions and needs tweaks. IT WILL CRASH because functions are missing, but by the end of the week it will be done.
  • WineMine (Also wine) -> Got to the menu, but need to sort out jwtk.
  • cmd (Untested)
  • AkelPad (Works but again still porting functions so it will crash)
  • Notepad++ (Works but still . . . you get the picture).
  • WineFile (Untested)
  • Write works fully (when porting I didn't realise all it does is run WordPad and then exits(), oops)

Planned:
At least two fully working apps by the end of the week supported on Firefox, Chrome and IE 11.

Data Storage is provided by OneDrive and Google. At the minute when an open dialog box is opened it will just load "Lorem Ipsum . . .". No Saves or anything for a couple of days.

Longer Term:

  • More complex apps
  • OpenGL (perhaps), and audio capability
  • Basic Games

winenote

  • Notepad, after clicking "Edit -> Date/Time", Many functions to implement though. Rendering is slightly off for now.

winemine

  • WineMine (MineSweeper clone). Need to enhance jwtk to render the grid buttons. Just menu working for now [and registry accesses and what not]

from v86.

warpcoil avatar warpcoil commented on May 14, 2024

Any ideas for apps? Porting is becoming a lot easier and quicker as time goes by. I've been scouring portableapps.com as well and most of those are feasible and are under going testing/integration also.

from v86.

warpcoil avatar warpcoil commented on May 14, 2024

Ok copy, smacke,

As promised in my email a few weeks ago, proof of concept is up at http://test.emulayer.com

On my computer (slow), network (~50 Mb/s fast), app load time is about 20 seconds (No CDN or enhancements yet, SPDY and what not).

Second run (cache), 10 seconds. All apps take approximately the same depending on what code is executed prior to ShowWindow()/CreateWindow[Ex].

Once a CDN is active, we can (in theory) halve these times.
In JSIX Iteration 7, [end of the year/next year], we have further optimisations to implement, just lets get a few apps out first.

Whilst smaller apps are optimal, really large apps can work too due to the chunked data, i.e. if an app is 1GB in size, and your executing 24MB of it you only get those chunks that are being executed [.text and .data segments for example]. That's a feature of the PE JSON format, plus the chunks are compressed using LZG and uncompressed in the virtual memory controller.

Microsoft(R) Windows(TM) compatibility JavaScripts are just AMD modules loaded on the fly by requirejs.

Wine also works but is slower, so:

*kernel32.dll
*user32.dll
*advapi32.dll
*msvcr[X].dll
*commctl32.dll
*commdlg32.dll
*gdi32.dll
*ntdll.dll
*ole32.dll
*shell32.dll
*version.dll
and libwine.dll

are all written/encoded in JavaScript, although they are only partial implementations and are being ported in a function by function basis. Depending on the app, some functions may never be ported [as it's never called]

from v86.

s-macke avatar s-macke commented on May 14, 2024

That looks already pretty promising. Unfortunately you can't do much at the moment. I can basically click in the menus. What do you think about implementing Minesweeper or Solitar?

from v86.

copy avatar copy commented on May 14, 2024

Regarding the virtio gpu driver: Sounds like a cool project, but I'm not convinced that there are big performance gains from this. v86 currently implements Bochs VBE extensions, which provide a linear frame buffer. The only improvements the virtio driver seems to have over that are pixel formats and a hardware cursor. Am I missing something here?

@warpcoil Very nice. Maybe some interpreters like Python or PowerShell? Have you tried .NET applications? If this is mature enough, MS Office would be very interesting. How about Firefox?

Do you need something from us? I have fixed a pretty serious CPU bug in 6978f96, make sure to upgrade if you haven't already.

from v86.

s-macke avatar s-macke commented on May 14, 2024

I partly have implemented virtio gpu today. It is indeed just a little bit more advanced framebuffer what you get. However I hope for some hardware acceleration in the future. Also I want to understand how it works.

from v86.

warpcoil avatar warpcoil commented on May 14, 2024

@s-macke Yes, long way to go. winemine (aka minesweeper) is on the way.

@copy PowerShell is a no no because of copyright/licensing. Python, yes definitely wouldn't take too much, I'll look at that today. Firefox would work but I'd say performance would be an issue, along with MS Office.

I'm thinking smaller apps for now to reduce bugs.

CPU bug todo, but issue not yet encountered.

from v86.

s-macke avatar s-macke commented on May 14, 2024

Still haven't implemented it fully. But I see one good reason. Looks like you only have to update the screen on certain commands. Like during the flush command. A background job, which permanently updates the screen with 10-30fps would be unnecessary. Especially when switching to a worker thread this might be important.

from v86.

ysangkok avatar ysangkok commented on May 14, 2024

Closing since my suggestion suffers from the XY problem: Instead of defining specific benchmark for graphics and suggesting how to achieve it, I suggested a specific way that I thought would speed up graphics. As noted by copy above:

I'm not convinced that there are big performance gains

So I'll close this. Bugs should be actionable unlike this one.

from v86.

hello-smile6 avatar hello-smile6 commented on May 14, 2024

@warpcoil Your server's down.

from v86.

warpcoil avatar warpcoil commented on May 14, 2024

@hello-smile6 Yeah, that was years ago i.e. before WebAssembly. The project stalled for a while as time was always an issue. I don't currently use v86 in this project and switched to libx86emu (which does compile with Emscripten). I'll bring that back up online at some point.

from v86.

hello-smile6 avatar hello-smile6 commented on May 14, 2024

@hello-smile6 Yeah, that was years ago i.e. before WebAssembly. The project stalled for a while as time was always an issue. I don't currently use v86 in this project and switched to libx86emu (which does compile with Emscripten). I'll bring that back up online at some point.

Okay

from v86.

PurpleVoidEpic avatar PurpleVoidEpic commented on May 14, 2024

@hello-smile6 Yeah, that was years ago i.e. before WebAssembly. The project stalled for a while as time was always an issue. I don't currently use v86 in this project and switched to libx86emu (which does compile with Emscripten). I'll bring that back up online at some point.

is it online yet?

from v86.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.