Commit graph

580 commits

Author SHA1 Message Date
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
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
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
Jakob Bornecrantz
e47d32d721 gallium: Remove drm_api and all references to it 2010-06-24 02:15:50 +02: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
Keith Whitwell
9d343f4ba1 graw: add parse_geometry_shader helper 2010-06-07 19:38:30 +01:00
Jakob Bornecrantz
76aed4b070 gallium: Add drm driver interface
This interfacre replaces the drm_api api it works very much the same
way as drm_api but with the exception that its meant for the target
to implement it. And it does not export a get function and neither a
destroy function.
2010-06-06 12:29:28 +01:00
Keith Whitwell
cd73360e48 include/st: new file swrast_screen_create.h 2010-06-07 16:34:55 +01: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
Jakob Bornecrantz
b9706886db drm_api: Remove type argument from create screen callback
With the removal of DRI1 support there where no use of this argument,
some drivers didn't even properly check it.
2010-05-25 19:05:07 +01:00
Jakob Bornecrantz
395b605e19 gallium: Remove dri1_api.h and winsys support for DRI1
Since DRI1 support was dropped from st/dri it
makes no sense to keep this code around.
2010-05-25 19:04:11 +01:00
Jakob Borncrantz
4db0c76019 st_api: Give get_egl_image arguments directly to the function 2010-05-21 23:29:05 +01:00
Jakob Bornecrantz
a93f9f343a gallium: Fix invalidate framebuffer with old libGL libraries 2010-05-21 21:25:07 +01:00
Jakob Bornecrantz
5f66363f8e st_api: Add get param function to st_manager 2010-05-21 21:25:07 +01: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
Jakob Bornecrantz
0f9b496916 graw: Make functions public 2010-05-12 22:47:15 +01: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
Brian Paul
382eb1a728 gallium: remove trailing comma in enum list 2010-05-04 21:18:55 -06: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
Keith Whitwell
431a51b9af Merge commit 'origin/graw-tests' 2010-05-19 14:04:16 +01: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
Keith Whitwell
15321a55e5 graw: combine graw_init and graw_create_window functions
Different environments seem to want to create these in different
orders.  Abstract over this by combining the calls.
2010-05-14 12:19:57 +01:00
Keith Whitwell
7375d7a5c9 graw: move towards glut-like interface, add tri.c 2010-05-14 12:19:57 +01:00
Roland Scheidegger
9a966b93c0 gallium: fix glaring bugs in last commit 2010-04-27 16:25:50 +02:00