Quantcast
Channel: Timothy Lottes
Viewing all articles
Browse latest Browse all 434

Opinion: GL 4.4 and Other Stuff

$
0
0
Should be obvious, these are personal opinions only...

On GL 4.4
OpenGL 4.4 is out. Lots of great updates in 4.4 including buffer storage, and stencil texture.

Here are some of the things that are not in GL right now that I'd like to have. I want ability to sleep() for an approximate compile time constant amount of clock cycles without busy waiting (this is S_SLEEP on GCN) and adjust warp/wavefront priority (S_SETPRIO on GCN). Two basics required to do efficient locks, and also useful for lock-free algorithms. For low latency communication I want direct access to the GDS with intrinsics matching what is possible. For basic simple profiling I want access to the GPU clock(), S_MEM_TIME on GCN. For optimization, precision, and ease of use, I want to be able to turn off flush to zero on subnormals in graphics shaders (won't work on Intel, but fine on AMD and NV). For thread communication, efficient 1-bit scan, etc, I'd like access to something like CUDA's ballot(), S_BCNT1_I32_B64 on GCN, which provides a 32-bit NV, or 64-bit AMD bitmask, of a bool of all threads in a warp/wavefront. Also for 1-bit scan I would like access to V_MBCNT_LO_U32_B32 on GCN and lane mask on NV. I'd like access to thread sharing in graphics and compute, this is LDS_SWIZZLE_B32 on GCN. This enables a quad of pixels to communicate easily. I'd like AMD to open up ability to access the programmable sample pattern (used by driver temporal AA) so I don't have to keep on rendering on an angle to get a better sampling pattern. I'd like access to the dual compute engines on GCN, with ability to use semaphores to manually explicitly sync with rendering command submission. I'd like ability to alias memory of my resources, specifically of render targets which I know are never used at the same time, and to be able to have different sizes of a texture of the same format overlap in memory. I'd like just the trivial basic control to enable the DX style of clip space so I don't take the massive precision loss (in the shader when using INT24 depth buffer, and precision loss in depth directly when using FP32. I'd like ability to bake down pre-built command buffer chunks, patch and replay at runtime to avoid nearly all of CPU overhead......


On Platforms
Consoles. Microsoft's every Xbox One can be used for development is a great idea. If Sony does this with the PS4, I'd bet the uptake will be huge. There is a chicken and egg problem, anyone who is interested in the PS4 to do things that are not possible on the PC because of the API wall cannot build a prototype which would convince anyone to ship out a devkit. Ability to take a retail console, sign an NDA, then flash the box (even if it bricks the PS4 for standard gaming) and start developing, could change that.

Windows. I'd like to be able to boot without using secure boot. I'd like to be able to uninstall Metro. I don't want ads. I'd like to be able to use, develop and upgrade Windows on ARM just like I use Windows on x86. I'd like a smaller and faster operating system each revision with fewer hidden background tasks. I'd like DirectX to not be tied to OS revision.

Mobile. Mobile Kepler is awesome. Fully featured desktop GPU in a mobile footprint. IMO the hardware begs for a new kind of platform, a platform which is a fully functional desktop when plugged in and also a fully functional mobile device when on the road. What is badly needed here IMO is OEMs shipping OEM installed Linux desktops on mobile devices with Android virtualized. ARM since A15 can do this. Hold the power button to switch from Android fullscreen to Linux fullscreen or back. Hold the power button longer to trigger a shutdown. Easy. Android virtualized could self update and would appear as a standard Google device to the user. Android virtualized could also run in a window on the Linux desktop. Linux would be running native and providing access to Steam, Chrome/Firefox on desktop, etc. Build an open platform which can grow. All this needs is someone to trim the crap out of Linux and make a distro which is really good. This distro would be trimmed to only what is required, a Linux kernel, busybox, X11, a good Window Manager, nothing running in the background (no syslogs, cron, etc), trivial easy to setup and upgrade, auto updates for GPU drivers, auto updates for the kernel, root access to the machine. Applications are packed into self-contained read-only archives which are mounted read-only on use (double click to both mount and autorun) and are trivial single file drag and drop installs or uninstalls. Only things like the system dynamic linker library and OpenGL would be shared. Almost all of the system would be mounted read-only, except for instance tmp and the home path. The user experience could be instant and awesome (like a console).

Viewing all articles
Browse latest Browse all 434

Trending Articles