summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGPU
AgeCommit message (Collapse)Author
2022-06-13LibGPU: Do not load LibSoftGPU via symlink inside SerenityLuke Wilde
For unknown reasons, unveil() does not work on symlinks. This prevents it from being used in an unveil environment such as WebContent.
2022-05-11LibGL+LibGPU+LibSoftGPU: Implement and expose glClipPlaneRKBethke
This commit implements glClipPlane and its supporting calls, backed by new support for user-defined clip planes in the software GPU clipper. This fixes some visual bugs seen in the Quake III port, in which mirrors would only reflect correctly from close distances.
2022-05-09LibGL+LibGPU+LibSoftGPU: Implement point and line drawingJelle Raaijmakers
Implement (anti)aliased point drawing and anti-aliased line drawing. Supported through LibGL's `GL_POINTS`, `GL_LINES`, `GL_LINE_LOOP` and `GL_LINE_STRIP`. In order to support this, `LibSoftGPU`s rasterization logic was reworked. Now, any primitive can be drawn by invoking `rasterize()` which takes care of the quad loop and fragment testing logic. Three callbacks need to be passed: * `set_coverage_mask`: the primitive needs to provide initial coverage mask information so fragments can be discarded early. * `set_quad_depth`: fragments survived stencil testing, so depth values need to be set so depth testing can take place. * `set_quad_attributes`: fragments survived depth testing, so fragment shading is going to take place. All attributes like color, tex coords and fog depth need to be set so alpha testing and eventually, fragment rasterization can take place. As of this commit, there are four instantiations of this function: * Triangle rasterization * Points - aliased * Points - anti-aliased * Lines - anti-aliased In order to standardize vertex processing for all primitive types, things like vertex transformation, lighting and tex coord generation are now taking place before clipping.
2022-05-09LibGL+LibGPU: Copy line width to rasterizer in `glLineWidth`Jelle Raaijmakers
2022-05-09LibGL+LibGPU: Implement `GL_LINE_SMOOTH` context parameterJelle Raaijmakers
2022-05-09LibGL+LibGPU: Implement `GL_POINT_SMOOTH` context parameterJelle Raaijmakers
2022-05-09LibGL+LibGPU: Implement `glPointSize`Jelle Raaijmakers
2022-04-09LibGL+LibSoftGPU: Add `GL_ADD` Texture EnvironmentJesse Buhagiar
2022-04-07LibGPU: Don't dlopen using absolute pathSahan Fernando
2022-04-06LibGL+LibGPU+LibSoftGPU: Load SoftGPU driver dynamicallyStephan Unverwerth
This loads libsoftgpu.so during GLContext creation and instantiates the device class which is then passed into the GLContext constructor.
2022-04-06LibGL+LibGPU+LibSoftGPU: Add virtual base class for devicesStephan Unverwerth
This adds a virtual base class for GPU devices located in LibGPU. The OpenGL context now only talks to this device agnostic interface. Currently the device interface is simply a copy of the existing SoftGPU interface to get things going :^)
2022-04-06LibGL+LibGPU+LibSoftGPU: Add virtual base class for ImagesStephan Unverwerth
This introduces a new device independent base class for Images in LibGPU that also keeps track of the device from which it was created in order to prevent assigning images across devices.
2022-04-06LibGPU+LibSoftGPU: Move RasterizerOptions into LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move Vertex.h to LibGPUStephan Unverwerth
2022-04-06LibGPU+LibSoftGPU: Move LightModelParameters into LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move TexCoordGenerationConfig into LibGPUStephan Unverwerth
2022-04-06LibGPU+LibSoftGPU: Move RasterPosition into its own header in LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move StencilConfiguration.h to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move Material.h to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move Light.h to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move SamplerConfig to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move ImageDataLayout.h to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move ImageFormat.h to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move Enums.h to LibGPUStephan Unverwerth
2022-04-06LibGL+LibGPU+LibSoftGPU: Move DeviceConfig to LibGPUStephan Unverwerth
This introduces a new abstraction layer, LibGPU, that serves as the usermode interface to GPU devices. To get started we just move the DeviceConfig there and make sure everything still works :^)