Commit Graph

35297 Commits

Author SHA1 Message Date
Brian Paul 3d6101245b llvmpipe: don't crash/assert on out of memory
Check for null pointers and return early, etc.
2010-06-29 15:40:19 -06:00
Brian Paul 249c6735dd llvmpipe: restore call to lp_setup_update_state()
This undoes part of commit 8be645d53a
and fixes fd.o bug 28822 as well as other regressions.

The 'draw' module may issue additional state-change commands while
we're inside the draw_arrays/elements() call so it's important to
check for updated state at this point.
2010-06-29 15:19:01 -06:00
Jakob Bornecrantz 172f3f5eac egl: Check for drm winsys not just the driver name
Also fix pipe_radeon.so not building
2010-06-29 18:25:49 +01:00
José Fonseca bb6ca7b3f7 draw: Add inline keyword to inline function.
Otherwise gcc will warn about unusued functions.
2010-06-29 14:30:44 +01:00
Jakob Bornecrantz 218da1ef34 i915g: Fix copy pasto 2010-06-29 12:36:40 +01:00
Jakob Bornecrantz 006d02a911 egl: Fix gallium build when EGL is not installed on system 2010-06-29 12:28:41 +01:00
Jakob Bornecrantz eebb048753 i915g: Add missing egl pipe file 2010-06-29 12:28:15 +01:00
Chia-I Wu 4cb853402b egl: Remove st/egl probe code.
It is no longer needed.
2010-06-29 17:16:20 +08:00
Chia-I Wu afcea9b115 egl: Do not call drv->Initialize with global mutex locked. 2010-06-29 17:16:20 +08:00
Chia-I Wu a81ef14228 st/egl: Build a single EGL driver.
This change makes st/egl build a single egl_gallium.so and multiple
st_<API>.so and pipe_<HW>.so.  When a display is initialized, the
corresponding pipe driver will be loaded.  When a context is created,
the corresponding state tracker will be loaded.

Unlike DRI drivers, no ABI compatibility is maintained.  egl_gallium,
pipe drivers and state trackers should always be distributed as a single
package.  As such, there is only a single src/gallium/targets/egl/ that
builds everything for the package.
2010-06-29 17:16:20 +08:00
Chia-I Wu d5ab243d5a st/egl: Move module loading code to targets.
Several changes are made.  libegl.a no longer defines _eglMain.  It
defines functions to create and destroy a _EGLDriver instead.  The
creation function is called by the targets.  It takes an egl_g3d_loader
as its argument.  The loader is defined by the targets and is in charge
of creating st_api and pipe_screen.  This allows us to move the module
loading code to targets.  Lastly, the modules are now loaded as the
respective contexts are created.
2010-06-29 17:16:20 +08:00
Chia-I Wu d8e0e11456 st/egl: Reorganize targets.
Merge all targets into targets/egl/.  The target produces
egl_gallium_<HW>.so for each pipe driver and st_<API>.so for each client
APIs.  This enables us to further merge egl_gallium_<HW>.so into
egl_gallium.so later.
2010-06-29 17:16:20 +08:00
Chia-I Wu ea05299ce5 st/egl: One driver per hardware.
Merge multiple egl_<platform>_<pipe>.so into a single
egl_gallium_<pipe>.so.  The environment variable EGL_PLATFORM is now
used to modify the return value of _eglGetNativePlatform.
2010-06-29 17:16:19 +08:00
Chia-I Wu f66a4e20c1 st/egl: Introduce native_platform.
Move native_get_name, native_create_probe, native_get_probe_result, and
native_create_display into struct native_platform, and add
native_get_platform to get a handle to the struct.
2010-06-29 17:16:19 +08:00
Chia-I Wu f9574c5f89 st/egl: Make api_OpenGL support OpenGL ES.
This allows api_OpenGL.so to support OpenGL ES.
2010-06-29 17:16:19 +08:00
Chia-I Wu 57c654324f st/mesa: Add support for multiple APIs.
Add st_gl_api_create_es1 and st_gl_api_create_es2 to create OpeGL ES 1.1
and OpenGL ES 2.0 contexts respectively.
2010-06-29 17:16:19 +08:00
Chia-I Wu 982aba97c5 st_api: Remove st_context::is_visual_supported.
The callback is used by st/vega to check if a visual specifies the
depth/stencil format.  It forces st/vega to be loaded by st/egl to
perform the check.  As noted in EGL spec, the depth/stencil format of a
visual should not affect OpenVG.  It should be better to ignore the
field and always allocate the depth/stencil texture.
2010-06-29 17:16:19 +08:00
Zack Rusin da7bd6a90e mesa: initial support for ARB_geometry_shader4
laying down the foundation for everything and implementing most of the
stuff.
linking, gl_VerticesIn and multidimensional inputs are left.
2010-06-28 22:53:21 -04:00
Marek Olšák 0b50fcbd55 util: reference surfaces and sampler views in blitter when saving them
Ooops. This should possibly fix some bugs...
2010-06-29 01:54:26 +02:00
Jakob Bornecrantz 7e1ce791c7 i915g: Add Galahad to targets 2010-06-28 22:33:39 +02:00
Jakob Bornecrantz 77cd1a989b r300g: Galahad for scons as well 2010-06-28 22:27:51 +02:00
Jakob Bornecrantz 2da9d80a4b r300g: Add target defines for Galahad 2010-06-28 22:27:08 +02:00
Jakob Bornecrantz 40d4b414d9 glhd: Build with scons 2010-06-28 22:27:06 +02:00
Jakob Bornecrantz d12c4c5a62 glhd: Re-integrate with the debug system 2010-06-28 21:52:03 +02:00
Jakob Bornecrantz 2932dd6374 glhd: Remove leftover file 2010-06-28 21:37:03 +02:00
Jakob Bornecrantz a01e0afd9f Merge branch 'gallium-drm-driver-drescriptor'
Conflicts:
	src/gallium/state_trackers/egl/x11/native_dri2.c
	src/gallium/state_trackers/egl/x11/native_x11.c
	src/gallium/state_trackers/egl/x11/native_x11.h
	src/gallium/state_trackers/xorg/xorg_driver.c
	src/gallium/winsys/radeon/drm/radeon_drm.c
