| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
soa fetch so far always assumed that data was aligned. However, we want to
use this for vertex fetch, and data might not be aligned there, so handle
it in this path too (basically just pass through alignment through to other
functions). (It looks like it wouldn't work for for cached s3tc but this is
no different than with AoS fetch.)
Reviewed-by: Jose Fonseca <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Avoid synchronization by using the secondary context
for uploading the vertex data for Draw*Up.
v2: Rely on u_upload_mgr to use persistent coherent
buffers. Do not flush.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
Tests suggest MANAGED buffers are made dirty
at Lock time, not at Unlock time.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This new buffer upload path enables to lock
faster than the normal path when using
DISCARD/NOOVERWRITE.
v2: Diverse cleanups and fixes.
v3: Fix allocation size for 'lone' buffers and
add more debug info.
v4: Rewrite of the path to handle when DISCARD/NOOVERWRITE
is not used anymore. The resource content is copied to the
new resource used.
v5: flush for safety after unmap (not sure it is really required
here, but safer to flush).
v6: Do not use the path if persistent coherent mapping is unavailable.
Fix buffer creation flags.
v7: Do not flush since it is not needed.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
Next patches will introduce an offset.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
If the volumes (and the texture container) are not referenced,
then they are no pending operations on them. We can lock directly.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
If the surfaces (and the texture container) are not referenced,
then they are no pending operations on them. We can lock directly.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
The new arguments enable to reference the objects while
the function hasn't run.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
Will enable to use the bind count as an information for
whether the surface/volume is used in the worker thread.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
Will enable to use the bind count as an information for
whether the surface/volume is used in the worker thread.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use nine_context_box_upload for uploads:
. systemmem volume to default volume
. managed volume internal content to its resource.
Check the uploads are executed before any action
that can alter the data, that is LockBox and
volume destruction.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
The last level was not released.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
The last level was not released.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use nine_context_box_upload for uploads:
. systemmem surface to default surface
. managed surface internal content to its resource.
Check the uploads are executed before any action
that can alter the data, that is LockRect,
NineSurface9_CopyDefaultToMem and surface destruction.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
This function will be used for surface and volume uploads
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
Generate mipmaps in the worker thread.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
To offload mipmap generation as well.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Do the upload in the other thread.
Usually managed buffers are used once per frame.
It is then very likely pending_upload is 0 at Lock
time.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
Will be used to upload buffers.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
This doesn't make sense to bind the container in that specific case.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
The behaviour is a bit less obscure now.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
| |
BackBuffers can survive swapchain dtor if
the user has a reference on them.
The swapchain itself has no reference on the buffer.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
We don't bind the container in AddRef.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
Remove some noop operations.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
Use the newly introduced counter to know when we don't
need synchronization.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
| |
Similar to the other macros, but introduces a counter,
which enables to know when the instructions has been
executed.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
| |
Enables to not wait for the worker thread for ColorFill.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
When we lock the whole surface to overwrite it, we can use DISCARD.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
For render targets, NineSurface9_GetSurface is not
expected to fail.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
Use the acquire/release semantic when we don't need
to wait for any pending command.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the secondary pipe for DISCARD/NOOVERWRITE, which
avoids stalling to get the pipe from the worker thread.
v2: flush at unmap. This is required for example if
the driver does hidden draw calls or copies. In the case
of unsynchronized it is probably not required, but
it is more safe.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
The secondary pipe will be used for operations
that don't need synchronization.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
See commit for description.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Tests show SYSTEMMEM should ignore DISCARD.
Prevents game bugs with following patches reimplementing
DISCARD. Halo is affected.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Previously we were uploading Managed buffers at the next draw call
after they were set dirty.
This is not the expected behaviour. Instead upload just before
draw call needing the content.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
Similar code than for textures.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
BASETEX_REGISTER_UPDATE was adding the texture to the list
of textures to upload in too many cases. tex->base.base.bind
will be set to true if the texture is in a stateblock, whereas
we want to upload only if bound to the device, which is
what bind_count is for.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
This makes the code more readable.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
Use nine_context wrapper for resource_copy_region.
Enables to offload it with CSMT.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
| |
Enables to offload it with CSMT.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
| |
To ease debugging.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
| |
To ease debugging.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
|
|
| |
Use an offloading thread for all nine_context functions.
Macros are used to ease the reading of the code.
Signed-off-by: Patrick Rudolph <[email protected]>
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
With csmt, every usage of the pipe in the main thread
has to be protected by calling GetPipe.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
| |
Required to know the size exact size of the plane.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
| |
This queue mechanism will be used for CSMT.
Signed-off-by: Patrick Rudolph <[email protected]>
|
|
|
|
|
|
|
|
| |
Create the pipe_surfaces on renderable resources creation.
This enables to avoid creating them on the fly.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
| |
Part of the refactor to move all gallium calls to
nine_state.c, and have all internal states required
for those calls in nine_context.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
| |
The change is required with csmt, where depending on the thread
you don't access the pipe the same way.
Signed-off-by: Axel Davy <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new version uses nine_context functions instead of
applying the changes directly to nine_context.
This will enable it to work with CSMT.
v2: Fix nine_context_light_enable_stateblock
The memcpy arguments were wrong, and the state
wasn't set dirty.
Signed-off-by: Axel Davy <[email protected]>
|