History log of /external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
16530fdc82cde61495c66abe704e88d7752dfdbf 03-Jan-2016 Roland Scheidegger <sroland@vmware.com> llvmpipe: scale up bounding box planes to subpixel precision

Otherwise some planes we get in rasterization have subpixel precision, others
not. Doesn't matter so far, but will soon. (OpenGL actually supports viewports
with subpixel accuracy, so could even do bounding box calcs with that).

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
af7ba989fb5a39925a0a1261ed281fe7f48a16cf 09-Dec-2015 Roland Scheidegger <sroland@vmware.com> llvmpipe: fix layer/vp input into fs when not written by prior stages

ARB_fragment_layer_viewport requires that if a fs reads layer or viewport
index but it wasn't output by gs (or vs with other extensions), then it reads
0. This never worked for llvmpipe, and is surprisingly non-trivial to fix.
The problem is the mechanism to handle non-existing outputs in draw is rather
crude, it will simply redirect them to whatever is at output 0, thus later
stages will just get garbage. So, rather than trying to fix this up (which
looks non-trivial), fix this up in llvmpipe setup by detecting this case there
and output a fixed zero directly.
While here, also optimize the hw vertex layout a bit - previously if the gs
outputted layer (or vp) and the fs read those inputs, we'd add them twice
to the vertex layout, which is unnecessary.
And do some minor cleanup, slots don't require that many bits, there was some
bogus (but harmless) float/int mixup for psize slot too, make the slots all
unsigned (we always put pos at pos zero thus everything else has to be positive
if it exists), and make sure they are properly initialized (layer and vp index
slot were not which looked fishy as they might not have got set back to zero
when changing from a gs which outputs them to one which does not).

This fixes the failures in piglit's arb_fragment_layer_viewport group
(3 each for layer and vp).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
a2a1a5805fd617e7f3cc8be44dd79b50da07ebb9 21-Jul-2015 Ilia Mirkin <imirkin@alum.mit.edu> gallium: replace INLINE with inline

Generated by running:
git grep -l INLINE src/gallium/ | xargs sed -i 's/\bINLINE\b/inline/g'
git grep -l INLINE src/mesa/state_tracker/ | xargs sed -i 's/\bINLINE\b/inline/g'
git checkout src/gallium/state_trackers/clover/Doxyfile

and manual edits to
src/gallium/include/pipe/p_compiler.h
src/gallium/README.portability

to remove mentions of the inline define.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Acked-by: Marek Olšák <marek.olsak@amd.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
3b64714da48f1654dbbf6ef5b4abe5b0c5952a9e 17-Jan-2014 Roland Scheidegger <sroland@vmware.com> llvmpipe: fix large point rasterization with point_quad_rasterization

The whole round-pointsize-to-int stuff must only be done with GL legacy
rules (no point_quad_rasterization) or all the wrong edges are lit up.
This was previously in a private branch (d3d pointsprite test complains
loudly otherwise) and got lost in a merge. However, it should certainly
apply to GL point sprite rasterization as well.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
9b96be595b93544266436ec3b22b2cbd349d180c 08-Jan-2014 José Fonseca <jfonseca@vmware.com> llvmpipe: Honour pipe_rasterizer::point_quad_rasterization.

Commit eda21d2a3010d9fc5a68b55a843c5e44b2abf8dd fixed the rasterization
of points for Direct3D but ended up breaking the rasterization of OpenGL
non-sprite points, in particular conform's pntrast.c test.

The only way to get both working is to properly honour
pipe_rasterizer::point_quad_rasterization, and follow the weird OpenGL
rule when it is false.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
eda21d2a3010d9fc5a68b55a843c5e44b2abf8dd 07-Jan-2014 José Fonseca <jfonseca@vmware.com> llvmpipe: Fix the bottom_edge_rule adjustment for points.

