Brian Paul [Tue, 25 Mar 2008 18:27:32 +0000 (12:27 -0600)]
mesa: fix some issues in _mesa_combine_programs()
Use a temporay register to connect outputs of first program to inputs of
second program.
Also, fix bug in replace_registers(): didn't search/replace DstReg.
Keith Whitwell [Tue, 25 Mar 2008 18:15:58 +0000 (18:15 +0000)]
draw: vertex fetch can be validated too early leading to an assertion... disable
Keith Whitwell [Tue, 25 Mar 2008 18:09:25 +0000 (18:09 +0000)]
draw: don't use fetch_and_store for bypass_vs mode, it's not quite right
Brian Paul [Tue, 25 Mar 2008 17:32:31 +0000 (11:32 -0600)]
mesa: append fog instructions after parsing if a fog option is set
Drivers don't have to worry about it then.
Brian Paul [Tue, 25 Mar 2008 17:22:57 +0000 (11:22 -0600)]
mesa: when negating scalar src args, use NEGATE_XYZW, not NEGATE_X
This makes things easier on the back-end when generating GPU code.
José Fonseca [Tue, 25 Mar 2008 17:47:39 +0000 (17:47 +0000)]
Fix typo
Keith Whitwell [Tue, 25 Mar 2008 15:17:53 +0000 (15:17 +0000)]
draw: take primitive into account when deciding if the pipeline is active
José Fonseca [Tue, 25 Mar 2008 11:37:54 +0000 (11:37 +0000)]
gallium: Use debug_get_option for GETENV
José Fonseca [Tue, 25 Mar 2008 11:37:24 +0000 (11:37 +0000)]
gallium: Fix default option on Windows.
Brian Paul [Tue, 25 Mar 2008 01:59:59 +0000 (19:59 -0600)]
gallium: don't enable stencil test if no stencil buffer.
Also, if not doing two-sided stencil, set back-face state = front-face state.
Brian [Tue, 25 Mar 2008 01:36:44 +0000 (19:36 -0600)]
gallium: be smarter about picking the sampler unit for pstipple, aaalines
Also, if the app really uses all available sampler/texture units, don't just
die. Just use the last sampler for the pstipple or aaline texture.
Brian [Tue, 25 Mar 2008 00:49:56 +0000 (18:49 -0600)]
gallium: fix a few bugs, warnings in the p_debug code
added missing _ to a _debug_printf() call.
Brian [Tue, 25 Mar 2008 00:32:48 +0000 (18:32 -0600)]
gallium: move sampler_unit field to pstip_fragment_shader since it's per-shader
Also, fix another texture refcounting bug.
Brian [Tue, 25 Mar 2008 00:31:01 +0000 (18:31 -0600)]
gallium: save/restore samplers in draw_textured_quad()
Brian Paul [Mon, 24 Mar 2008 23:20:52 +0000 (17:20 -0600)]
mesa: call glutDestroyWindow (help find mem leaks)
Brian Paul [Mon, 24 Mar 2008 23:20:22 +0000 (17:20 -0600)]
gallium: fix a few texture border/mipmap glitches found w/ conform
Brian Paul [Mon, 24 Mar 2008 18:59:54 +0000 (12:59 -0600)]
gallium: check SamplersUsed to determine if texture needed, as in st_atom_sampler.c
Otherwise, we were sometimes setting texture state but not the corresponding
sampler state.
Brian [Mon, 24 Mar 2008 22:31:15 +0000 (16:31 -0600)]
gallium: make a copy of the vertex shader's token array.
This solves problems when the state tracker frees the token array when the
draw module still needs it.
Brian [Mon, 24 Mar 2008 22:26:45 +0000 (16:26 -0600)]
gallium: use pipe_texture_reference() in a few places (fixes refcounting bugs)
Brian [Mon, 24 Mar 2008 22:24:32 +0000 (16:24 -0600)]
gallium: added tgsi_num_tokens() function to return number of tokens in token array.
Maybe move to a different file someday.
José Fonseca [Mon, 24 Mar 2008 22:30:33 +0000 (22:30 +0000)]
gallium: Simple cross platform get-opt system.
Uses getenv on Linux, and a memory mapped text file on Windows.
It supports boolean options, flags, and plain strings.
José Fonseca [Mon, 24 Mar 2008 20:18:59 +0000 (20:18 +0000)]
gallium: cleanup p_debug
Now debug_printf is disabled on release builds. Use debug_error or
_debug_printf to output messages on release versions.
Brian [Mon, 24 Mar 2008 18:51:50 +0000 (12:51 -0600)]
gallium: move filter assignment out of loop
Brian [Mon, 24 Mar 2008 18:50:28 +0000 (12:50 -0600)]
gallium: fix REALLOC() to copy smaller of old/new sizes
José Fonseca [Mon, 24 Mar 2008 18:25:31 +0000 (18:25 +0000)]
gallium: Protect operator precedence in macro.
Brian Paul [Mon, 24 Mar 2008 17:55:29 +0000 (11:55 -0600)]
gallium: free bitmap fragment shaders, misc clean-up
Brian Paul [Mon, 24 Mar 2008 17:46:41 +0000 (11:46 -0600)]
gallium: add missing cso_save_samplers() call
Michal Krol [Mon, 24 Mar 2008 15:50:39 +0000 (16:50 +0100)]
gallium: Remove util_gen_mipmap_filter().
Brian [Mon, 24 Mar 2008 14:53:16 +0000 (08:53 -0600)]
gallium: pass the filter mode to util_gen_mipmap().
Remove util_gen_mipmap_filter() when no longer used.
Michal Krol [Mon, 24 Mar 2008 14:09:34 +0000 (08:09 -0600)]
gallium: tweak coords in u_gen_mipmap code
Keith Whitwell [Mon, 24 Mar 2008 10:53:26 +0000 (10:53 +0000)]
draw: pre-declare referenced structs
Keith Whitwell [Mon, 24 Mar 2008 10:52:20 +0000 (10:52 +0000)]
Revert "draw: Fix #include order to fix Linux build."
This reverts commit
a6d17bf671d6bfbb187a62ba14b9ad08fb5dafe1.
Michel Dänzer [Mon, 24 Mar 2008 09:56:12 +0000 (09:56 +0000)]
draw: Fix #include order to fix Linux build.
Keith Whitwell [Sun, 23 Mar 2008 21:55:19 +0000 (21:55 +0000)]
draw: check need_pipeline() in passthrough
Keith Whitwell [Sun, 23 Mar 2008 21:54:44 +0000 (21:54 +0000)]
draw: tweak the definition of draw_need_pipeline, fix minor bug
Keith Whitwell [Sun, 23 Mar 2008 21:31:23 +0000 (21:31 +0000)]
draw: fix crlf
Keith Whitwell [Sun, 23 Mar 2008 21:31:14 +0000 (21:31 +0000)]
draw: rename emit functions to match pipe_format names
Keith Whitwell [Sun, 23 Mar 2008 20:36:00 +0000 (20:36 +0000)]
draw: restructure fetch/emit as a pair of function calls
Michal Krol [Sun, 23 Mar 2008 19:39:35 +0000 (20:39 +0100)]
gallium: Add util_gen_mipmap_filter().
We need a way to specify the type of minification filter
used to downsample mipmap levels.
The old util_gen_mipmap() retains its behaviour and uses
LINEAR filter.
José Fonseca [Sun, 23 Mar 2008 19:38:11 +0000 (19:38 +0000)]
gallium: Fix memory leak.
pipe cso's were being destroyed, but the hash elements themselves not.
proper fix is IMHO add a destructor callback to cso_hash.
José Fonseca [Sun, 23 Mar 2008 18:57:35 +0000 (18:57 +0000)]
gallium: Remove the debug_mask_* stuff.
Overcomplex and not much different from using a global variable...
José Fonseca [Sun, 23 Mar 2008 18:52:37 +0000 (18:52 +0000)]
gallium: Fix typo.
José Fonseca [Sun, 23 Mar 2008 18:38:10 +0000 (18:38 +0000)]
gallium: Memory debugging utilities.
There are no known tools for windows kernel memory debugging, so this is a
simple set of malloc etc wrappers.
Enabled by default on win32 debug builds
José Fonseca [Sun, 23 Mar 2008 18:30:53 +0000 (18:30 +0000)]
gallium: wrap decls in extern "C"
Keith Whitwell [Sun, 23 Mar 2008 18:21:00 +0000 (18:21 +0000)]
draw: fix some unsigned vs ushort confusion
Middle-end elements are ushort, but prior to that have to treat all
elements as unsigned to avoid wrapping and/or overruns.
Keith Whitwell [Sun, 23 Mar 2008 16:44:59 +0000 (16:44 +0000)]
gallium: beginnings of draw module vertex rework
Trying to put a structure in place that we can actually optimize.
Initially just implementing a passthrough mode, this will fairly soon
replace all the vertex_cache/prim_queue/shader_queue stuff that's so
hard to understand...
Split the vertex processing into a couple of distinct stages:
- Frontend
- Prepares two lists of elements (fetch and draw) to be processed
by the next stage. This stage doesn't fetch or draw vertices, but
makes the decision which to draw. Multiple implementations of this
will implement different strategies, currently just a vcache
implementation.
- MiddleEnd
- Takes the list of fetch elements, fetches them, runs the vertex
shader, cliptest, viewport transform on them to produce a
linear array of vertex_header vertices.
- Passes that list of vertices, plus the draw_elements (which index
into that list) onto the backend
- Backend
- Either the existing primitive/clipping pipeline, or the vbuf_render
hardware backend provided by the driver.
Currently, the middle-end is the old passthrough code, and it build hardware
vertices, not vertex_header vertices as above. It may be that passthrough
is a special case in this respect.
Brian [Sat, 22 Mar 2008 16:29:30 +0000 (10:29 -0600)]
gallium: fix a few more shader-related mem leaks
Brian [Sat, 22 Mar 2008 16:27:55 +0000 (10:27 -0600)]
use ctx->Driver.DeleteProgram() in a few more places
Brian [Sat, 22 Mar 2008 15:42:59 +0000 (09:42 -0600)]
gallium: free samplers, textures in destroy()
Brian [Sat, 22 Mar 2008 15:15:23 +0000 (09:15 -0600)]
gallium: remove temporary _screen suffix from function names
Brian [Sat, 22 Mar 2008 15:12:52 +0000 (09:12 -0600)]
gallium: fix a few mem leaks when deleting programs
Brian [Sat, 22 Mar 2008 15:12:27 +0000 (09:12 -0600)]
gallium: fix mem leak (fee pstipple stage)
Brian [Sat, 22 Mar 2008 15:12:02 +0000 (09:12 -0600)]
delete default programs with ctx->Driver.DeleteProgram()
José Fonseca [Sat, 22 Mar 2008 10:05:55 +0000 (10:05 +0000)]
gallium: Remove pedantic asserts.
Move these to a higher level instead.
Ian Romanick [Fri, 21 Mar 2008 18:20:49 +0000 (11:20 -0700)]
cell: Generate blend / depth test code when state atom is created
Code generation should be performed when the device-specific state
atom is created, not when it is bound.
Ian Romanick [Fri, 21 Mar 2008 18:15:49 +0000 (11:15 -0700)]
cell: Change code-gen for CONST_COLOR blend factor
Previously the constant color blend factor was compiled into the
generated code. This meant that the code had to be regenerated each
time the constant color was changed. This doesn't fit with the model
used in Gallium.
As-is, the code could be better. The constant color is loaded for
every quad processed, even if it is not used. Also, if a lot of (1-x)
blend factors are used, 1.0 will be loaded and reloaded into registers
many times.
Ian Romanick [Fri, 21 Mar 2008 17:25:58 +0000 (10:25 -0700)]
Tabs to spaces
Ian Romanick [Fri, 21 Mar 2008 17:23:52 +0000 (10:23 -0700)]
cell: Remove unnecessary default_blend work-around
I suspect that there was some other bug in the blend code-gen that
made this work-around necessary.
Brian [Fri, 21 Mar 2008 21:54:27 +0000 (15:54 -0600)]
gallium: fix const buffer update bug
If only glUniform is called between two renderings, the const buffers weren't
getting updated. Need to set the _NEW_PROGRAM flag in st_upload_constants()
as that's the dirty flag set by glUniform.
Fixes glean tapi2 test.
Brian [Fri, 21 Mar 2008 20:20:07 +0000 (14:20 -0600)]
Refactor PBO validate/map code.
We always need to do PBO validation, so do that in core Mesa before calling driv
er routine.
cherry-picked from Mesa/master.
Brian Paul [Fri, 21 Mar 2008 19:44:27 +0000 (13:44 -0600)]
gallium: implement PBO operations for glDraw/ReadPixels and glBitmap
At this time there are no optimizations for directly blitting between
buffer objects and surfaces (always go through mappings).
glean pbo test passes now
Brian Paul [Fri, 21 Mar 2008 19:43:07 +0000 (13:43 -0600)]
add a number of PBO validate/map/unmap functions
Helper functions for (some) drivers, including swrast.
cherry-picked from Mesa/master
Brian [Fri, 21 Mar 2008 18:32:48 +0000 (12:32 -0600)]
Fix some PBO breakage.
In _mesa_Bitmap, can't early return if bitmap ptr is NULL, it may be an offset
into a PBO. Similarly for _mesa_GetTexImage.
Brian [Fri, 21 Mar 2008 16:03:23 +0000 (10:03 -0600)]
i915: added to-do note about setting the max_lod register to get proper min/mag filter selection
Brian Paul [Fri, 21 Mar 2008 17:06:08 +0000 (11:06 -0600)]
mesa: minor code re-org
Brian Paul [Fri, 21 Mar 2008 17:05:02 +0000 (11:05 -0600)]
gallium: use is_format_supported(PIPE_FORMAT_DXT5_RGBA) to check if s3tc is supported
The PIPE_CAP_S3TC token will be deprecated.
Brian Paul [Fri, 21 Mar 2008 17:03:53 +0000 (11:03 -0600)]
gallium: added DXT formats (preliminary, will probably change)
Brian Paul [Fri, 21 Mar 2008 16:51:21 +0000 (10:51 -0600)]
gallium: use is_format_supported() to determine if GL_EXT_texture_sRGB is supported
Brian Paul [Fri, 21 Mar 2008 16:50:26 +0000 (10:50 -0600)]
gallium: document is_format_supported()'s type param
Brian Paul [Fri, 21 Mar 2008 16:45:33 +0000 (10:45 -0600)]
gallium: PIPE_FORMAT_TYPE_ comments
Brian Paul [Fri, 21 Mar 2008 16:43:56 +0000 (10:43 -0600)]
gallium: added sRGB formats
Brian Paul [Fri, 21 Mar 2008 16:38:56 +0000 (10:38 -0600)]
gallium: additional comments, fix typos, etc
Michel Dänzer [Fri, 21 Mar 2008 12:14:06 +0000 (12:14 +0000)]
gallium: Update scons build for state tracker files added/removed.
Ian Romanick [Fri, 21 Mar 2008 01:17:48 +0000 (18:17 -0700)]
cell: Fix several bugs in blend code-gen
- Alpha factor set to a _COLOR mode was mishandled
- Cases when either dst factor or src factor was ZERO were mishandled
- MIN and MAX cases were backwards
- Case when blend was disabled was mishandled
- Incorrect comments about number of instructions generated
The tests blendminmax and blendsquare run correctly.
Ian Romanick [Fri, 21 Mar 2008 00:36:31 +0000 (17:36 -0700)]
cell: Call the correct function to generate blending code
Cut-and-paste for the lose. :(
Ian Romanick [Fri, 21 Mar 2008 00:36:05 +0000 (17:36 -0700)]
cell: Fix bus error when there is no depth buffer
Ian Romanick [Thu, 20 Mar 2008 00:29:39 +0000 (17:29 -0700)]
cell: Use code-gen for alpha blend
So far this is only tested when GL_BLEND is disabled.
Brian Paul [Thu, 20 Mar 2008 23:08:07 +0000 (17:08 -0600)]
gallium: catch some out of memory conditions in the texture image code.
st_finalize_texture()'s return code now indicates success/fail instead of
presence of texture border (which we discard earlier).
Brian [Thu, 20 Mar 2008 21:22:20 +0000 (15:22 -0600)]
gallium: set fb.width/height
Brian [Thu, 20 Mar 2008 21:21:55 +0000 (15:21 -0600)]
gallium: enable vp input semantic info
Brian [Thu, 20 Mar 2008 21:03:43 +0000 (15:03 -0600)]
gallium: use new framebuffer width, height fields
Brian [Thu, 20 Mar 2008 21:02:59 +0000 (15:02 -0600)]
cell: use pipe_framebuffer_state.width, height
Brian [Thu, 20 Mar 2008 21:02:32 +0000 (15:02 -0600)]
gallium: assign framebuffer width, height
Brian [Thu, 20 Mar 2008 21:02:10 +0000 (15:02 -0600)]
gallium: unused var silence warning
Brian [Thu, 20 Mar 2008 21:01:44 +0000 (15:01 -0600)]
gallium: added width, height to pipe_framebuffer_state
Brian [Thu, 20 Mar 2008 20:50:17 +0000 (14:50 -0600)]
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.
Brian [Thu, 20 Mar 2008 20:49:56 +0000 (14:49 -0600)]
gallium: glBitmap code now separated from glDraw/CopyPixels code
Brian [Thu, 20 Mar 2008 20:27:14 +0000 (14:27 -0600)]
gallium: create one vertex buffer and re-use
Brian [Thu, 20 Mar 2008 20:26:51 +0000 (14:26 -0600)]
gallium: use sizeof(vertex buffer)
Brian [Thu, 20 Mar 2008 20:20:25 +0000 (14:20 -0600)]
gallium: Y-invert blit depending on framebuffer orientation
Brian [Thu, 20 Mar 2008 20:17:06 +0000 (14:17 -0600)]
gallium: in clear_with_quad() check fb orientation, invert Y if needed
José Fonseca [Thu, 20 Mar 2008 20:34:46 +0000 (20:34 +0000)]
gallium: Give some chance for the table to actually grow.
Michal Krol [Thu, 20 Mar 2008 19:34:03 +0000 (20:34 +0100)]
gallium: Fix build on Windows.
Michal Krol [Thu, 20 Mar 2008 19:25:40 +0000 (20:25 +0100)]
gallium: Fix build on Windows.
Keith Whitwell [Thu, 20 Mar 2008 19:25:44 +0000 (19:25 +0000)]
gallium: remove unused local var
Brian [Thu, 20 Mar 2008 16:46:44 +0000 (10:46 -0600)]
gallium: create one vertex buffer and re-use, also enable bypass_clipping
Quad clears should be a little more efficient now.
Brian [Thu, 20 Mar 2008 16:44:51 +0000 (10:44 -0600)]
gallium: create vertex buffer once and re-use.
Brian [Thu, 20 Mar 2008 16:44:27 +0000 (10:44 -0600)]
gallium: added util_draw_vertex_buffer()
Brian [Thu, 20 Mar 2008 15:15:24 +0000 (09:15 -0600)]
gallium: temporarily disable the memcmp() in cso_set_framebuffer()
The memcmp() fails to detect buffer size changes...
Brian [Thu, 20 Mar 2008 15:13:51 +0000 (09:13 -0600)]
gallium: use the utility pasthrough shaders
This avoids the Mesa->TGSI translation step.