Commit Graph

108334 Commits

Author SHA1 Message Date
Kenneth Graunke bdc1269eb2 iris: Fix failed to compile TCS message 2019-02-21 10:26:10 -08:00
Kenneth Graunke fbf3124771 iris: Rework tiling/modifiers handling
We were being very picky about things being Y tiled.  But, not
everything can be - for example, > 16382 surfaces on SKL GT1-3
have to fall back to linear.

Instead, give ISL options and let it pick.
2019-02-21 10:26:10 -08:00
Kenneth Graunke 761a5fb36a iris: fix conditional compute, don't stomp predicate for pipelined queries 2019-02-21 10:26:10 -08:00
Kenneth Graunke 40b12c103c iris: check query first
this lets us avoid the predicate bit in more cases, which is nice
2019-02-21 10:26:10 -08:00
Kenneth Graunke 0c3ea03e4b iris: for BLORP, only use the predicate enable bit when USE_BIT 2019-02-21 10:26:10 -08:00
Dave Airlie 7bbf3ff4a9 iris: add conditional render support 2019-02-21 10:26:10 -08:00
Kenneth Graunke dbe198d6ba iris: drop key_size_for_cache
dead since my program cache API rework.  we could still use it for one
function, but it's so trivial to pass the size, that it's probably not
worth the extra code
2019-02-21 10:26:10 -08:00
Dave Airlie e4115eaca0 iris: iris add load register reg32/64
These will be needed for broadwell and conditional render
2019-02-21 10:26:10 -08:00
Dave Airlie 311a1b3198 iris: execute compute related query on compute batch.
This only happens for the compute invocations query.
2019-02-21 10:26:10 -08:00
Dave Airlie 00645ea01c iris: fix cube texture view 2019-02-21 10:26:10 -08:00
Kenneth Graunke 39d1056d10 iris: fix some SO overflow query bugs and tidy the code a bit 2019-02-21 10:26:10 -08:00
Dave Airlie 527e5bcdc7 iris: add initial transform feedback overflow query paths (V3)
v2: fix cpu overflow calc
v3: use a struct
2019-02-21 10:26:10 -08:00
Kenneth Graunke 0ded23a552 iris: actually flush for storage images 2019-02-21 10:26:10 -08:00
Kenneth Graunke 69e97670bc iris: add an extra BT assert from Chris Wilson 2019-02-21 10:26:10 -08:00
Kenneth Graunke 4312784674 iris: add assertions about binding table starts 2019-02-21 10:26:10 -08:00
Kenneth Graunke 240615695d iris: drop pull constant binding table entry
nothing uses this
2019-02-21 10:26:10 -08:00
Kenneth Graunke 10d04cdaa4 iris: Use program's num textures not the state tracker's bound
the state tracker might bind more textures than the program is using.
2019-02-21 10:26:10 -08:00
Kenneth Graunke 855ff47d36 iris: Enable precompiles 2019-02-21 10:26:10 -08:00
Kenneth Graunke ed4ffb9715 iris: rework program cache interface
This exposes iris_upload_shader() without having to bind it, which will
be useful for precompiles.  It also lets us examine the old programs and
flag dirty bits at a higher level, rather than cramming all that
knowledge into the cache layer.
2019-02-21 10:26:10 -08:00
Kenneth Graunke 701a6b6006 iris: Use wrappers for create_xs_state rather than a switch statement 2019-02-21 10:26:10 -08:00
Kenneth Graunke e628095b9a iris: fix comment location 2019-02-21 10:26:10 -08:00
Kenneth Graunke e5df8913e1 iris: export iris_upload_shader 2019-02-21 10:26:10 -08:00
Kenneth Graunke d525b3dfad iris: fix prototype warning 2019-02-21 10:26:10 -08:00
Kenneth Graunke 84a8c63527 iris: Re-pin even if nothing is dirty 2019-02-21 10:26:10 -08:00
Kenneth Graunke 415ede346d iris: Flush for history at various moments
When we blit, transfer, or copy_resource to a buffer, we need to flush
to ensure any stale data for that buffer is invalidated in the caches.

bind_history will inform us which caches need to be flushed.

