Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
These are aliases to `setjmp()` and `longjmp()` on our system,
as our implementations don't modify the signal mask.
This is required for the syzkaller executor process.
|
|
|
|
Unfortunately, most of the users are inside constructors, (and two
others are inside callback lambdas) so the error can't propagate, but
that can be improved later.
|
|
Adds a method `copy_texels()` to class `Image` that copies a rect of
texels from source image to destination.
|
|
Images are stored on the device side. Texture2D and MipMap are now only
used to store imformation about the texture and reference to the device
image.
|
|
Texture sampling now happens entirely in SoftGPU thus this class will
now only be used to hold the sampler configuration.
|
|
This adds a method `info()` to SoftGPU that returns the name of the
hardware vendor and device name, as well as the number of texture untis.
LibGL uses the returned texture unit count to initialize its internal
texture unit array.
|
|
|
|
This removes the last reference to LibGL from LibSoftGPU. The GLenum
has been replaced by our own enum.
|
|
Replaces the GLenum used to setup polygon mode in RasterizerOptions with
our own enum.
|
|
Replaces the GLenum used to set up the fog mode in RasterizerOptions
with out own enum.
|
|
Replaces the GLenum used in the RasterizerConfig for selecting the depth
test function with out own enum.
|
|
Replaces the GLenum used in RasterizerConfig to select the draw buffer
with a simple boolean that disabled color output when the draw buffer
is set to GL_NONE on the OpenGL side.
|
|
Replaces the GLenum in RasterizerConfig, that selects the triangle sides
to be culled, with two booleans.
|
|
Replaces the GLenum used for selecting the frontface in the rasterizer
config with out own enum.
|
|
Replaces the GLenum used for configuring alpha blend factors in the
SoftGPU device with out own enum.
|
|
Replaces the OpenGL enum used for setting the alpha test func in
RasterizerOptions with out own enum.
|
|
Replace GLfloat and GLboolean types in RasterizerConfig with their c++
native equivalent.
|
|
We now sample textures from the device owned image samplers.
Passing of enabled texture units has been simplified by only passing a
list of texture unit indices.
|
|
|
|
|
|
|
|
This adds two methods, write_texels and read_texels, to the Image class.
Conversion between image formats happens automatically. The layout of
the client image data is passed in via ImageDataLayout struct.
|
|
This adds a sampler array to the device implementation and adds a method
`set_sampler_config` to configure samplers.
|
|
|
|
This serves as the storage for all image types. 1D, 2D, 3D, Cube and
image arrays.
Upon construction a full mipmap chain is generated and the image is
immutable afterwards with respect to its layout.
|
|
This class does everything related to rendering now. It is the software
implementation of a full GPU device.
|
|
|
|
|
|
|
|
|
|
This introduces a new library, LibSoftGPU, that incorporates all
rendering related features that formerly resided within LibGL itself.
Going forward we will make both libraries completely independent from
each other allowing LibGL to load different, possibly accelerated,
rendering backends.
|
|
This shortcut let us mute/unmute the player, but it still doesn't update
the volume slider because the actual volume widget can't display a muted
state.
|
|
These methods allow us to mute/unmute the player without needing to
modify the volume level that it has.
|
|
|
|
This new state will allow us to ignore muted clients when computing the
'output mix' in the Mixer.
|
|
When computing the 'output mix', the Mixer iterates over all client
audio streams and computes a 'mixed sample' taking into account mainly
the client's volume.
This new member and methods will allow us to ignore a muted client
when computing that mix.
|
|
The 'muted' methods referred to the 'main mix muted' but it wasn't
really clear from the name. This change will be useful because in the
next commit, a 'self muted' state will be added to each audio client
connection.
|
|
The `m_remaining_samples` attribute was underflowing at the end of an
audio stream. This fix guards against the underflow by only decrementing
the attribute when it is greater than zero.
I found this bug because the SoundPlayer userland application was not
correctly detecting when an audio stream was completed. This was
happening because the remaining samples being returned from the client
audio connection was an underflowed 16 bit integer instead of zero.
|
|
This fix syncs up the AudioPlayer's internal state for showing
playlist information with the AudioPlayer's GUI. Before, if the
AudioPlayer was opened with a playlist file (.m3u or .m3u8) it would
automatically show the playlist information in the GUI and set the
loop mode to playlist, but the menu options would be unchecked. In
order to hide the playlist information, the menu option would then
have to be toggled twice -- once on and again off.
|
|
There's enough line space to use readable variable names.
|
|
There's no reason as to why someone would inherit those, so might
aswell make them final.
|
|
When a file is opened and scrolled to some position and the user opens
another file, the current scroll position stays the same. That's
disorienting. Therefore, when opening another file, scroll back to the
top.
|
|
To support editing of large files it is an advantage to not load the
entire file into memory but only load whatever is needed for display at
the moment. To make it work, file access is abstracted into a socalled
HexDocument, of which there two: a memory based and a file based one.
The former can be used for newly created documents, the latter for file
based editing.
Hex documents now do track changes instead of the HexEditor. HexEditor
only sets new values. This frees HexEditor of some responsibility.
|
|
There can be cases when one wants to open a file not just for reading
but also for writing. It was already possible to have a custom open mode
for request_file, now it is also possible through the open/save dialogs.
|
|
This adds a visual clue to scrolling by clicking on the Scrollbar
gutter. This gives the user a hint that scrolling will continue in the
direction of the darkened gutter, until the mouse is released.
It is inspired by very similar behavior on old windows.
|
|
ISO C requires in section 7.2:
The assert macro is redefined according to the current state of NDEBUG
each time that <assert.h> is included.
Also add tests for `assert` multiple inclusion accordingly.
|