Commit graph

537 commits

Author SHA1 Message Date
Marek Olšák
f47c9b0880 gallium: add depth clamp to the interface 2010-07-21 22:54:34 +02:00
Keith Whitwell
d350695a6b gallium: remove pointless bitfield restrction in pipe_vertex_element
This used to be a somewhat packed struct, but no longer.  Remove the
last remaining bitfield tag.
2010-07-21 16:30:38 +01:00
José Fonseca
467928c6e0 gallium: Ensure prototypes are wrapped in extern "C".
Fixes MSVC build failure due to inconsistent _ReadWriteBarrier
prototype.
2010-07-14 16:15:56 +01:00
José Fonseca
c6c62164c3 gallium: Add a macro for memory barriers. 2010-07-14 14:38:02 +01:00
José Fonseca
5e2437a232 gallium: Add a new PIPE_ARCH_SSSE3 define for SSSE3 compiler support. 2010-07-14 14:38:02 +01:00
Brian Paul
b273928140 gallium: bump PIPE_MAX_SHADER_INPUTS/OUTPUTS to 32 2010-07-08 11:03:54 -06: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
nobled
fd7de146f6 pipe: Add PIPE_OS_HURD
One tiny step toward porting Gallium to the GNU/Hurd kernel
(and fixing Debian bug #585618).

Signed-off-by: Corbin Simpson <MostAwesomeDude@gmail.com>
2010-06-24 06:45:36 -07:00
Zack Rusin
e433b73dd2 gallium: add a timestamp disjoint query
allows application to not only request the frequency of the TIME_ELAPSED
clock but also to detect if that frequency was consistent throughout the
entire bracketed range of graphics commands.
2010-06-22 12:58:04 -04:00
Zack Rusin
b6c360b46c gallium: add a new query
to figure out if gpu is finished with all of the previously issues commands
2010-06-22 12:58:04 -04:00
Zack Rusin
101f792a2a gallium: add a temporary array register file
like normal temporaries, but allows to define a number of distinct
arrays, all of which make it explicit that they contain /indexable/
registers.
as a side-effect we're adding support for multi-dimensional destination
registers.
The whole thing looks like this:
DCL TEMPX[0][0..128]  # 0 array with 128 registers

ADD TEMPX[0][0], IN[0], IMM[0]
ADD TEMPX[0][1], IN[0], IMM[0]
ABS OUT[0], TEMPX[0][TEMP[0]]
2010-06-18 13:46:44 -04:00
Zack Rusin
2b221e11da gallium: add a new register file - immediate array
allows one to specify a safe (bound checked) array
filled with immediates. it works just like a const
array and declares much like our current immediates.
2010-06-18 13:46:44 -04:00
Zack Rusin
53bd9796a1 gallium/softpipe/draw: support samplers in geometry shaders 2010-06-11 13:31:52 -04:00
Zack Rusin
d4ef0f6c67 geometry shaders: make gs work with changable primitives and variable number of vertices
lots and lots of fixes for geometry shaders. in particular now we work when the gs
emits a different primitive than the one the pipeline was started with and also
we work when gs emits more vertices than would fit in the original buffer.
2010-06-09 11:13:34 -04:00
Zack Rusin
be7d8ddf0c gallium: add basic support for stream output queries 2010-06-08 06:28:11 -04:00
Zack Rusin
34f7681669 gallium: adjust the query interface to support custom types
we need to change it to support composite types
2010-06-08 06:28:11 -04:00
Zack Rusin
3a7fc2e4f3 gallium: rename draw_auto to draw_stream_output, plus fix a comment
Brian spotted those
2010-06-08 06:28:11 -04:00
Zack Rusin
2c22b8e61d gallium: make draw auto work and add relevant caps and docs 2010-06-08 06:28:11 -04:00
Zack Rusin
ba5975dd32 gallium: add interface for DrawAuto and implement it in softpipe 2010-06-08 06:28:11 -04:00
Zack Rusin
c9db97c822 gallium: a lot more complete implementation of stream output
interface wise we have everything needed by d3d10 and gl transform feedback.
the draw module misses implementation of some corner cases (e.g. when stream
output wants different number of components per output than normal rendering
paths)
2010-06-08 06:28:10 -04:00
Zack Rusin
a45b7f47ee gallium: basic and initial implementation of the stream output interface
aka transform feedback
2010-06-08 06:28:10 -04:00
Dave Airlie
42ebe3dfd9 mesa/st: add support for EXT_texture_swizzle.
This passes on r300g, the only bit I'm not really sure about is the handling
of the sampler_view in st_atom_texture.c, I unreference it there if the swizzle
value changes and I also have to create a new set of functions to create a new
one since the u_sampler.c ones don't handle swizzle so much.

adds r300g + softpipe enables, I think other drivers could pass easily enough.

Signed-off-by: Dave Airlie <airlied@redhat.com>
2010-06-05 16:53:43 +10:00
Roland Scheidegger
992382762a Merge branch 'gallium-newclear'
Conflicts:
	src/gallium/state_trackers/python/p_context.i
2010-06-03 17:46:14 +02:00
Roland Scheidegger
a6e5c6c000 gallium: rename clearRT / clearDS to clear_render_target / clear_depth_stencil
more consistent with rest of gallium naming conventions.
Also rename driver-internal names for these the same.
2010-06-03 16:33:25 +02:00
Chia-I Wu
ba26631d0d Define PUBLIC to dllexport on MSVC.
Define PUBLIC to __declspec(dllexport) when _MVC_VER is defined.
2010-05-31 11:31:07 +08:00
Roland Scheidegger
0cd70b554c gallium: clear interface changes
clears were a bit limited in gallium:
- no scissoring (OGL only) nor explicit rectangle list (d3d9)
- no color/stencil masks (OGL only)
- no separate depth/stencil clears (d3d9/d3d10/OGL)
- cannot really clear single color buffer (only with resource_fill_region)

Additionally, d3d can clear surfaces not currently bound to the framebuffer.

It is, however, not easy to find some common ground what a clear should be able
to do, due to both API requirements and also hw differences (a case which might
be able to use a special clear path on one hw might need a "normal" quad render
on another).

Hence several clear methods are provided, and a driver should implement all of
them.
- clear: slightly modified to also be able to clear only depth or stencil in a
  combined depth/stencil surface. This is however optional based on driver
  capability though ideally it wouldn't be optional. AFAIK this is in fact
  something used by applications quite a bit.
  Otherwise, for now still doesn't allow clearing with scissors/mask (or single
  color buffers)