2010-06-28 21:14:45 +02:00
José Fonseca 250b92f3bb llvmpipe: set WRITE_ALL only a per-tile basis in lp_resource_copy(). 2010-06-28 16:33:52 +01:00
José Fonseca a9e0fda070 llvmpipe: Actually flush in lp_resource_copy()
The cpu_access is redundant in a software rasterizer.
2010-06-28 16:33:21 +01:00
José Fonseca 8be645d53a llvmpipe: Ensure outdated framebuffer state is not reused in lp_setup_bind_framebuffer().
We were starting a scene whenever lp_setup_get_vertex_info() was called by
the draw module. So when when all primitives were culled/clipped, not only
did we create a new scene for nothing, but we end up using the old scene
with the old framebuffer state instead of a new one.

Fix consists in:
- don't call lp_setup_update_state() in lp_setup_get_vertex_info() -- no
  longer necessary
- always setting the scene state before binning a command -- query
  commands were bypassing it
- assert no old scene is reused in lp_setup_bind_framebuffer()
2010-06-28 16:33:05 +01:00
Marek Olšák ce7a70b8b4 r300g: fix a compile error on non-debug builds 2010-06-27 17:15:23 +02:00
Marek Olšák 57c3f70018 util: fix a memory leak in blitter 2010-06-27 15:13:14 +02:00
Marek Olšák 0a19d57b84 r300g: separate the hyperz state and pipelined FB regs out of the FB state 2010-06-27 15:13:14 +02:00
Marek Olšák 808ad22592 r300g: release referenced objects in destroy_context 2010-06-27 15:13:13 +02:00
Marek Olšák 639a7daa85 r300g: reference surfaces in set_framebuffer_state 2010-06-27 15:13:13 +02:00
Marek Olšák 408a886127 r300g: group debug messages 2010-06-27 15:13:13 +02:00
Marek Olšák 0a9510814e r300g: turn rasterizer state into a command buffer 2010-06-27 15:13:13 +02:00
Marek Olšák c200c47e6c r300g: move emission of the MSPOS regs into the framebuffer state
Now the question is whether we are allowed to ignore gl_rasterization_rules and
pipe_rasterizer_state::multisample. The former is invariant anyway and
I think the latter would need re-emitting the AA state which is quite costly,
considering that it implicitly flushes the whole pipeline (all AA regs
in the AA state are *unpipelined*).
2010-06-27 15:13:13 +02:00
Marek Olšák bb47d1c26f r300g: turn invariant state into a command buffer 2010-06-27 15:13:12 +02:00
Marek Olšák 8959f48bce r300g: initialize some crucial state in the first CS 2010-06-27 15:13:08 +02:00
Marek Olšák fcacc6a076 r300g: introduce VAP invariant state
Unlike other invariant states, this one must be emitted after VAP flush.
2010-06-26 17:57:20 +02:00
Marek Olšák 8350d1d6f1 r300g: immediate mode cleanup 2010-06-26 17:47:32 +02:00
Marek Olšák 5acdfdbf42 r300g: update my notes about fastfill and zbuffer compression 2010-06-26 17:43:58 +02:00
Marek Olšák f39800b339 r300g: enum r300_blitter_op is a bitmask 2010-06-26 17:35:56 +02:00
Marek Olšák 8924201530 draw: fix build with llvm and make 2010-06-26 14:01:41 +02:00
Vinson Lee ecd8c66d6a mesa: Remove unnecessary header. 2010-06-26 00:47:52 -07:00
Vinson Lee 2943f1ed8c st/mesa: Remove unnecessary headers. 2010-06-26 00:38:05 -07:00
Vinson Lee 3443b581fb draw: Remove unnecessary header. 2010-06-26 00:31:57 -07:00
Zack Rusin 4503bd33da draw: deleted by mistake 2010-06-25 20:06:53 -04:00
Zack Rusin a5c44986a3 draw: initialize headers in the none post paths as well 2010-06-25 19:58:09 -04:00
Zack Rusin 8ebfcf31eb draw: limit the number of vertex shader variants kept around
we used to create and cache unltimited number of variant, this
change limits the number of variants kept around to a fixed number.
the change is based on a similar patch by Roland for llvmpipe fragment
shaders.
2010-06-25 19:33:27 -04:00