The adjustment needs to be applied to the y coordinates and not the x
coordinates, just like the equivalent code for lines and triangles in
lp_setup_line.c and lp_setup_tri.c.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
37de6b06821b208920ccf6fb99fbc727d0344004 07-Jan-2014 José Fonseca <jfonseca@vmware.com> llvmpipe: Respect bottom_edge_rule when computing the rasterization bounding boxes.

This was inadvertently forgotten when replacing gl_rasterization_rules
with lower_left_origin and half_pixel_center (commit
2737abb44efebfa10ac84b183c20fc5818d1514e).

This makes a difference when lower_left_origin != half_pixel_center, e.g,
D3D10.

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Zack Rusin <zackr@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
7a50d38a2bcbecc70e0dd3b49ca717e56c438f21 10-Dec-2013 Zack Rusin <zackr@vmware.com> llvmpipe: add a very useful (disabled) debugging output

Disabled by default, but it's very useful when needed.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
0319ea9ff6a9cc2eba4879fbe09c6fac137d6ce1 26-Nov-2013 Matthew McClure <mcclurem@vmware.com> llvmpipe: clamp fragment shader depth write to the current viewport depth range.

With this patch, generate_fs_loop will clamp any fragment shader depth writes
to the viewport's min and max depth values. Viewport selection is determined
by the geometry shader output for the viewport array index. If no index is
specified, then the default viewport index is zero. Semantics for this path
can be found in draw_clamp_viewport_idx and lp_clamp_viewport_idx.

lp_jit_viewport was created to store viewport information visible to JIT code,
and is validated when the LP_NEW_VIEWPORT dirty flag is set.

lp_rast_shader_inputs is responsible for passing the viewport_index through
the rasterizer stage to fragment stage (via lp_jit_thread_data).

Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: José Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
27cedd8aecccea808a35ef297477cac5fe87e476 13-Aug-2013 Zack Rusin <zackr@vmware.com> llvmpipe: fix pipeline statistics with a null ps

If the fragment shader is null then pixel shader invocations have
to be equal to zero. And if we're running a null ps then clipper
invocations and primitives should be equal to zero but only
if both stancil and depth testing are disabled.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
d6b3a193d4d525c5048ebf793e6a63fd98f92d64 31-Jul-2013 Zack Rusin <zackr@vmware.com> draw: inject frontface info into wireframe outputs

Draw module can decompose primitives into wireframe models, which
is a fancy word for 'lines', unfortunately that decomposition means
that we weren't able to preserve the original front-face info which
could be derived from the original primitives (lines don't have a
'face'). To fix it allow draw module to inject a fake face semantic
into outputs from which the backends can figure out the original
frontfacing info of the primitives.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
2e4da1f59444c550e4b1e31dd5cfec39d7ef2a26 26-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: add support for nested / overlapping queries

OpenGL doesn't support this but d3d10 does.
It is a bit of a pain as it is necessary to keep track of queries
still active at the end of a scene, which is also why I cheat a bit
and limit the amount of simultaneously active queries to (arbitrary)
16 (simplifies things because don't have to deal with a real list
that way). I can't think of a reason why you'd really want large
numbers of overlapping/nested queries so it is hopefully fine.
(This only affects queries which need to be binned.)