- clearRT: clears a single (potentially unbound) color surface. This was formerly
  roughly known as resource_fill_region. mesa st will not currently use this,
  though potentially would be useful for GL ClearBuffer.
- clearDS: similar to above except for depth stencil surfaces.

Note that clearDS/clearRT currently handle can handle partial clear. This might
change however.
2010-05-28 23:57:47 +02:00
Roland Scheidegger
3293bcdc80 Merge branch 'gallium-msaa'
Conflicts:
	src/mesa/state_tracker/st_gen_mipmap.c
	src/mesa/state_tracker/st_texture.c
2010-05-21 20:02:22 +02:00
Keith Whitwell
ef9b4d20d7 Merge branch 'gallium-front-ccw' 2010-05-21 15:41:06 +01:00
Roland Scheidegger
379db6a36b gallium: clean up resource_copy_region function
Previously, surface_copy was said to allow overlapping blits, and it was
"optional". However, some state trackers actually assumed it is always present,
and quite some code (like in u_blit) assumed overlapping isn't allowed.
Hence, resource_copy_region (and in the same spirit, resource_fill_region) is
now mandatory, but overlapping blits are no longer allowed. A driver can plug
in the cpu fallback util_resource_copy_region if it does not want to provide its
own implementation, though this is not optimal.
2010-05-17 21:02:24 +02:00
Roland Scheidegger
6272d7632a gallium: another interface change for multisampling
due to popular request, use nr_samples parameter in is_format_supported()
instead of new is_msaa_supported() query.
This makes it easily possible to query if a format with a given sample count
is also supported not only as render target, but for sampler views (note that
texture sampling from multisampled resources isn't supported yet).
It is not quite how dx10 format msaa queries work, but we might need to revisit
format queries completely in the future anyway.
2010-05-17 20:52:08 +02:00
Keith Whitwell
0bd1cbcd0d gallium: convert rasterizer state to use gl-style front/back concepts
Use front/back instead of cw/ccw throughout.
Also, use offset_point/line/fill instead of offset_cw/ccw.

Brings gallium representation of this state into line with its main
user, and also what turns out to be the most common hardware
representation.

This fixes a long-standing bias in the interface towards the
architecture of the software rasterizer.
2010-05-14 13:04:42 +01:00
Vinson Lee
1775829f8c gallium: Add tokens for Cygwin. 2010-05-13 01:25:07 -07:00
José Fonseca
bfc702d1e7 gallium: Add new fine grained PIPE_CAP_xx for shader limits.
PIPE_CAP_GLSL and PIPE_CAP_SM3 not removed yet, as opcode support is not
yet covered.
2010-05-12 14:11:28 +01:00
José Fonseca
e1238b5cad gallium: Make PIPE_CAP_xxx enums. 2010-05-12 14:11:28 +01:00
Roland Scheidegger
0ae2f59c02 Merge commit 'origin/master' into gallium-msaa 2010-05-04 15:58:29 +02:00
José Fonseca
d288698a76 gallium: Remove loop register file.
It was only used for D3D's REP/END/BGNFOR/ENDFOR. D3D's aL register is
just like another address register now.
2010-05-03 10:53:32 +01:00
Roland Scheidegger
7662e3519b Merge commit 'origin/master' into gallium-msaa 2010-04-30 15:27:13 +02:00
Mathias Fröhlich
cdbd5f4203 gallium: EXT_timer_query support.
Signed-off-by: Corbin Simpson <MostAwesomeDude@gmail.com>
2010-05-17 12:05:18 -07:00
Marek Olšák
07ff65925f gallium: remove forward declarations of non-existent objects 2010-05-14 19:00:56 +02:00
Roland Scheidegger
9a966b93c0 gallium: fix glaring bugs in last commit 2010-04-27 16:25:50 +02:00
Roland Scheidegger
aac2cccccf gallium: interface changes for multisampling
add function to set sample mask, and state for alpha-to-coverage and
alpha-to-one. Also make it possible to query for supported sample count
with is_msaa_supported().

Use explicit resource_resolve() to resolve a resource. Note that it is illegal
to bind a unresolved resource as a sampler view, must be resolved first (as per
d3d10 and OGL APIs, binding unresolved resource would mean that special texture
fetch functions need to be used which give explicit control over what samples
to fetch, which isn't supported yet).

Also change surface_fill() and surface_copy() to operate directly on resources.
Blits should operate directly on resources, most often state trackers just used
get_tex_surface() then did a blit. Note this also means the blit bind flags are
gone, if a driver implements this functionality it is expected to handle it for
all resources having depth_stencil/render_target/sampler_view bind flags (might
even require it for all bind flags?).

Might want to introduce quality levels for MSAA later.
Might need to revisit this for hw which does instant resolve.
2010-04-26 19:51:25 +02:00
Brian Paul
d888812324 gallium: use better param name 2010-04-22 14:39:12 -06:00
Brian Paul
50d77c79fb gallium: fix comment language, remove dangling comment 2010-04-22 11:33:26 -06:00
Brian Paul
a2a01853f3 gallium: replace pipe_resource::_usage with pipe_resource::usage 2010-04-20 10:00:03 -06:00
José Fonseca
a6171a9dd9 Merge branch 'gallium-index-bias' 2010-04-20 11:07:08 +02:00
Brian Paul
347f783606 gallium: remove trailing comma 2010-04-28 10:07:23 -06:00
José Fonseca
a5e032853a gallium: Drop BGNFOR, ENDFOR, REP, and ENDREP opcodes.
Arcane DX9 opcodes that never were emitted by Mesa and have no DX10
counterpart. Slated for removal for quite some time now.
2010-04-27 21:51:45 +01:00
José Fonseca
c184da9505 gallium: Add index bias parameter to draw_elements and friends.
indexBias corresponds to:
- BaseVertexIndex parameter of D3D9's
  IDirect3DDevice9::DrawIndexedPrimitive method
- BaseVertexLocation parameter of ID3D10Device::DrawIndexed

Although a positive indexBias can be easily be implemented in Gallium by
adding indexBias*stride to each vertex buffer base offset, a negative
indexBias cannot, as the final vertex buffer offset could be negative.

I'm not aware of this functionality being exposed to GL drivers, so for
now all hardware drivers will just assert(indexBias == 0).

See also:
- http://msdn.microsoft.com/en-us/library/bb174369.aspx (D3D9)
- http://msdn.microsoft.com/en-us/library/ff556126.aspx (D3D10 DDI)
2010-04-19 08:56:46 +02:00
Luca Barbieri
5df6c43061 p_compiler: add likely/unlikely macros
Defined like the Linux kernel.

A explanatory comment is included.
2010-04-18 15:29:21 +02:00
Brian Paul
97831efdb0 gallium: comments and whitespace fixes 2010-04-16 08:21:49 -06:00