Age | Commit message (Collapse) | Author |
|
If the driver can't create a PIPE_FORMAT_R16G16B16A16_SNORM surface, create
an accum surface using a shallower format and taller height. Since only the
accum buffer code accesses the surface the actual format doesn't really
matter, just that there's enough memory.
|
|
|
|
|
|
|
|
We'll apply this function to GLSL vertex programs. In GLSL it's legal to
read and write varying (output) vars in a vertex shader. But reading from
an output register isn't supported by all hardware. This routine examines
the vertex program for that condition and rewrites it to use temporary
registers where needed.
|
|
Also, use new _mesa_free_instructions() in a few places.
|
|
|
|
|
|
Encode edgeflags (and reset_stipple info) into the top two bits of the
fetch elements. This info could be moved elsewhere, but for now we
can live with a 1<<30 maximum element size...
Also use the primitive decomposition code from draw_prim.c verbatim, as
it includes all this stuff and is known to work.
|
|
|
|
This allows to keep the list small without the overhead of full walks.
|
|
|
|
Because winddk's implemenation does not handle floats.
|
|
GLSL Vertex and fragment shaders now have independent parameter buffers.
A new gl_uniform_list is used to keep track of program uniforms and where
each uniform is located in each shader's parameter buffer.
This makes better use of the space in each buffer and simplifies shader linking.
|
|
|
|
Mesa always packs 4 immediates into each parameter/const buffer slot.
I think we were just getting lucky with this as it was.
|
|
update_samplers()
|
|
|
|
|
|
|
|
Also, make sure that field is copied/updated in the program clone and combine functions.
Without this we weren't getting SAMP declarations in the TGSI shaders.
|
|
Also, implement support in the draw module. We were hardwiring these
to one for quite a long time...
Currently using a draw_set_edgeflags() function, may be better to push
the argument into the draw_arrays() function. TBD.
|
|
As st_gl_flush() isn't used by st_finish() anymore, it doesn't have to make
sure pipe->flush() always gets called.
|
|
This is enough for the current purpose of st_finish(), which is to wait for
things to settle down before context teardown.
|
|
Add facility for draw_vbuf.c to reset these vertex ids on flushes.
Pre-initialize vertex ids correctly.
|
|
|
|
Add entrypoints to glapi XML file and regenerate files.
Implement glStencilOpSeparateATI().
Consolidate some code in stencil.c
|
|
|
|
Previously all drivers were in twosided mode since they checked for
stencil.enable[1] flag which was a copy of stencil.enable[0]. Note that drivers
should not reference stencil[1] state (other than the enable) if twosided
stenciling is disabled (for now the stencil state is still copied but for
instance clear_with_quads won't provide useful values in there).
Also, use _TestTwoSide instead of TestTwoSide since results would be
bogus otherwise if using APIs with implicit two side stencil enable
(i.e. core ogl 2.0).
|
|
|
|
|
|
|
|
Precompute tiles_per_row. Use ushort multiplies in a few places. New comments.
|
|
GL_MESA_ycbcr_texture
Update texture format selection code too.
|
|
|
|
|
|
Move init of these items to new st_init_clear().
|
|
|
|
|
|
Since bypass_clipping is set and we're specifying quad vertexes in window
coords, setup identity viewport.
|
|
|
|
|
|
|
|
This handles the case where bypass_vs is set, but vertices need to go
through the pipeline for some reason - eg unfilled polygon mode.
Demonstrates how to drive the pipeline from inside one of these things.
|
|
|
|
Leaving it until 'run' is bad as the primitive is pretty much state
for some drivers and so needs to get set early. In some drivers
this is used to determine things like vertex format, etc -- by the
time we get to 'run', it's too late to change this.
|
|
Use this to set up hardware rasterization (if your hardware can
do it) or otherwise turn on various tweaks in the draw module.
Currently only hooked up to point biasing code.
|
|
|
|
|
|
|