Commit Graph

58 Commits

Author SHA1 Message Date
Brian Paul
a56a59ce74 gallium: implement full reference counting for vertex/fragment programs
Use _mesa_reference_vert/fragprog() wherever we assign program pointers.
Fixes a memory corruption bug found with glean/api2 test.
Another memory bug involving shaders yet to be fixed...

Picked from gallium-0.1
2008-05-07 08:55:33 -06:00
Brian Paul
99fba5466b gallium: use new buffer wrapper functions in p_inlines.h
This allows us to remove most of the direct references to winsys in the state tracker.
2008-04-30 10:43:59 -06:00
Brian Paul
a770d40c3d gallium: use cso_destroy_vertex/fragment_shader() functions
Also, rearrange the st_destroy_context() code a bit to prevent some
invalid/NULL ptr derefs during tear-down.
2008-04-24 12:15:05 -06:00
Brian Paul
f2b3f6cbdf gallium: reorder some of the destroy context code 2008-04-17 11:13:49 -06:00
Brian Paul
a52faa9325 gallium: remove unneeded st->haveFramebufferSurfaces field. 2008-04-09 16:09:46 -06:00
Brian Paul
ce5c867cbb gallium: streamline viewport/raster/shader state for clearing with quads
Move init of these items to new st_init_clear().
2008-04-03 12:54:32 -06:00
Brian
c62b197b52 gallium: implement a glBitmap cache
The bitmap cache attempts to accumulate a series of glBitmap calls in a
buffer to effectively render a whole bunch of bitmaps at once.

The cache can be disabled, if needed, by setting UseBitmapCache=GL_FALSE.
2008-03-28 14:53:47 -06:00
Brian Paul
7f56c8ea5f gallium: disable the selection/feedback draw module's options for wide lines, points, etc.
Disable paths that would convert points/lines to tris as that upsets selection,
feedback, rastpos.
2008-03-25 14:12:55 -06:00
Brian Paul
22a3d02254 gallium: free bitmap fragment shaders, misc clean-up 2008-03-24 11:56:05 -06:00
Brian
f6cd3778c5 gallium: glBitmap code now separe from glDraw/CopyPixels code
Also, glBitmap now re-uses the vertex buffer to avoid frequent allocations/
deallocations.  And, use u_simple_shaders utility code.
2008-03-20 15:04:08 -06:00
Brian
85e4ec6d11 gallium: use the utility pasthrough shaders
This avoids the Mesa->TGSI translation step.
2008-03-20 09:13:51 -06:00
Brian
0df877a0ee gallium: plug in and init GL_EXT_framebuffer_blit function/extension 2008-03-18 17:18:11 -06:00
Brian
339e7ec680 gallium: rework CSO-related code in state tracker
Use the code in cso_context.c rather than st_cache.c.
Basically, binding of state objects now goes through the CSO module.
But Vertex/fragment shaders go through pipe->bind_fs/vs_state() since they're
not cached by the CSO module at this time.

Also, update softpipe driver to handle NULL state objects in various places.
This happens during context destruction.  May need to update other drivers...
2008-03-11 18:55:58 -06:00
José Fonseca
6acd63a498 Code reorganization: update build.
Update the Makefiles and includes for the new paths.

Note that there hasn't been no separation of the Makefiles yet, and make is
jumping all over the place. That will be taken care shortly. But for now, make
should work. It was tested with linux and linux-dri. Linux-cell and linux-llvm
might require some minor tweaks.
2008-02-15 17:50:12 +09:00
Brian
62abcb9aac gallium: initial implemenation of auto mipmap generation in state tracker
Use hardware rendering to compute/render mipmap levels.
The fallback path (which will be used for non-renderable texture formats)
isn't working yet.
2008-02-08 15:13:49 -07:00
Keith Whitwell
1e0d30a515 gallium: rename pipe_buffer_handle to pipe_buffer, rework pipebuffer/ code
Provide an actual definition of the pipe_buffer struct,  containing
the parameters used to create the buffer, and its refcount.

Shift refcounting buffers out of the winsys interface, similar to
surfaces & textures.