v2: don't copy remainder of array when deleting an entry simply replace
the deleted entry with the last one (order doesn't matter).

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
dc5dc4fd943e1da5207e0489c355e9a7ba1dff87 19-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: handle more queries

Handle PIPE_QUERY_GPU_FINISHED and PIPE_QUERY_TIMESTAMP_DISJOINT, and
also fill out the ps_invocations and c_primitives from the
PIPE_QUERY_PIPELINE_STATISTICS (the others in there should already
be handled). Note that ps_invocations isn't pixel exact, just 16 pixel
exact but I guess it's better than nothing.
Doesn't really seem to work correctly but there's probably bugs elsewhere.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
d8146f240e628e70d4c07f7e805a179f70c36e23 07-Jun-2013 Roland Scheidegger <sroland@vmware.com> llvmpipe: add support for layered rendering

Mostly just make sure the layer parameter gets passed through to the right
places (and get clamped, can do this at setup time), fix up clears to
clear all layers and disable opaque optimization. Luckily don't need to
touch the jitted code.
(Clears invoked via pipe's clear_render_target method will not work however
since the pipe_util_clear function used for it doesn't handle clearing
multiple layers yet.)

v2: per Brian's suggestion, prettify var initialization and add some comments,
add assertion for impossible layer specification for surface.

Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
c88ce3480c715ab40f4d488c86c90213b1472613 25-May-2013 Zack Rusin <zackr@vmware.com> llvmpipe: clamp scissors to be between 0 and max

We need to clamp to make sure invalid shader doesn't crash our
driver. The spec says to return 0-th index for everything that's
out of bounds.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca<jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
97b8ae429ec64003e258764db12ea69d4e978f6d 24-May-2013 Zack Rusin <zackr@vmware.com> llvmpipe: implement support for multiple viewports

Largely related to making sure the rasterizer can correctly
pick out the correct scissor box for the current viewport.

Signed-off-by: Zack Rusin <zackr@vmware.com>
Reviewed-by: José Fonseca<jfonseca@vmware.com>
Reviewed-by: Brian Paul <brianp@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
0072acd447dc6be652e63752e50215c3105322c8 18-Oct-2010 Keith Whitwell <keithw@vmware.com> Merge remote branch 'origin/master' into lp-setup-llvm

Conflicts:
src/gallium/drivers/llvmpipe/lp_setup_coef.c
src/gallium/drivers/llvmpipe/lp_setup_coef.h
src/gallium/drivers/llvmpipe/lp_setup_coef_intrin.c
src/gallium/drivers/llvmpipe/lp_setup_point.c
src/gallium/drivers/llvmpipe/lp_setup_tri.c
src/gallium/drivers/llvmpipe/lp_state_derived.c
src/gallium/drivers/llvmpipe/lp_state_fs.h
8965f042b327ad8697963e757f4607f4bb13a045 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: don't store plane.ei value in binned data

Further reduce the size of a binned triangle.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
9bf8a55c4b29d55320fc2e7875ecf0e9ca164ee8 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: slightly shrink the size of a binned triangle
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
0a1c9001037a13b69b157994e7983aa3dee158d3 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: don't pass frontfacing as a float
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
4195febeecd2d2f5571afdb90cbb185a4759f50a 15-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: reintroduce SET_STATE binner command

But bin lazily only into bins which are receiving geometry.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
986cb9d5cf60bc11c7facc19017b5432b17240f7 02-Sep-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Use lp_tgsi_info.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
ad6730fadbbeacea96322e31064ede9ea7ebad6f 08-Oct-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: fail gracefully on oom in scene creation
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
06472ad7e835813ef7c9bf8a5cd8b62a25fa9cc3 06-Oct-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Fix sprite coord perspective interpolation of Q.

Q coordinate's coefficients also need to be multiplied by w, otherwise
it will have 1/w, causing problems with TXP.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
e74955eba3fc22fcf6e9111a4e5bbc095d34d357 26-Sep-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: Fix perspective interpolation for point sprites.

Once a fragment is generated with LP_INTERP_PERSPECTIVE set for an input,
it will do a divide by w for that input. Therefore it's not OK to treat LP_INTERP_PERSPECTIVE as
LP_INTERP_LINEAR or vice-versa, even if the attribute is known to not
vary.

A better strategy would be to take the primitive in consideration when
generating the fragment shader key, and therefore avoid the per-fragment
perspective divide.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
d2149f6f2256deda180fd1a4c38cb436660e7407 30-Sep-2010 Nicolas Kaiser <nikai@nikai.net> gallium/llvmpipe: remove duplicated include

Remove duplicated include.

Signed-off-by: Brian Paul <brianp@vmware.com>
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
60a45b03c389f708c513bb2b70c5973175f01068 24-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: handle FACING interpolants in line and point setup
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
516ac2bd50ad1e71bd2a359d247532d9f18bcf99 22-Sep-2010 Brian Paul <brianp@vmware.com> llvmpipe: fix sprite texcoord setup for non-projective texturing

Normally the Mesa state tracker uses TXP instructions for texturing.
But if a fragment shader uses texture2D() that's a TEX instruction.
In that case we were incorrectly computing the texcoord coefficients
in the point sprite setup code. Some new comments in the code explain
things.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
1662c317032cf280701d7e55b028b7f0dc8afc65 20-Sep-2010 Brian Paul <brianp@vmware.com> llvmpipe: check bitshift against PIPE_MAX_SHADER_OUTPUTS
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
61fcd9aaa2bf91eb400eeb4df2ab2c7e48b3bb6c 20-Sep-2010 Brian Paul <brianp@vmware.com> llvmpipe: implement sprite coord origin modes
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
c3982c6bcdeb88f7fb1b20f8bd300db31cd7288d 20-Sep-2010 Brian Paul <brianp@vmware.com> llvmpipe: rename sprite field, add sprite_coord_origin
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
b7a5eac1f3723a369885bad369a04c456bdf1565 20-Sep-2010 Brian Paul <brianp@vmware.com> llvmpipe: clean-up, comments in setup_point_coefficient()
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
924c18da95bbc62492f8e54bd8273a4981a919dc 20-Sep-2010 Brian Paul <brianp@vmware.com> llvmpipe: reformatting, remove trailing whitespace, etc
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
5b4c43d98556c5a4806757513bcb196a724518c5 05-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: use llvm for attribute interpolant calculation

Basically no change relative to hard-coded version, but this will
be useful for other changes later.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
9f6e8e1d6b8696a3ee96cba01b2466ba7a1a8ef6 07-Sep-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: use opcodes instead of function pointers in bins

Also, move some state from rasterizer struct to the scene.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
6419ecd02ce43a2614822e228f306d4db589f317 27-Aug-2010 Keith Whitwell <keithw@vmware.com> llvmpipe: enforce fixed memory limit on scenes
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
29ec116e8f21c65250f1083830b82ff59859496d 10-Aug-2010 Hui Qi Tay <hqtay@vmware.com> llvmpipe: point sprites rasterization

Point sprites now done in the rasterizer setup code instead of
going through the draw module.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
2cd72dd4590b4510931854ed776c72563603f7ff 27-Aug-2010 Hui Qi Tay <hqtay@vmware.com> llvmpipe: native point rasterization with better pixel rasterization

A few subpixel_snap and fixed width changes.

Conflicts:

src/gallium/drivers/llvmpipe/lp_setup_point.c
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
57d84d9ca4a645ca326b66ff3b82bee0db18ac97 27-Aug-2010 Hui Qi Tay <hqtay@vmware.com> llvmpipe: native point rasterization

Conflicts:

src/gallium/drivers/llvmpipe/lp_setup_context.h
src/gallium/drivers/llvmpipe/lp_setup_line.c
src/gallium/drivers/llvmpipe/lp_setup_tri.c
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
5286dd701640976ffc328e8e85fb3830746851a1 19-Jul-2010 Hui Qi Tay <hqtay@vmware.com> llvmpipe: native rasterization for lines

Rasterize lines directly by treating them as 4-sided polygons.
Still need to check the exact pixel rasteration.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
3160cbabccf1f7d8bdf344242507b9c3082f15c6 13-Mar-2010 José Fonseca <jfonseca@vmware.com> llvmpipe: setup_context -> lp_setup_context

Otherwise IDEs and debuggers have trouble distinguishing from softpipe's
setup_context.
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c
415b271b5100d64579690111bc8eb549866865a7 09-Oct-2009 Keith Whitwell <keithw@vmware.com> llvmpipe: hook up some state, add stub line and point functions
/external/mesa3d/src/gallium/drivers/llvmpipe/lp_setup_point.c