Commit graph

598 commits

Author SHA1 Message Date
Vinson Lee
1b83ede8cc graw: Include missing header in graw.h.
Include p_compiler.h for PUBLIC symbol.
2010-08-27 00:07:38 -07:00
José Fonseca
98ccee9ea6 graw: Add copyright headers to the interfaces. 2010-08-26 22:32:47 +01:00
José Fonseca
90437330e2 graw: Undo late loading of graw drivers.
Keith prefers a clean separation between graw applications and
implementations, where apps do not link libgallium.a but instead
get all functionality they need via graw interface.

Although this is not incompatible with late loading of graw drivers, it
it would make it very hard to maintain, as wrappers for every utility
symbol exposed in graw would have to be written or generated somehow.
2010-08-26 11:37:42 +01:00
Vinson Lee
121b6d68c2 gallium: Clean up header file inclusion in p_defines.h.
Remove p_format.h.
Include p_compiler.h for boolean and uint64_t symbols.
2010-08-26 01:30:50 -07:00
Vinson Lee
81ac08f89d gallium: Clean up header file inclusion in p_context.h.
Remove p_state.h.
Include p_compiler.h for boolean symbol.
Add needed forward declarations after removing p_state.h.
2010-08-26 01:21:10 -07:00
Vinson Lee
2badf0f642 graw: Include missing header in graw_dl.h.
Include p_state.h for pipe_shader_state symbol.
2010-08-26 01:14:28 -07:00
José Fonseca
f0eb02af80 graw: Dynamically load graw libraries.
This allows to build multiple graws libs simultaneously and avoid
unnecessary rebuilds of the tests.

Also remove graw_util.c from inside the graw implementation -- it was
only being provided by one implementation, and graw tests were linking
against gallium anyway.
2010-08-26 06:44:34 +01:00
Luca Barbieri
9960200d5e p_compiler: add replacement va_copy
This might technically not always be correct, because va_copy might
be a function, or a system might not have va_copy, and not work with
assignment.

Hopefully this is never the case.
Without configure tests, it doesn't seem possible to do better.
2010-08-21 00:51:29 +02:00
Luca Barbieri
72b3e3fee3 gallium: add PIPE_TEXTURE_RECT target
This allows to properly support OpenGL rectangle textures in a well
defined way, especially on drivers that don't expose
PIPE_CAP_NPOT_TEXTURES.
2010-08-20 12:03:59 +02:00
Luca Barbieri
6f3c4819ec gallium: add ALWAYS_INLINE
Used when we want to be sure the compiler inlines a large function into
an inner loop.
2010-08-11 11:27:46 +02:00
Chia-I Wu
a57f842519 gallium: Keep only pipe_context::draw_vbo.
That is, remove pipe_context::draw_arrays, pipe_context::draw_elements,
pipe_context::draw_arrays_instanced,
pipe_context::draw_elements_instanced,
pipe_context::draw_range_elements.
2010-07-29 13:45:31 +08:00
Chia-I Wu
c5e9d3114a gallium: Add pipe_context::draw_vbo and pipe_context::set_index_buffer.
This commit adds a new unified draw_vbo method to pipe_context.  Unlike
other draw methods, draw_vbo treats the index buffer as a state which is
set with set_index_buffer.
2010-07-29 13:45:30 +08:00
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
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