Commit Graph

12088 Commits

Author SHA1 Message Date
Andreas Kling
e923cf6624 strace: Port to LibMain :^) 2021-12-25 11:12:03 +01:00
Andreas Kling
2bd1a62ce1 LibCore: Add syscall wrapper for ptrace() 2021-12-25 11:05:30 +01:00
Andreas Kling
e815bf5d1f PDFViewer: Add a basic set of pledges 2021-12-25 10:58:30 +01:00
Andreas Kling
50e090071c WindowServer: Skip over destroyed windows in WindowSwitcher::draw()
I encountered a WindowServer crash due to null-pointer dereference in
this function, so let's protect against it by simply skipping over
nulled-out WeakPtrs.

I added a FIXME about how we ideally wouldn't be in this situation in
the first place, but that will require some more investigation.
2021-12-25 10:41:06 +01:00
Daniel Bertalan
a2aae6a582 LibCrypto: Remove redundant __builtin_memset() call
This call caused GCC 12's static analyzer to think that we perform an
out-of-bounds write to the v_key Vector. This is obviously incorrect,
and comes from the fact that GCC doesn't properly track whether we use
the inline storage, or the Vector is allocated on the heap.

While searching for a workaround, Sam pointed out that this call is
redundant as `Vector::resize()` already zeroes out the elements, so we
can completely remove it.

Co-authored-by: Sam Atkins <atkinssj@serenityos.org>
2021-12-24 14:35:33 -08:00
Brian Gianforcaro
d6f1d11aa0 pro: Convert to serenity_main(..) 2021-12-24 14:29:52 -08:00
Brian Gianforcaro
74948950bb ini: Convert to serenity_main(..) 2021-12-24 14:29:52 -08:00
Brian Gianforcaro
831242f32a env: Convert to serenity_main(..) 2021-12-24 14:29:52 -08:00
Brian Gianforcaro
81c98502f3 pwd: Convert to serenity_main(..) 2021-12-24 14:29:52 -08:00
Brian Gianforcaro
a62669ebcf LibCore: Add Core::System::getcwd() wrapper 2021-12-24 14:29:52 -08:00
Nihal Jere
4574a58f6f Spider: Add animation when drawing cards 2021-12-24 05:49:52 -08:00
Brian Gianforcaro
49749e279a LibC: Implement _setjmp and _longjmp
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.
2021-12-24 05:26:21 -08:00
Sam Atkins
eefe471dce SystemMonitor: Remove unused SortingProxyModel include 2021-12-24 05:11:52 -08:00
Sam Atkins
f6633a1026 LibGUI+Userland: Make SortingProxyModel::create() return ErrorOr
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.
2021-12-24 05:11:52 -08:00
Stephan Unverwerth
c72a996542 LibSoftGPU: Add method to copy texels between images
Adds a method `copy_texels()` to class `Image` that copies a rect of
texels from source image to destination.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
5e9d99474d LibGL: Remove image storage from MipMap
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.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
4c944eaa41 LibGL: Remove sampling code from Sampler2D
Texture sampling now happens entirely in SoftGPU thus this class will
now only be used to hold the sampler configuration.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
39995548e4 LibGL+LibSoftGPU: Add method to query device info
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.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
1a758d7bf2 LibSoftGPU: Move enums into separate file 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
f7c40b25ac LibSoftGPU: Remove GLenum used for selecting rendered primitive type
This removes the last reference to LibGL from LibSoftGPU. The GLenum
has been replaced by our own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
de0069188f LibSoftGPU: Remove OpenGL type for polygon mode
Replaces the GLenum used to setup polygon mode in RasterizerOptions with
our own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
f4d29bf665 LibSoftGPU: Remove OpenGL type for fog mode
Replaces the GLenum used to set up the fog mode in RasterizerOptions
with out own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
74ed7713fa LibSoftGPU: Remove OpenGL type for depth test func
Replaces the GLenum used in the RasterizerConfig for selecting the depth
test function with out own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
33e601800c LibSoftGPU: Remove OpenGL type for draw buffer selection
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.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
1904be0370 LibSoftGPU: Remove OpenGL type for culled side selection
Replaces the GLenum in RasterizerConfig, that selects the triangle sides
to be culled, with two booleans.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
24c76741e8 LibSoftGPU: Remove OpenGL type for front face selection
Replaces the GLenum used for selecting the frontface in the rasterizer
config with out own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
c720cd00db LibSoftGPU: Remove OpenGL type for alpha blend factors
Replaces the GLenum used for configuring alpha blend factors in the
SoftGPU device with out own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
40bd73bdef LibSoftGPU: Remove OpenGL type for alpha test func
Replaces the OpenGL enum used for setting the alpha test func in
RasterizerOptions with out own enum.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
7d49015403 LibSoftGPU: Remove simple OpenGL types from RasterizerConfig
Replace GLfloat and GLboolean types in RasterizerConfig with their c++
native equivalent.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
d8c17c8838 LibGL+LibSoftGPU: Use device samplers for rendering
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.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
f69de5e850 LibGL: Synchronize device config before rendering if anything changed 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
39545d4b49 LibGL: Attach device image to texture object and upload image data 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
908a6339ec LibSoftGPU: Add legacy texture env mode to sampler config 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
b41ad28654 LibSoftGPU: Add methods to read and write image data
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.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
2a72d14336 LibSoftGPU: Make samplers part of device
This adds a sampler array to the device implementation and adds a method
`set_sampler_config` to configure samplers.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
b8bb72abbe LibSoftGPU: Add device method for creating images 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
91ccf9958f LibSoftGPU: Add Image class
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.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
a9e27b9a0f LibSoftGPU: Rename class SoftwareRasterizer to Device
This class does everything related to rendering now. It is the software
implementation of a full GPU device.
2021-12-24 05:10:28 -08:00
Stephan Unverwerth
178b28b469 LibGL: Remove unused GLStruct.h 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
251f3c007f LibGL+LibSoftGPU: Move Vertex and Triangle structs to LibSoftGPU 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
73ba208ee7 LibGL+LibSoftGPU: Move primitive assembly and clipping into LibSoftGPU 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
2f35135743 LibGL+LibSoftGPU: Add face culling state to rasterizer options 2021-12-24 05:10:28 -08:00
Stephan Unverwerth
ad3d5d43bd LibGL+LibSoftGPU: Move rendering related code to LibSoftGPU library
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.
2021-12-24 05:10:28 -08:00
Elyse
46b1c2d609 SoundPlayer: Add a keyboard shortcut 'M' to mute the player
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.
2021-12-24 00:19:01 -08:00
Elyse
8f2161c0ee SoundPlayer: Add 'mute' methods to Player
These methods allow us to mute/unmute the player without needing to
modify the volume level that it has.
2021-12-24 00:19:01 -08:00
Elyse
fb109ab3b4 AudioServer: Ignore 'muted' clients when computing the 'output mix' 2021-12-24 00:19:01 -08:00
Elyse
bb747c471f AudioServer: Add a 'self_muted' state to each client connection
This new state will allow us to ignore muted clients when computing the
'output mix' in the Mixer.
2021-12-24 00:19:01 -08:00
Elyse
ce5f5f543f AudioServer: Add 'mute' member and methods to ClientAudioStream
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.
2021-12-24 00:19:01 -08:00
Elyse
c78a8b94c5 Everywhere: Refactor 'muted' to 'main_mix_muted' in all AudioConnections
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.
2021-12-24 00:19:01 -08:00
Max Trussell
60fa8ac109 AudioServer/Mixer: Fix remaining samples underflow
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.
2021-12-24 00:05:35 -08:00