Rework pipebuffer/ to reflect the fact these changes, and also Michel's
reworking of the buffer interface.
2008-01-25 20:53:31 +00:00
Brian
6128c93865 unref const buffers during context destroy 2008-01-01 10:21:21 -07:00
Brian
c664302c3e Fix problem with initial viewport/scissor size.
If an app never called glViewport, the viewport size was always 0 by 0 pixels.
Now pass initial size to st_create_framebuffer() and initialize the viewport
and scissor bounds in st_make_current().
This could also be fixed by ensuring the gl_framebuffers passed to
_mesa_make_current() were initialized to the right size.  But that involves
allocating the renderbuffers/pipe_surfaces earlier and that runs into some
other issues ATM.
Also remove obsolete createRenderbuffers param to st_create_framebuffer().
2007-12-19 13:45:00 -07:00
Brian
2d2bb35f96 Move _mesa_init_glsl_driver_functions() into shader_api.c
This allows making a bunch of functions static, and removes a state
tracker dependency on driverfuncs.c
2007-12-07 17:11:30 -07:00
Michel Dänzer
b859cdf6f1 Eliminate struct pipe_region.
Directly use struct pipe_buffer_handle for storage and struct pipe_surface for
(un)mapping.
2007-12-07 12:30:35 +01:00
Brian
601a9ea9a7 init glsl functions in st_init_driver_functions() 2007-11-07 08:20:00 -07:00
Brian
c6499a741c Determine GL extensions/limits by making pipe queries.
The state tracker calls pipe->get_param() to determine the GL limits and
which OpenGL extensions are supported.
This is an initial implementation that'll probably change...
2007-11-05 18:04:30 -07:00
Brian
91564eedcc Remove some temporary state tracker context/framebuffer_create functions. 2007-11-05 16:15:43 -07:00
Brian
e39f1b4cbe Update xlib driver to use newer state tracker context/framebuffer functions.
XMesaContext has an st_context * which contains a mesa context.
2007-11-05 15:59:55 -07:00
Brian
f221ea658b comments, tweaks 2007-11-05 09:35:31 -07:00
Brian
bffed01e27 move st_create_framebuffer() to new st_framebuffer.c file 2007-11-05 08:04:48 -07:00
Brian
794e03d392 Introduce st_framebuffer type and st_create_framebuffer(), st_make_current() 2007-11-05 08:04:48 -07:00
Brian
80d2658e12 Sketch out new create/destroy context functions which create/wrap a Mesa context. 2007-11-01 18:01:47 -06:00
Brian
2072a9c6d0 remove dead code 2007-11-01 18:01:47 -06:00
Brian
308bc50dc2 remove unneeded tnl stuff 2007-11-01 18:01:47 -06:00
Brian
8984a28338 Lift VBO/tnl stuff up out of drivers 2007-10-31 11:35:50 -06:00
Brian
d775509fb7 plug st_invalidate_state() into ctx->Driver.UpdateState
Start lifting Mesa stuff up out of winsys/driver code.
2007-10-31 11:08:07 -06:00
Brian
d6a739f6b0 Use program serial numbers to avoid re-generating fragment programs for glDrawPixels. 2007-10-30 16:13:37 -06:00
Brian
df174bdb81 added pixel_transfer_cache 2007-10-30 12:25:25 -06:00
Brian
0007cd7ba0 Alternate CopyPixels path based on get/put_tile().
For some drivers (like Xlib) it's not possible to treat the front/back color
buffers as pipe_regions.  So pipe->region_copy() won't work.  Added a new
state tracker field indicating if we can use regions for colorbuffer accesses.
This should probably be re-considered someday...
2007-10-18 15:18:55 -06:00
Brian
9f797d8cb3 Added accum function/files. 2007-10-14 11:52:00 -06:00
Brian
3bf8d2ac71 Disable vertex shader fog, compute fog in fragment shader. 2007-09-25 15:18:51 -06:00
Zack Rusin
fbb2f840ae move cso cache to the pipe directory 2007-09-18 07:20:14 -04:00
Zack Rusin
e16c045b83 Implementing a better hash, removing state_tracker dependency from the cache.
Replacing mesa's main hash with one that handles collisions, moving state_tracker
related caching to the state tracker to keep cso cache independent of it. Cleanups.
2007-09-18 06:31:22 -04:00
Zack Rusin
9780327c5d First stab at immutable state objects (create/bind/delete)
We want our state objects to be immutable, handled via the
create/bind/delete calls instead of struct propagation.
Only implementing the blend state to see how it would look like
and work.
2007-09-18 06:31:22 -04:00
Brian
b4bacd1fca Plug in selection/feedback code.
Not quite finished yet.
Selection/feedback are done with a private instance of the 'draw' module
in the state tracker.  Not quite all the draw context's state is set yet,
namely vertex format info.  Hold off on that for a bit...
2007-09-17 14:24:11 -06:00
Brian
bee148cb7d plug in rasterpos/feedback code 2007-09-10 16:28:27 -06:00
Brian
af3d6c83d2 temporarily call _mesa_enable_sw_extensions() so we can run more test progs without failing the extension checks 2007-08-21 20:18:58 -06:00
Brian
1e6d1ab6fc tell vbo module to use bufferobjs 2007-08-17 15:27:18 +01:00
Brian
e3bdd66bf6 misc changes to support vertex shaders (disabled by default) 2007-08-16 17:33:49 -06:00
Brian
24864741c5 added st_cb_queryobj.c 2007-08-11 19:57:37 +01:00
Keith Whitwell
39407fd854 Move string functions to state_tracker, add queries to pipe, winsys. 2007-08-10 16:44:07 +01:00
Keith Whitwell
5c2c056000 Handle glFlush/glFinish through the state tracker. 2007-08-10 12:58:26 +01:00
Brian
6f27aabe49 use st_cb_readpixels.c 2007-08-10 11:37:21 -06:00
Brian
64da751500 checkpoint: no longer using intel_fbo.c 2007-08-09 14:28:41 -06:00