Keith Whitwell
7f2ba80025
llvmpipe: keep copy of framebuffer state in setup context
Avoids crashes when first frame is rendered before window is mapped.
Avoids potential issue where fb state is changed before setup context is
flushed.
15 yıl önce
Brian Paul
ab94381930
llvmpipe: do final the pixel in/out triangle test in the fragment shader
The test to determine which of the pixels in a 2x2 quad is now done in
the fragment shader rather than in the calling C code. This is a little
faster but there's a few more things to do.
Note that the step[] array elements are in a different order now. Rather
than being in row-major order for the 4x4 grid, they're in "quad-major"
order. The setup of the step arrays is a little more complicated now.
So is the course/intermediate tile test code, but some lookup tables
help with that.
Next steps:
- early-cull 2x2 quads which are totally outside the triangle.
- skip the in/out test for fully contained quads
- make the in/out comparison code tighter/faster.
15 yıl önce
Brian Paul
e288796c92
llvmpipe: added lp_build_int32_vec4_type()
15 yıl önce
Brian Paul
2297bc9233
llvmpipe: refactor lp_build_cmp() to use lp_build_compare()
15 yıl önce
Brian Paul
cdbcd96fdf
llvmpipe: tighten up an assertion
15 yıl önce
Brian Paul
276b8523e8
llvmpipe: use 1ULL to be ready for 64-bit arithmetic someday
15 yıl önce
Brian Paul
55879440d7
llvmpipe: fix broken TGSI_OPCODE_FRC codegen
15 yıl önce
Brian Paul
6e2a93739e
llvmpipe: fix broken lp_build_abs()
15 yıl önce
Brian Paul
b06b3a4925
llvmpipe: update file list in Makefile
15 yıl önce
Keith Whitwell
663750d556
llvmpipe: rename bins to scene
It was pretty confusing having an entity named "bin" and another named
"bins", not least because sometimes there was a need to talk about >1
of the "bins" objects, which couldn't be pluralized any further...
Scene is a term used in a bunch of places to talk about what a binner
operates on, so it's a decent choice here.
15 yıl önce
Keith Whitwell
39dd7108bf
llvmpipe: rename queue size to count
15 yıl önce
Keith Whitwell
314d3cd751
llvmpipe: rename one of the two rasterize_bins functions
15 yıl önce
Brian Paul
6cbb1219a3
llvmpipe: checkpoint: plug in the new fencing code
This has only been very lightly tested. More work to come.
15 yıl önce
Brian Paul
4b70af918d
llvmpipe: added lp_rast_fence() bin function
15 yıl önce
Brian Paul
9323740738
llvmpipe: added lp_rast_get_num_threads()
15 yıl önce
Brian Paul
8736ee1e7d
llvmpipe: added lp_bin_get_num_bins()
15 yıl önce
Brian Paul
2876b684de
llvmpipe: remove old fence code, compile new lp_fence.c file
15 yıl önce
Brian Paul
edbaca6fd1
llvmpipe: initial fence implementation
15 yıl önce
Brian Paul
92dc0f92b0
llvmpipe: implement lp_rast_load_color()
15 yıl önce
Brian Paul
2bce5c195f
llvmpipe: checkpoint: more thread/queuing changes
Now mapping/unmapping the framebuffer is done by a rasteizer thread
rather than the main calling thread.
15 yıl önce
Brian Paul
24d894e557
gallium: comments and minor re-org in p_thread.h
There's more work to do in this file:
1. Implement condvars for Windows via Win32 CONDITION_VARIABLE type.
2. Implement barriers for Windows
3. Try to get rid of PIPE_THREAD_HAVE_CONDVAR (only used in trace driver)
4. Why the 2 in _P_THREAD2_H_?
15 yıl önce
Brian Paul
0fc90dfa28
gallium: added pipe_barrier type and functions
15 yıl önce
Brian Paul
de31b0e60c
llvmpipe: remove unused lp_rasterizer::fb field
15 yıl önce
Brian Paul
156eabbaf9
llvmpipe: improve framebuffer/surface code
15 yıl önce
Brian Paul
9d0faea58c
llvmpipe: fix-up #includes
15 yıl önce
Brian Paul
544882eb58
llvmpipe: fix inverted util_framebuffer_state_equal() result
15 yıl önce
Brian Paul
d1fa748cdb
gallium/util: added util_unreference_framebuffer_state()
15 yıl önce
Brian Paul
8f2a173663
gallium/util: simplify util_framebuffer_state_equal()
And copy width, height in util_copy_framebuffer_state().
15 yıl önce
Brian Paul
205da96fc6
llvmpipe: remove unused fb parameter
15 yıl önce
Brian Paul
4e67f10331
llvmpipe: minor comment fix
15 yıl önce
Brian Paul
9509f73c21
llvmpipe: checkpoint: use empty/full bin queues
15 yıl önce
Brian Paul
9a6567f1ed
llvmpipe: updated comment
15 yıl önce
Brian Paul
6d810e5a7b
llvmpipe: simplify llvmpipe_set_framebuffer_state()
15 yıl önce
Brian Paul
a67f39810b
gallium/util: added framebuffer compare, copy util funcs
15 yıl önce
Brian Paul
721b5167dc
llvmpipe: added some bin queue debug code
15 yıl önce
Brian Paul
21008441e4
llvmpipe: updated comments
15 yıl önce
Brian Paul
96689d451a
llvmpipe: added some debug/info code
15 yıl önce
Brian Paul
ad3c16c127
llvmpipe: simplify the tiles_x, tiles_y code a bit
15 yıl önce
Brian Paul
edf11da7f8
progs/demos/gloss: press 'n' to advance by one frame
15 yıl önce
Brian Paul
3bee8c2e7c
llvmpipe: use the empty_bins queue now
15 yıl önce
Brian Paul
288ea9770a
progs/demos: call glutDestroyWindow() in gloss.c
15 yıl önce
Brian Paul
d7dbc66636
llvmpipe: checkpoint: begin plugging in bin queue code
15 yıl önce
Brian Paul
ea35993e74
llvmpipe: added new lp_bin_queue.[ch] files
The queues will be used for keeping track of full and empty bins so
we can overlap setup with the rasterization threads.
15 yıl önce
Brian Paul
22b07b8be4
llvmpipe: use new lp_setup_get_current_bins() function
This stub function will interface to the queue system...
15 yıl önce
Brian Paul
88e62b33dc
llvmpipe: more bin functions for create/destroy/queries
15 yıl önce
José Fonseca
7f457acabc
llvmpipe: Use number of CPUs as default number of threads.
Also bump MAX_THREADS to 8.
15 yıl önce
Brian Paul
73e13c33fd
llvmpipe: remove some left-over debug code
15 yıl önce
Brian Paul
aab1ceceec
llvmpipe: implement threaded rasterization
The LP_NUM_THREADS env var controls how many threads are created.
The default (and max) is 4, for now.
If LP_NUM_THREADS = 0, threading is not used.
15 yıl önce
Brian Paul
87c9ceaea2
gallium: added pipe_semaphore and related code
15 yıl önce
Brian Paul
3a06c113c7
llvmpipe: repartition lp_rasterizer state for threading
Some of the state is per-thread. Put that state in new lp_rasterizer_task
struct.
15 yıl önce