Also, for any push constant buffers, we need to flag those dirty so
that we re-emit 3DSTATE_CONSTANT_*, causing the data to be re-pushed.
2019-02-21 10:26:10 -08:00
Kenneth Graunke c8579e708e iris: add iris_flush_and_dirty_for_history 2019-02-21 10:26:10 -08:00
Kenneth Graunke d169747a3e iris: Track a binding history for buffer resources
This will let us know what caches to flush / state to dirty when
altering the contents of a buffer.
2019-02-21 10:26:10 -08:00
Kenneth Graunke f49f506b13 iris: drop long dead XXX comment 2019-02-21 10:26:10 -08:00
Kenneth Graunke 5dbd6df9f7 iris: Do the 48-bit vertex buffer address invalidation workaround 2019-02-21 10:26:10 -08:00
Kenneth Graunke 1b1ea23766 iris: Fix VIEWPORT/LAYER in stream output info
Fixes glsl-1.50-transform-feedback-builtins and
ext_transform_feedback-builtin-varyings gl_PointSize
2019-02-21 10:26:10 -08:00
Kenneth Graunke c5b22441f1 iris: Fix buffer -> buffer copy_region
Size can be too large for a surf, blorp_buffer_copy chops things up
into segments we can actually handle

Fixes map_buffer_range_test and copy_buffer_coherency
2019-02-21 10:26:10 -08:00
Kenneth Graunke beb2d5e065 iris: Lie about indirects
fixes interpolateAt tests
2019-02-21 10:26:10 -08:00
Kenneth Graunke b9ccb00e2c iris: Enable ctx->Const.UseSTD430AsDefaultPacking
hooray for obscurely named pipe caps with bizarre descriptions!
2019-02-21 10:26:10 -08:00
Kenneth Graunke 39cb10613c iris: update comment 2019-02-21 10:26:10 -08:00
Kenneth Graunke f9612e7682 iris: RT flush for memorybarrier with texture bit
PIXEL_BUFFER_BARRIER_BIT turns into PIPE_BARRIER_TEXTURE and it ought
to trigger an RT flush, according to brw_memory_barrier
2019-02-21 10:26:10 -08:00
Kenneth Graunke 2c23721397 iris: PIPE_CONTROL workarounds for GPGPU mode 2019-02-21 10:26:10 -08:00
Kenneth Graunke f1a7392be1 iris: Put batches in an array
We keep re-making this array all over the place
2019-02-21 10:26:10 -08:00
Kenneth Graunke c2a77efa71 iris: put render batch first in fence code
this shouldn't matter, but it will make the next refactor easier
2019-02-21 10:26:10 -08:00
Kenneth Graunke d918c09975 iris: flush the compute batch too if border pool is redone 2019-02-21 10:26:10 -08:00
Kenneth Graunke 017b556609 iris: leave a TODO 2019-02-21 10:26:10 -08:00
Chris Wilson f459c56be6 iris: Add fence support using drm_syncobj 2019-02-21 10:26:10 -08:00
Kenneth Graunke db199d9d07 iris: Add wait fences to properly sync between render/compute
When flushing a batch due to a data dependency, we need to not only
kick off the other batch's work, but stall our execution until it
completes.  Just wait on last_syncpt after flushing it.
2019-02-21 10:26:10 -08:00
Kenneth Graunke d69bc4ac12 iris: Hang on to the last batch's sync-point, so we can wait on it 2019-02-21 10:26:10 -08:00
Chris Wilson fae74234d9 iris: Tag each submitted batch with a syncobj
(adjusted by Ken to make the signalling sync object immediately on
batch reset, rather than batch finish time.  this will work better
with deferred flushes...)
2019-02-21 10:26:10 -08:00
Kenneth Graunke 3e332af611 iris: Drop vestiges of throttling code 2019-02-21 10:26:10 -08:00
Chris Wilson 54347c078e iris: Merge two walks of the exec_bos list 2019-02-21 10:26:10 -08:00
Kenneth Graunke 3455f57575 iris: replace vestiges of fence fds with newer exec_fence API
patch by me and Chris Wilson
2019-02-21 10:26:10 -08:00
Kenneth Graunke 11da219be9 iris: Avoid synchronizing due to the workaround BO 2019-02-21 10:26:10 -08:00
Kenneth Graunke 30d7bebc8a iris: Avoid cross-batch synchronization on read/reads
This avoids flushing batches just because e.g. both are reading the same
dynamic state streaming buffer, or shader assembly buffer.
2019-02-21 10:26:10 -08:00
Kenneth Graunke b21e916a62 iris: Combine iris_use_pinned_bo and add_exec_bo 2019-02-21 10:26:10 -08:00