Rebase against 85ba92c33a8c689e375fae2f3313657aaa9877fb.

This commit is contained in:
Sebastian Lackner 2016-02-10 00:52:30 +01:00
parent e2e98ce27a
commit 6a55df61ce
106 changed files with 450 additions and 807 deletions

View File

@ -51,7 +51,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "f0053d06c4fc168360da638fa26f1927fe975262"
echo "85ba92c33a8c689e375fae2f3313657aaa9877fb"
}
# Show version information
@ -6938,109 +6938,107 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
patch_apply wined3d-CSMT_Main/0063-wined3d-Wait-for-the-cs-to-finish-before-destroying-.patch
patch_apply wined3d-CSMT_Main/0064-wined3d-Run-the-cs-asynchronously.patch
patch_apply wined3d-CSMT_Main/0065-wined3d-Send-blits-through-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0066-wined3d-Put-update_surface-checks-back-in-place.patch
patch_apply wined3d-CSMT_Main/0067-wined3d-Get-rid-of-WINED3D_BUFFER_FLUSH.patch
patch_apply wined3d-CSMT_Main/0068-wined3d-Don-t-force-strict-draw-ordering-for-multith.patch
patch_apply wined3d-CSMT_Main/0069-wined3d-Send-render-target-view-clears-through-the-c.patch
patch_apply wined3d-CSMT_Main/0070-wined3d-Wait-for-the-CS-in-GetDC.patch
patch_apply wined3d-CSMT_Main/0071-wined3d-send-resource-maps-through-the-command-strea.patch
patch_apply wined3d-CSMT_Main/0072-wined3d-Get-rid-of-the-end_scene-flush-and-finish.patch
patch_apply wined3d-CSMT_Main/0073-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch
patch_apply wined3d-CSMT_Main/0074-wined3d-Don-t-preload-buffers-on-unmap.patch
patch_apply wined3d-CSMT_Main/0075-wined3d-Don-t-call-glFinish-before-swapping.patch
patch_apply wined3d-CSMT_Main/0076-wined3d-wined3d_-_query_issue-never-fails.patch
patch_apply wined3d-CSMT_Main/0077-wined3d-Add-query-support-to-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0078-wined3d-Check-our-CS-state-to-find-out-if-a-query-is.patch
patch_apply wined3d-CSMT_Main/0079-wined3d-Poll-queries-automatically-in-the-CS.patch
patch_apply wined3d-CSMT_Main/0080-wined3d-Introduce-a-separate-queue-for-priority-comm.patch
patch_apply wined3d-CSMT_Main/0081-wined3d-Destroy-queries-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0082-wined3d-Separate-main-and-worker-thread-query-state.patch
patch_apply wined3d-CSMT_Main/0083-wined3d-Don-t-poll-queries-that-failed-to-start.patch
patch_apply wined3d-CSMT_Main/0084-wined3d-Remove-restated-queries-from-the-poll-list.patch
patch_apply wined3d-CSMT_Main/0085-wined3d-Don-t-reset-the-query-state-if-it-doesn-t-ha.patch
patch_apply wined3d-CSMT_Main/0086-wined3d-Put-this-into-the-query-poll-patch.patch
patch_apply wined3d-CSMT_Main/0087-wined3d-Send-update_surface-commands-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0088-wined3d-Send-texture-preloads-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0089-wined3d-Send-update_texture-calls-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0090-wined3d-Get-rid-of-the-surface_upload_data-glFinish.patch
patch_apply wined3d-CSMT_Main/0091-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch
patch_apply wined3d-CSMT_Main/0092-wined3d-Handle-evit_managed_resources-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0093-wined3d-Introduce-resource-fencing.patch
patch_apply wined3d-CSMT_Main/0094-wined3d-Fence-update_texture-and-update_surface-call.patch
patch_apply wined3d-CSMT_Main/0095-wined3d-Dirtify-resources-on-unmap.patch
patch_apply wined3d-CSMT_Main/0096-wined3d-Fence-texture-reads-in-draws.patch
patch_apply wined3d-CSMT_Main/0097-wined3d-Fence-render-targets-and-depth-stencils.patch
patch_apply wined3d-CSMT_Main/0098-wined3d-Fence-blit-operations.patch
patch_apply wined3d-CSMT_Main/0099-wined3d-Fence-color_fill-operations.patch
patch_apply wined3d-CSMT_Main/0100-wined3d-Fence-clear-calls.patch
patch_apply wined3d-CSMT_Main/0101-wined3d-Fence-present-calls.patch
patch_apply wined3d-CSMT_Main/0102-wined3d-Make-resource-maps-and-unmaps-a-priority-com.patch
patch_apply wined3d-CSMT_Main/0103-wined3d-Dirtify-changed-textures-through-the-command.patch
patch_apply wined3d-CSMT_Main/0104-wined3d-Wrap-GL-BOs-in-a-structure.patch
patch_apply wined3d-CSMT_Main/0105-wined3d-Separate-resource-map-and-draw-buffers.patch
patch_apply wined3d-CSMT_Main/0106-wined3d-Implement-DISCARD-resource-maps-with-buffers.patch
patch_apply wined3d-CSMT_Main/0107-wined3d-Implement-DISCARD-resource-maps-with-heap-me.patch
patch_apply wined3d-CSMT_Main/0108-wined3d-Unset-some-objects-in-state_init_default.patch
patch_apply wined3d-CSMT_Main/0109-wined3d-Don-t-request-the-frontbuffer-to-create-dumm.patch
patch_apply wined3d-CSMT_Main/0110-wined3d-Use-double-buffered-buffers-for-multithreade.patch
patch_apply wined3d-CSMT_Main/0111-wined3d-Don-t-synchronize-NOOVERWRITE-buffer-maps.patch
patch_apply wined3d-CSMT_Main/0112-wined3d-Separate-buffer-map-write-and-draw-read-memo.patch
patch_apply wined3d-CSMT_Main/0113-wined3d-Accelerate-DISCARD-buffer-maps.patch
patch_apply wined3d-CSMT_Main/0114-wined3d-Accelerate-READONLY-buffer-maps.patch
patch_apply wined3d-CSMT_Main/0115-wined3d-Access-the-buffer-dirty-areas-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0116-wined3d-Ignore-buffer-resource.map_count-in-the-CS.patch
patch_apply wined3d-CSMT_Main/0117-wined3d-Send-buffer-preloads-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0118-wined3d-Use-glBufferSubData-instead-of-glMapBufferRa.patch
patch_apply wined3d-CSMT_Main/0119-wined3d-Separate-GL-buffer-discard-control-from-igno.patch
patch_apply wined3d-CSMT_Main/0120-wined3d-Create-buffers-before-mapping-them.patch
patch_apply wined3d-CSMT_Main/0121-wined3d-Destroy-views-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0122-wined3d-Remove-another-glFinish.patch
patch_apply wined3d-CSMT_Main/0123-wined3d-Destroy-vertex-declarations-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0124-wined3d-Destroy-shaders-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0125-wined3d-Create-VBOs-through-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0126-wined3d-Clean-up-resource-data-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0127-wined3d-Clean-up-buffer-resource-data-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0128-wined3d-Clean-up-volume-resource-data-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0129-wined3d-Clean-up-surfaces-through-the-cs.patch
patch_apply wined3d-CSMT_Main/0130-wined3d-Clean-up-texture-resources-through-the-cs.patch
patch_apply wined3d-CSMT_Main/0131-wined3d-Unload-resources-through-the-CS-in-uninit_3d.patch
patch_apply wined3d-CSMT_Main/0132-wined3d-Unload-resources-through-the-CS-in-device_re.patch
patch_apply wined3d-CSMT_Main/0133-wined3d-Don-t-glFinish-after-a-depth-buffer-blit.patch
patch_apply wined3d-CSMT_Main/0134-wined3d-Remove-software-cursor-support.patch
patch_apply wined3d-CSMT_Main/0135-wined3d-Create-dummy-textures-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0136-wined3d-Create-the-initial-context-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0137-wined3d-Recreate-ctx-and-dummy-textures-through-the-.patch
patch_apply wined3d-CSMT_Main/0138-wined3d-Ignore-WINED3D_MAP_NO_DIRTY_UPDATE-in-resour.patch
patch_apply wined3d-CSMT_Main/0139-wined3d-Delete-GL-contexts-through-the-CS-in-reset.patch
patch_apply wined3d-CSMT_Main/0140-wined3d-Delete-GL-contexts-through-the-CS-in-uninit_.patch
patch_apply wined3d-CSMT_Main/0141-wined3d-Invoke-surface_unload-through-the-CS-in-wine.patch
patch_apply wined3d-CSMT_Main/0142-wined3d-Use-an-event-to-block-the-worker-thread-when.patch
patch_apply wined3d-CSMT_Main/0143-wined3d-Fence-preload-operations.patch
patch_apply wined3d-CSMT_Main/0144-d3d8-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch
patch_apply wined3d-CSMT_Main/0145-d3d9-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch
patch_apply wined3d-CSMT_Main/0146-wined3d-Completely-reset-the-state-on-reset.patch
patch_apply wined3d-CSMT_Main/0147-wined3d-Send-getdc-and-releasedc-through-the-command.patch
patch_apply wined3d-CSMT_Main/0148-wined3d-Set-map_heap_memory-NULL-when-allocating-a-P.patch
patch_apply wined3d-CSMT_Main/0149-wined3d-Wait-only-for-the-buffer-to-be-idle.patch
patch_apply wined3d-CSMT_Main/0150-wined3d-Add-a-comment-about-worker-thread-lag.patch
patch_apply wined3d-CSMT_Main/0151-wined3d-Remove-the-texture-destroy-glFinish.patch
patch_apply wined3d-CSMT_Main/0152-wined3d-Move-FBO-destruction-into-the-worker-thread.patch
patch_apply wined3d-CSMT_Main/0153-wined3d-Don-t-incref-decref-textures-in-color-depth-.patch
patch_apply wined3d-CSMT_Main/0154-Winex11-complain-about-glfinish.patch
patch_apply wined3d-CSMT_Main/0155-wined3d-Make-sure-the-new-window-is-set-up-before-se.patch
patch_apply wined3d-CSMT_Main/0156-wined3d-Remove-the-device_reset-CS-sync-fixme.patch
patch_apply wined3d-CSMT_Main/0157-wined3d-Put-GL_APPLE_flush_buffer_range-syncing-back.patch
patch_apply wined3d-CSMT_Main/0158-wined3d-Wait-for-the-resource-to-be-idle-when-destro.patch
patch_apply wined3d-CSMT_Main/0159-wined3d-Don-t-sync-on-redundant-discard-calls.patch
patch_apply wined3d-CSMT_Main/0160-wined3d-Don-t-discard-new-buffers.patch
patch_apply wined3d-CSMT_Main/0161-wined3d-Don-t-try-to-sync-VBOs-manually-on-OSX-with-.patch
patch_apply wined3d-CSMT_Main/0162-wined3d-Render-target-lock-hack.patch
patch_apply wined3d-CSMT_Main/0163-wined3d-Avoid-calling-wined3d_surface_blt-from-surfa.patch
patch_apply wined3d-CSMT_Main/0164-wined3d-Only-discard-buffers-that-are-in-use.patch
patch_apply wined3d-CSMT_Main/0165-wined3d-Destroy-samplers-through-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0166-wined3d-Hack-to-reject-unsupported-color-fills.patch
patch_apply wined3d-CSMT_Main/0167-wined3d-Alloc-the-buffer-map-array-before-mapping-th.patch
patch_apply wined3d-CSMT_Main/0168-wined3d-Send-update_sub_resource-calls-through-the-c.patch
patch_apply wined3d-CSMT_Main/0066-wined3d-Get-rid-of-WINED3D_BUFFER_FLUSH.patch
patch_apply wined3d-CSMT_Main/0067-wined3d-Don-t-force-strict-draw-ordering-for-multith.patch
patch_apply wined3d-CSMT_Main/0068-wined3d-Send-render-target-view-clears-through-the-c.patch
patch_apply wined3d-CSMT_Main/0069-wined3d-Wait-for-the-CS-in-GetDC.patch
patch_apply wined3d-CSMT_Main/0070-wined3d-send-resource-maps-through-the-command-strea.patch
patch_apply wined3d-CSMT_Main/0071-wined3d-Get-rid-of-the-end_scene-flush-and-finish.patch
patch_apply wined3d-CSMT_Main/0072-wined3d-Replace-the-linked-lists-with-a-ringbuffer.patch
patch_apply wined3d-CSMT_Main/0073-wined3d-Don-t-preload-buffers-on-unmap.patch
patch_apply wined3d-CSMT_Main/0074-wined3d-Don-t-call-glFinish-before-swapping.patch
patch_apply wined3d-CSMT_Main/0075-wined3d-wined3d_-_query_issue-never-fails.patch
patch_apply wined3d-CSMT_Main/0076-wined3d-Add-query-support-to-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0077-wined3d-Check-our-CS-state-to-find-out-if-a-query-is.patch
patch_apply wined3d-CSMT_Main/0078-wined3d-Poll-queries-automatically-in-the-CS.patch
patch_apply wined3d-CSMT_Main/0079-wined3d-Introduce-a-separate-queue-for-priority-comm.patch
patch_apply wined3d-CSMT_Main/0080-wined3d-Destroy-queries-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0081-wined3d-Separate-main-and-worker-thread-query-state.patch
patch_apply wined3d-CSMT_Main/0082-wined3d-Don-t-poll-queries-that-failed-to-start.patch
patch_apply wined3d-CSMT_Main/0083-wined3d-Remove-restated-queries-from-the-poll-list.patch
patch_apply wined3d-CSMT_Main/0084-wined3d-Don-t-reset-the-query-state-if-it-doesn-t-ha.patch
patch_apply wined3d-CSMT_Main/0085-wined3d-Put-this-into-the-query-poll-patch.patch
patch_apply wined3d-CSMT_Main/0086-wined3d-Send-texture-preloads-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0087-wined3d-Send-update_texture-calls-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0088-wined3d-Get-rid-of-the-surface_upload_data-glFinish.patch
patch_apply wined3d-CSMT_Main/0089-wined3d-Don-t-lock-the-src-volume-in-device_update_v.patch
patch_apply wined3d-CSMT_Main/0090-wined3d-Handle-evit_managed_resources-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0091-wined3d-Introduce-resource-fencing.patch
patch_apply wined3d-CSMT_Main/0092-wined3d-Fence-update_texture-and-update_surface-call.patch
patch_apply wined3d-CSMT_Main/0093-wined3d-Dirtify-resources-on-unmap.patch
patch_apply wined3d-CSMT_Main/0094-wined3d-Fence-texture-reads-in-draws.patch
patch_apply wined3d-CSMT_Main/0095-wined3d-Fence-render-targets-and-depth-stencils.patch
patch_apply wined3d-CSMT_Main/0096-wined3d-Fence-blit-operations.patch
patch_apply wined3d-CSMT_Main/0097-wined3d-Fence-color_fill-operations.patch
patch_apply wined3d-CSMT_Main/0098-wined3d-Fence-clear-calls.patch
patch_apply wined3d-CSMT_Main/0099-wined3d-Fence-present-calls.patch
patch_apply wined3d-CSMT_Main/0100-wined3d-Make-resource-maps-and-unmaps-a-priority-com.patch
patch_apply wined3d-CSMT_Main/0101-wined3d-Dirtify-changed-textures-through-the-command.patch
patch_apply wined3d-CSMT_Main/0102-wined3d-Wrap-GL-BOs-in-a-structure.patch
patch_apply wined3d-CSMT_Main/0103-wined3d-Separate-resource-map-and-draw-buffers.patch
patch_apply wined3d-CSMT_Main/0104-wined3d-Implement-DISCARD-resource-maps-with-buffers.patch
patch_apply wined3d-CSMT_Main/0105-wined3d-Implement-DISCARD-resource-maps-with-heap-me.patch
patch_apply wined3d-CSMT_Main/0106-wined3d-Unset-some-objects-in-state_init_default.patch
patch_apply wined3d-CSMT_Main/0107-wined3d-Don-t-request-the-frontbuffer-to-create-dumm.patch
patch_apply wined3d-CSMT_Main/0108-wined3d-Use-double-buffered-buffers-for-multithreade.patch
patch_apply wined3d-CSMT_Main/0109-wined3d-Don-t-synchronize-NOOVERWRITE-buffer-maps.patch
patch_apply wined3d-CSMT_Main/0110-wined3d-Separate-buffer-map-write-and-draw-read-memo.patch
patch_apply wined3d-CSMT_Main/0111-wined3d-Accelerate-DISCARD-buffer-maps.patch
patch_apply wined3d-CSMT_Main/0112-wined3d-Accelerate-READONLY-buffer-maps.patch
patch_apply wined3d-CSMT_Main/0113-wined3d-Access-the-buffer-dirty-areas-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0114-wined3d-Ignore-buffer-resource.map_count-in-the-CS.patch
patch_apply wined3d-CSMT_Main/0115-wined3d-Send-buffer-preloads-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0116-wined3d-Use-glBufferSubData-instead-of-glMapBufferRa.patch
patch_apply wined3d-CSMT_Main/0117-wined3d-Separate-GL-buffer-discard-control-from-igno.patch
patch_apply wined3d-CSMT_Main/0118-wined3d-Create-buffers-before-mapping-them.patch
patch_apply wined3d-CSMT_Main/0119-wined3d-Destroy-views-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0120-wined3d-Remove-another-glFinish.patch
patch_apply wined3d-CSMT_Main/0121-wined3d-Destroy-vertex-declarations-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0122-wined3d-Destroy-shaders-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0123-wined3d-Create-VBOs-through-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0124-wined3d-Clean-up-resource-data-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0125-wined3d-Clean-up-buffer-resource-data-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0126-wined3d-Clean-up-volume-resource-data-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0127-wined3d-Clean-up-surfaces-through-the-cs.patch
patch_apply wined3d-CSMT_Main/0128-wined3d-Clean-up-texture-resources-through-the-cs.patch
patch_apply wined3d-CSMT_Main/0129-wined3d-Unload-resources-through-the-CS-in-uninit_3d.patch
patch_apply wined3d-CSMT_Main/0130-wined3d-Unload-resources-through-the-CS-in-device_re.patch
patch_apply wined3d-CSMT_Main/0131-wined3d-Don-t-glFinish-after-a-depth-buffer-blit.patch
patch_apply wined3d-CSMT_Main/0132-wined3d-Remove-software-cursor-support.patch
patch_apply wined3d-CSMT_Main/0133-wined3d-Create-dummy-textures-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0134-wined3d-Create-the-initial-context-through-the-CS.patch
patch_apply wined3d-CSMT_Main/0135-wined3d-Recreate-ctx-and-dummy-textures-through-the-.patch
patch_apply wined3d-CSMT_Main/0136-wined3d-Ignore-WINED3D_MAP_NO_DIRTY_UPDATE-in-resour.patch
patch_apply wined3d-CSMT_Main/0137-wined3d-Delete-GL-contexts-through-the-CS-in-reset.patch
patch_apply wined3d-CSMT_Main/0138-wined3d-Delete-GL-contexts-through-the-CS-in-uninit_.patch
patch_apply wined3d-CSMT_Main/0139-wined3d-Invoke-surface_unload-through-the-CS-in-wine.patch
patch_apply wined3d-CSMT_Main/0140-wined3d-Use-an-event-to-block-the-worker-thread-when.patch
patch_apply wined3d-CSMT_Main/0141-wined3d-Fence-preload-operations.patch
patch_apply wined3d-CSMT_Main/0142-d3d8-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch
patch_apply wined3d-CSMT_Main/0143-d3d9-tests-D3DLOCK_NO_DIRTY_UPDATE-on-managed-textur.patch
patch_apply wined3d-CSMT_Main/0144-wined3d-Completely-reset-the-state-on-reset.patch
patch_apply wined3d-CSMT_Main/0145-wined3d-Send-getdc-and-releasedc-through-the-command.patch
patch_apply wined3d-CSMT_Main/0146-wined3d-Set-map_heap_memory-NULL-when-allocating-a-P.patch
patch_apply wined3d-CSMT_Main/0147-wined3d-Wait-only-for-the-buffer-to-be-idle.patch
patch_apply wined3d-CSMT_Main/0148-wined3d-Add-a-comment-about-worker-thread-lag.patch
patch_apply wined3d-CSMT_Main/0149-wined3d-Remove-the-texture-destroy-glFinish.patch
patch_apply wined3d-CSMT_Main/0150-wined3d-Move-FBO-destruction-into-the-worker-thread.patch
patch_apply wined3d-CSMT_Main/0151-wined3d-Don-t-incref-decref-textures-in-color-depth-.patch
patch_apply wined3d-CSMT_Main/0152-Winex11-complain-about-glfinish.patch
patch_apply wined3d-CSMT_Main/0153-wined3d-Make-sure-the-new-window-is-set-up-before-se.patch
patch_apply wined3d-CSMT_Main/0154-wined3d-Remove-the-device_reset-CS-sync-fixme.patch
patch_apply wined3d-CSMT_Main/0155-wined3d-Put-GL_APPLE_flush_buffer_range-syncing-back.patch
patch_apply wined3d-CSMT_Main/0156-wined3d-Wait-for-the-resource-to-be-idle-when-destro.patch
patch_apply wined3d-CSMT_Main/0157-wined3d-Don-t-sync-on-redundant-discard-calls.patch
patch_apply wined3d-CSMT_Main/0158-wined3d-Don-t-discard-new-buffers.patch
patch_apply wined3d-CSMT_Main/0159-wined3d-Don-t-try-to-sync-VBOs-manually-on-OSX-with-.patch
patch_apply wined3d-CSMT_Main/0160-wined3d-Render-target-lock-hack.patch
patch_apply wined3d-CSMT_Main/0161-wined3d-Avoid-calling-wined3d_surface_blt-from-surfa.patch
patch_apply wined3d-CSMT_Main/0162-wined3d-Only-discard-buffers-that-are-in-use.patch
patch_apply wined3d-CSMT_Main/0163-wined3d-Destroy-samplers-through-the-command-stream.patch
patch_apply wined3d-CSMT_Main/0164-wined3d-Hack-to-reject-unsupported-color-fills.patch
patch_apply wined3d-CSMT_Main/0165-wined3d-Alloc-the-buffer-map-array-before-mapping-th.patch
patch_apply wined3d-CSMT_Main/0166-wined3d-Send-update_sub_resource-calls-through-the-c.patch
patch_apply wined3d-CSMT_Main/9998-wined3d-Enable-CSMT-by-default-print-a-winediag-mess.patch
patch_apply wined3d-CSMT_Main/9999-IfDefined.patch
(
@ -7109,7 +7107,6 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
echo '+ { "Stefan Dösinger", "wined3d: Wait for the cs to finish before destroying the device.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Run the cs asynchronously.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Send blits through the command stream.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Put update_surface checks back in place.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Get rid of WINED3D_BUFFER_FLUSH.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Don'\''t force strict draw ordering for multithreaded CS.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Send render target view clears through the command stream.", 1 },';
@ -7130,7 +7127,6 @@ if test "$enable_wined3d_CSMT_Main" -eq 1; then
echo '+ { "Stefan Dösinger", "wined3d: Remove restated queries from the poll list.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Don'\''t reset the query state if it doesn'\''t have a ctx.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Put this into the query poll patch.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Send update_surface commands through the CS.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Send texture preloads through the CS.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Send update_texture calls through the CS.", 1 },';
echo '+ { "Stefan Dösinger", "wined3d: Get rid of the surface_upload_data glFinish.", 1 },';

View File

@ -1,4 +1,4 @@
From a79863383e3dc7dfff564432e6c5086aa612d8af Mon Sep 17 00:00:00 2001
From 3c4dad98dfe1a841fd219dc8ac304a8358f11513 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 4 Apr 2013 11:50:09 +0200
Subject: wined3d: Request a glFinish before modifying resources outside the cs
@ -6,14 +6,14 @@ Subject: wined3d: Request a glFinish before modifying resources outside the cs
---
dlls/wined3d/buffer.c | 17 +++++++++++++++++
dlls/wined3d/cs.c | 30 ++++++++++++++++++++++++++++++
dlls/wined3d/device.c | 42 ++++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/device.c | 35 +++++++++++++++++++++++++++++++++++
dlls/wined3d/resource.c | 7 +++++++
dlls/wined3d/surface.c | 7 +++++++
dlls/wined3d/wined3d_private.h | 1 +
6 files changed, 104 insertions(+)
6 files changed, 97 insertions(+)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 0735ab7..3f740dd 100644
index 6271307..87d0b91 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -931,6 +931,15 @@ void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_conte
@ -51,7 +51,7 @@ index 0735ab7..3f740dd 100644
/* Filter redundant WINED3D_MAP_DISCARD maps. The 3DMark2001 multitexture
* fill rate test seems to depend on this. When we map a buffer with
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 63ac035..b7bedbf 100644
index a675ce9..e42cbe0 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -66,6 +66,7 @@ enum wined3d_cs_op
@ -113,10 +113,10 @@ index 63ac035..b7bedbf 100644
static void *wined3d_cs_st_require_space(struct wined3d_cs *cs, size_t size)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index d43075b..5e5f3f5 100644
index 3697a9f..83b1bf65 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2765,6 +2765,13 @@ static HRESULT process_vertices_strided(const struct wined3d_device *device, DWO
@@ -2857,6 +2857,13 @@ static HRESULT process_vertices_strided(const struct wined3d_device *device, DWO
return hr;
}
@ -130,7 +130,7 @@ index d43075b..5e5f3f5 100644
wined3d_device_get_transform(device, WINED3D_TS_VIEW, &view_mat);
wined3d_device_get_transform(device, WINED3D_TS_PROJECTION, &proj_mat);
wined3d_device_get_transform(device, WINED3D_TS_WORLD_MATRIX(0), &world_mat);
@@ -3562,6 +3569,13 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device,
@@ -3644,6 +3651,13 @@ HRESULT CDECL wined3d_device_update_texture(struct wined3d_device *device,
++src_skip_levels;
}
@ -144,21 +144,7 @@ index d43075b..5e5f3f5 100644
/* Make sure that the destination texture is loaded. */
context = context_acquire(device, NULL);
wined3d_texture_load(dst_texture, context, FALSE);
@@ -3810,6 +3824,13 @@ HRESULT CDECL wined3d_device_update_surface(struct wined3d_device *device,
return WINED3DERR_INVALIDCALL;
}
+ if (wined3d_settings.cs_multithreaded)
+ {
+ FIXME("Waiting for cs.\n");
+ wined3d_cs_emit_glfinish(device->cs);
+ device->cs->ops->finish(device->cs);
+ }
+
return surface_upload_from_surface(dst_surface, dst_point, src_surface, src_rect);
}
@@ -4064,6 +4085,13 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
@@ -4131,6 +4145,13 @@ HRESULT CDECL wined3d_device_clear_rendertarget_view(struct wined3d_device *devi
rect = &r;
}
@ -172,7 +158,7 @@ index d43075b..5e5f3f5 100644
resource = wined3d_texture_get_sub_resource(wined3d_texture_from_resource(resource), view->sub_resource_idx);
return surface_color_fill(surface_from_resource(resource), rect, color);
@@ -4377,6 +4405,13 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
@@ -4454,6 +4475,13 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
TRACE("device %p.\n", device);
@ -186,7 +172,7 @@ index d43075b..5e5f3f5 100644
LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry)
{
TRACE("Checking resource %p for eviction.\n", resource);
@@ -4499,6 +4534,13 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
@@ -4579,6 +4607,13 @@ HRESULT CDECL wined3d_device_reset(struct wined3d_device *device,
TRACE("device %p, swapchain_desc %p, mode %p, callback %p, reset_state %#x.\n",
device, swapchain_desc, mode, callback, reset_state);
@ -201,10 +187,10 @@ index d43075b..5e5f3f5 100644
{
ERR("Failed to get the first implicit swapchain.\n");
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index 9c40d42..c72987c 100644
index 8d372b9..fb84a0f 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -786,6 +786,13 @@ HRESULT wined3d_resource_map(struct wined3d_resource *resource,
@@ -812,6 +812,13 @@ HRESULT wined3d_resource_map(struct wined3d_resource *resource,
flags = wined3d_resource_sanitize_map_flags(resource, flags);
@ -219,10 +205,10 @@ index 9c40d42..c72987c 100644
context = context_acquire(device, NULL);
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index cba9da9..5e44494 100644
index ec56882..d19b40a 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -5007,6 +5007,13 @@ HRESULT CDECL wined3d_surface_blt(struct wined3d_surface *dst_surface, const REC
@@ -4759,6 +4759,13 @@ HRESULT wined3d_surface_blt(struct wined3d_surface *dst_surface, const RECT *dst
flags &= ~WINEDDBLT_DONOTWAIT;
}
@ -237,10 +223,10 @@ index cba9da9..5e44494 100644
{
WARN("D3D not initialized, using fallback.\n");
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index d018cd9..2e42c79 100644
index 3b5e753..377da6b 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2702,6 +2702,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
@@ -2826,6 +2826,7 @@ void wined3d_cs_emit_set_vertex_declaration(struct wined3d_cs *cs,
void wined3d_cs_emit_set_viewport(struct wined3d_cs *cs, const struct wined3d_viewport *viewport) DECLSPEC_HIDDEN;
void wined3d_cs_emit_set_consts_f(struct wined3d_cs *cs, UINT start_register, const float *constants,
UINT vector4f_count, enum wined3d_shader_type type) DECLSPEC_HIDDEN;
@ -249,5 +235,5 @@ index d018cd9..2e42c79 100644
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.5.1
2.7.0

View File

@ -1,127 +0,0 @@
From 843b306004f731e36e9d9d9336228cd2c06f9128 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Wed, 20 Aug 2014 14:14:23 +0200
Subject: wined3d: Put update_surface checks back in place
Unfortunately I can't remove the code from surface_update_from_surface
yet because blits depend on them.
---
dlls/wined3d/device.c | 68 ++++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/surface.c | 2 +-
dlls/wined3d/wined3d_private.h | 1 +
3 files changed, 70 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 819e6de..e804afe 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3773,6 +3773,13 @@ HRESULT CDECL wined3d_device_update_surface(struct wined3d_device *device,
struct wined3d_surface *src_surface, const RECT *src_rect,
struct wined3d_surface *dst_surface, const POINT *dst_point)
{
+ const struct wined3d_format *src_format = src_surface->resource.format;
+ const struct wined3d_format *dst_format = dst_surface->resource.format;
+ UINT update_w, update_h;
+ UINT dst_w, dst_h;
+ RECT r, dst_rect;
+ POINT p;
+
TRACE("device %p, src_surface %p, src_rect %s, dst_surface %p, dst_point %s.\n",
device, src_surface, wine_dbgstr_rect(src_rect),
dst_surface, wine_dbgstr_point(dst_point));
@@ -3784,6 +3791,67 @@ HRESULT CDECL wined3d_device_update_surface(struct wined3d_device *device,
return WINED3DERR_INVALIDCALL;
}
+ if (src_format->id != dst_format->id)
+ {
+ WARN("Source and destination surfaces should have the same format.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
+ if (!dst_point)
+ {
+ p.x = 0;
+ p.y = 0;
+ dst_point = &p;
+ }
+ else if (dst_point->x < 0 || dst_point->y < 0)
+ {
+ WARN("Invalid destination point.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
+ if (!src_rect)
+ {
+ r.left = 0;
+ r.top = 0;
+ r.right = src_surface->resource.width;
+ r.bottom = src_surface->resource.height;
+ src_rect = &r;
+ }
+ else if (src_rect->left < 0 || src_rect->left >= src_rect->right
+ || src_rect->top < 0 || src_rect->top >= src_rect->bottom)
+ {
+ WARN("Invalid source rectangle.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
+ dst_w = dst_surface->resource.width;
+ dst_h = dst_surface->resource.height;
+
+ update_w = src_rect->right - src_rect->left;
+ update_h = src_rect->bottom - src_rect->top;
+
+ if (update_w > dst_w || dst_point->x > dst_w - update_w
+ || update_h > dst_h || dst_point->y > dst_h - update_h)
+ {
+ WARN("Destination out of bounds.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
+ if ((src_surface->container->resource.format_flags & WINED3DFMT_FLAG_BLOCKS)
+ && !surface_check_block_align_rect(src_surface, src_rect))
+ {
+ WARN("Source rectangle not block-aligned.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
+ SetRect(&dst_rect, dst_point->x, dst_point->y, dst_point->x + update_w, dst_point->y + update_h);
+ if ((dst_surface->container->resource.format_flags & WINED3DFMT_FLAG_BLOCKS)
+ && !surface_check_block_align_rect(dst_surface, &dst_rect))
+ {
+ WARN("Destination rectangle not block-aligned.\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
if (wined3d_settings.cs_multithreaded)
{
FIXME("Waiting for cs.\n");
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 2d98a93..5a2b14e 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1371,7 +1371,7 @@ static BOOL surface_check_block_align(struct wined3d_surface *surface, const str
return wined3d_resource_check_block_align(&surface->resource, box);
}
-static BOOL surface_check_block_align_rect(struct wined3d_surface *surface, const RECT *rect)
+BOOL surface_check_block_align_rect(struct wined3d_surface *surface, const RECT *rect)
{
struct wined3d_box box = {rect->left, rect->top, rect->right, rect->bottom, 0, 1};
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 73da744..99212de 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2494,6 +2494,7 @@ void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct w
void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect_in,
struct wined3d_surface *src_surface, const RECT *src_rect_in, DWORD flags,
const WINEDDBLTFX *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
+BOOL surface_check_block_align_rect(struct wined3d_surface *surface, const RECT *rect) DECLSPEC_HIDDEN;
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
--
2.6.0

View File

@ -1,4 +1,4 @@
From dd0852f22f9a3e04e9fefae6c0a3ac4913cc390d Mon Sep 17 00:00:00 2001
From 96075d9a9e3aa2ea6317c31b91013964e33ee4ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 1 Aug 2013 00:10:40 +0200
Subject: wined3d: Send texture preloads through the CS
@ -10,19 +10,19 @@ Subject: wined3d: Send texture preloads through the CS
3 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 3264d17..78e5010 100644
index 74c5b81..d8b1ba8 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -70,6 +70,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_RESOURCE_UNMAP,
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_QUERY_DESTROY,
WINED3D_CS_OP_UPDATE_SURFACE,
+ WINED3D_CS_OP_TEXTURE_PRELOAD,
WINED3D_CS_OP_STOP,
};
@@ -389,6 +390,12 @@ struct wined3d_cs_update_surface
BOOL has_src_rect, has_dst_point;
@@ -389,6 +390,12 @@ struct wined3d_cs_query_destroy
struct wined3d_query *query;
};
+struct wined3d_cs_texture_preload
@ -34,7 +34,7 @@ index 3264d17..78e5010 100644
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -1827,6 +1834,30 @@ void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surfac
@@ -1894,6 +1901,30 @@ void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *
cs->ops->submit(cs, sizeof(*op));
}
@ -65,19 +65,19 @@ index 3264d17..78e5010 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -1875,6 +1906,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1942,6 +1973,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
/* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
+ /* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload,
};
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index b7891d9..ea8589a 100644
index 11ab91a..c031bb9 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -569,10 +569,8 @@ void wined3d_texture_load(struct wined3d_texture *texture,
@@ -492,10 +492,8 @@ void wined3d_texture_load(struct wined3d_texture *texture,
void CDECL wined3d_texture_preload(struct wined3d_texture *texture)
{
@ -91,17 +91,17 @@ index b7891d9..ea8589a 100644
void * CDECL wined3d_texture_get_parent(const struct wined3d_texture *texture)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 07d1613..de82b46 100644
index 3423cca..4327554 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2653,6 +2653,7 @@ void wined3d_cs_emit_query_get_data(struct wined3d_cs *cs, struct wined3d_query
@@ -2862,6 +2862,7 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
void wined3d_cs_emit_query_get_data(struct wined3d_cs *cs, struct wined3d_query *query, void *data,
UINT data_size, DWORD flags, HRESULT *ret) DECLSPEC_HIDDEN;
void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *query) DECLSPEC_HIDDEN;
void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surface *src,
const RECT *src_rect, struct wined3d_surface *dst, const POINT *dst_point) DECLSPEC_HIDDEN;
+void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_texture *texture) DECLSPEC_HIDDEN;
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.1.3
2.7.0

View File

@ -1,128 +0,0 @@
From 961a8cb3c42a2969dd1500b4fc16adb4d47b514f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 1 Aug 2013 00:00:26 +0200
Subject: wined3d: Send update_surface commands through the CS
---
dlls/wined3d/cs.c | 48 ++++++++++++++++++++++++++++++++++++++++++
dlls/wined3d/device.c | 9 ++------
dlls/wined3d/wined3d_private.h | 2 ++
3 files changed, 52 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 3540cb7..3264d17 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -69,6 +69,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_RESOURCE_UNMAP,
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_QUERY_DESTROY,
+ WINED3D_CS_OP_UPDATE_SURFACE,
WINED3D_CS_OP_STOP,
};
@@ -379,6 +380,15 @@ struct wined3d_cs_query_destroy
struct wined3d_query *query;
};
+struct wined3d_cs_update_surface
+{
+ enum wined3d_cs_op opcode;
+ struct wined3d_surface *src, *dst;
+ RECT src_rect;
+ POINT dst_point;
+ BOOL has_src_rect, has_dst_point;
+};
+
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -1780,6 +1790,43 @@ void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *
cs->ops->submit(cs, sizeof(*op));
}
+static UINT wined3d_cs_exec_update_surface(struct wined3d_cs *cs, const void *data)
+{
+ const struct wined3d_cs_update_surface *op = data;
+
+ surface_upload_from_surface(op->dst, op->has_dst_point ? &op->dst_point : NULL,
+ op->src, op->has_src_rect ? &op->src_rect : NULL);
+
+ return sizeof(*op);
+}
+
+void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surface *src, const RECT *src_rect,
+ struct wined3d_surface *dst, const POINT *dst_point)
+{
+ struct wined3d_cs_update_surface *op;
+
+ op = cs->ops->require_space(cs, sizeof(*op));
+ op->opcode = WINED3D_CS_OP_UPDATE_SURFACE;
+ op->src = src;
+ op->dst = dst;
+ op->has_src_rect = FALSE;
+ op->has_dst_point = FALSE;
+
+ if (src_rect)
+ {
+ op->has_src_rect = TRUE;
+ op->src_rect = *src_rect;
+ }
+
+ if (dst_point)
+ {
+ op->has_dst_point = TRUE;
+ op->dst_point = *dst_point;
+ }
+
+ cs->ops->submit(cs, sizeof(*op));
+}
+
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -1827,6 +1874,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
+ /* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
};
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index cd90c76..ed055f8 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3796,14 +3796,9 @@ HRESULT CDECL wined3d_device_update_surface(struct wined3d_device *device,
return WINED3DERR_INVALIDCALL;
}
- if (wined3d_settings.cs_multithreaded)
- {
- FIXME("Waiting for cs.\n");
- wined3d_cs_emit_glfinish(device->cs);
- device->cs->ops->finish(device->cs);
- }
+ wined3d_cs_emit_update_surface(device->cs, src_surface, src_rect, dst_surface, dst_point);
- return surface_upload_from_surface(dst_surface, dst_point, src_surface, src_rect);
+ return WINED3D_OK;
}
void CDECL wined3d_device_copy_resource(struct wined3d_device *device,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 8dd9786..07d1613 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2651,6 +2651,8 @@ void wined3d_cs_emit_query_issue(struct wined3d_cs *cs, struct wined3d_query *qu
void wined3d_cs_emit_query_get_data(struct wined3d_cs *cs, struct wined3d_query *query, void *data,
UINT data_size, DWORD flags, HRESULT *ret) DECLSPEC_HIDDEN;
void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *query) DECLSPEC_HIDDEN;
+void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surface *src,
+ const RECT *src_rect, struct wined3d_surface *dst, const POINT *dst_point) DECLSPEC_HIDDEN;
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.1.3

View File

@ -1,4 +1,4 @@
From 74ca9354ca44c727c7efeeee0d5f56caf19960ef Mon Sep 17 00:00:00 2001
From a9703c84295e0a1867e8d82917e0f90db4475149 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Thu, 1 Aug 2013 00:33:48 +0200
Subject: wined3d: Send update_texture calls through the CS
@ -10,18 +10,18 @@ Subject: wined3d: Send update_texture calls through the CS
3 files changed, 98 insertions(+), 64 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 2da4249..392ef36 100644
index d8b1ba8..a2ef7fb 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -72,6 +72,7 @@ enum wined3d_cs_op
@@ -71,6 +71,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_QUERY_DESTROY,
WINED3D_CS_OP_UPDATE_SURFACE,
WINED3D_CS_OP_TEXTURE_PRELOAD,
+ WINED3D_CS_OP_UPDATE_TEXTURE,
WINED3D_CS_OP_STOP,
};
@@ -406,6 +407,12 @@ struct wined3d_cs_texture_preload
@@ -396,6 +397,12 @@ struct wined3d_cs_texture_preload
struct wined3d_texture *texture;
};
@ -34,7 +34,7 @@ index 2da4249..392ef36 100644
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -1972,6 +1979,31 @@ void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_textu
@@ -1925,6 +1932,31 @@ void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_textu
cs->ops->submit(cs, sizeof(*op));
}
@ -66,16 +66,16 @@ index 2da4249..392ef36 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2022,6 +2054,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -1974,6 +2006,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
/* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
/* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload,
+ /* WINED3D_CS_OP_UPDATE_TEXTURE */ wined3d_cs_exec_update_texture,
};
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 4db078d..2dde4b6 100644
index a697fda..c4f530f 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3494,16 +3494,15 @@ void CDECL wined3d_device_draw_indexed_primitive_instanced(struct wined3d_device
@ -191,7 +191,7 @@ index 4db078d..2dde4b6 100644
i * src_levels + j + src_skip_levels));
dst_surface = surface_from_resource(wined3d_texture_get_sub_resource(dst_texture,
i * dst_levels + j));
- if (FAILED(hr = wined3d_device_update_surface(device, src_surface, NULL, dst_surface, NULL)))
- if (FAILED(hr = surface_upload_from_surface(dst_surface, NULL, src_surface, NULL)))
- {
- WARN("Failed to update surface, hr %#x.\n", hr);
- return hr;
@ -279,10 +279,10 @@ index 4db078d..2dde4b6 100644
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 8985d99..e5e0336 100644
index 4327554..3fe1e6e 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2212,6 +2212,8 @@ void device_resource_add(struct wined3d_device *device, struct wined3d_resource
@@ -2261,6 +2261,8 @@ void device_resource_add(struct wined3d_device *device, struct wined3d_resource
void device_resource_released(struct wined3d_device *device, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void device_invalidate_state(const struct wined3d_device *device, DWORD state) DECLSPEC_HIDDEN;
void device_invalidate_shader_constants(const struct wined3d_device *device, DWORD mask) DECLSPEC_HIDDEN;
@ -291,9 +291,9 @@ index 8985d99..e5e0336 100644
static inline BOOL isStateDirty(const struct wined3d_context *context, DWORD state)
{
@@ -2806,6 +2808,8 @@ void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *
void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surface *src,
const RECT *src_rect, struct wined3d_surface *dst, const POINT *dst_point) DECLSPEC_HIDDEN;
@@ -2863,6 +2865,8 @@ void wined3d_cs_emit_query_get_data(struct wined3d_cs *cs, struct wined3d_query
UINT data_size, DWORD flags, HRESULT *ret) DECLSPEC_HIDDEN;
void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *query) DECLSPEC_HIDDEN;
void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_texture *texture) DECLSPEC_HIDDEN;
+void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_texture *src,
+ struct wined3d_texture *dst) DECLSPEC_HIDDEN;

View File

@ -1,4 +1,4 @@
From f93c689f0844961269bd2e4f83bf242841c1e305 Mon Sep 17 00:00:00 2001
From 28d1f15692eeedd6ec07f2005ec6ebc8d89a7d1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Tue, 6 Aug 2013 13:50:31 +0200
Subject: wined3d: Handle evit_managed_resources through the CS
@ -10,18 +10,18 @@ Subject: wined3d: Handle evit_managed_resources through the CS
3 files changed, 41 insertions(+), 11 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 392ef36..bbec667 100644
index a2ef7fb..54d4dca 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -73,6 +73,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_UPDATE_SURFACE,
@@ -72,6 +72,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_QUERY_DESTROY,
WINED3D_CS_OP_TEXTURE_PRELOAD,
WINED3D_CS_OP_UPDATE_TEXTURE,
+ WINED3D_CS_OP_EVICT_RESOURCE,
WINED3D_CS_OP_STOP,
};
@@ -413,6 +414,12 @@ struct wined3d_cs_update_texture
@@ -403,6 +404,12 @@ struct wined3d_cs_update_texture
struct wined3d_texture *src, *dst;
};
@ -34,7 +34,7 @@ index 392ef36..bbec667 100644
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -2004,6 +2011,35 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
@@ -1957,6 +1964,35 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
cs->ops->submit(cs, sizeof(*op));
}
@ -70,8 +70,8 @@ index 392ef36..bbec667 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2055,6 +2091,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
@@ -2007,6 +2043,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
/* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload,
/* WINED3D_CS_OP_UPDATE_TEXTURE */ wined3d_cs_exec_update_texture,
+ /* WINED3D_CS_OP_EVICT_RESOURCE */ wined3d_cs_exec_evict_resource,
@ -79,10 +79,10 @@ index 392ef36..bbec667 100644
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 4abc2c5..7f7ddbb 100644
index 3913bd1..d8154a5 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -4489,13 +4489,8 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
@@ -4396,13 +4396,8 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
TRACE("device %p.\n", device);
@ -98,7 +98,7 @@ index 4abc2c5..7f7ddbb 100644
LIST_FOR_EACH_ENTRY_SAFE(resource, cursor, &device->resources, struct wined3d_resource, resource_list_entry)
{
TRACE("Checking resource %p for eviction.\n", resource);
@@ -4503,12 +4498,9 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
@@ -4410,12 +4405,9 @@ void CDECL wined3d_device_evict_managed_resources(struct wined3d_device *device)
if (resource->pool == WINED3D_POOL_MANAGED && !resource->map_count)
{
TRACE("Evicting %p.\n", resource);
@ -113,10 +113,10 @@ index 4abc2c5..7f7ddbb 100644
static void delete_opengl_contexts(struct wined3d_device *device, struct wined3d_swapchain *swapchain)
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e5e0336..60ff62f 100644
index 3fe1e6e..95580aa 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2810,6 +2810,7 @@ void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surfac
@@ -2867,6 +2867,7 @@ void wined3d_cs_emit_query_destroy(struct wined3d_cs *cs, struct wined3d_query *
void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_texture *texture) DECLSPEC_HIDDEN;
void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_texture *src,
struct wined3d_texture *dst) DECLSPEC_HIDDEN;

View File

@ -1,52 +1,18 @@
From a83b0e8543213b11848897ea954412ac0f06083a Mon Sep 17 00:00:00 2001
From 607eeb6bdbea6787dd6f5cc10c74e9b92e903e0d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Fri, 30 Aug 2013 10:41:42 +0200
Subject: wined3d: Fence update_texture and update_surface calls
---
dlls/wined3d/cs.c | 26 ++++++++++++++++++++++++++
dlls/wined3d/cs.c | 6 ++++++
dlls/wined3d/resource.c | 28 ++++++++++++++++++++++++++++
2 files changed, 54 insertions(+)
2 files changed, 34 insertions(+)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 1197eef..9a7e6df 100644
index d05f65d..7111c98 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -1844,6 +1844,16 @@ static UINT wined3d_cs_exec_update_surface(struct wined3d_cs *cs, const void *da
surface_upload_from_surface(op->dst, op->has_dst_point ? &op->dst_point : NULL,
op->src, op->has_src_rect ? &op->src_rect : NULL);
+ if (op->src->container)
+ wined3d_resource_dec_fence(&op->src->container->resource);
+ else
+ wined3d_resource_inc_fence(&op->src->resource);
+
+ if (op->dst->container)
+ wined3d_resource_dec_fence(&op->dst->container->resource);
+ else
+ wined3d_resource_inc_fence(&op->dst->resource);
+
return sizeof(*op);
}
@@ -1871,6 +1881,16 @@ void wined3d_cs_emit_update_surface(struct wined3d_cs *cs, struct wined3d_surfac
op->dst_point = *dst_point;
}
+ if (src->container)
+ wined3d_resource_inc_fence(&src->container->resource);
+ else
+ wined3d_resource_inc_fence(&src->resource);
+
+ if (dst->container)
+ wined3d_resource_inc_fence(&dst->container->resource);
+ else
+ wined3d_resource_inc_fence(&dst->resource);
+
cs->ops->submit(cs, sizeof(*op));
}
@@ -1930,6 +1950,9 @@ static UINT wined3d_cs_exec_update_texture(struct wined3d_cs *cs, const void *da
@@ -1967,6 +1967,9 @@ static UINT wined3d_cs_exec_update_texture(struct wined3d_cs *cs, const void *da
device_exec_update_texture(context, op->src, op->dst);
context_release(context);
@ -56,7 +22,7 @@ index 1197eef..9a7e6df 100644
return sizeof(*op);
}
@@ -1943,6 +1966,9 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
@@ -1980,6 +1983,9 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
op->src = src;
op->dst = dst;
@ -67,10 +33,10 @@ index 1197eef..9a7e6df 100644
}
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index af60d51..708b080 100644
index e1ae8d4..1e3f6b4 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -712,6 +712,32 @@ void *wined3d_resource_map_internal(struct wined3d_resource *resource, DWORD fla
@@ -821,6 +821,32 @@ void *wined3d_resource_map_internal(struct wined3d_resource *resource, DWORD fla
return mem;
}
@ -103,7 +69,7 @@ index af60d51..708b080 100644
HRESULT wined3d_resource_map(struct wined3d_resource *resource,
struct wined3d_map_desc *map_desc, const struct wined3d_box *box, DWORD flags)
{
@@ -730,6 +756,8 @@ HRESULT wined3d_resource_map(struct wined3d_resource *resource,
@@ -840,6 +866,8 @@ HRESULT wined3d_resource_map(struct wined3d_resource *resource,
flags = wined3d_resource_sanitize_map_flags(resource, flags);
@ -113,5 +79,5 @@ index af60d51..708b080 100644
if (!base_memory)
{
--
2.1.3
2.7.0

View File

@ -1,4 +1,4 @@
From 46ed74a72057957b7046b45b4cdfb4b34ad4016e Mon Sep 17 00:00:00 2001
From a94a1e128c6effd531b1722198dc63db0d1dbdc9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Sat, 6 Jul 2013 16:14:16 +0200
Subject: wined3d: Accelerate DISCARD buffer maps
@ -13,7 +13,7 @@ TODO3: Clean up the map_mem allocation mess.
3 files changed, 52 insertions(+), 4 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 2a814c6..5c6d36e 100644
index ae7d648..db2678c 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -1058,10 +1058,19 @@ HRESULT CDECL wined3d_buffer_map(struct wined3d_buffer *buffer, UINT offset, UIN
@ -40,18 +40,18 @@ index 2a814c6..5c6d36e 100644
base = buffer->map_ptr ? buffer->map_ptr : buffer->resource.map_heap_memory;
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 9307246..341b51c 100644
index 4973041..cd234d3 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -68,6 +68,7 @@ enum wined3d_cs_op
@@ -69,6 +69,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_RESOURCE_CHANGED,
WINED3D_CS_OP_RESOURCE_MAP,
WINED3D_CS_OP_RESOURCE_UNMAP,
+ WINED3D_CS_OP_BUFFER_SWAP_MEM,
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_QUERY_DESTROY,
WINED3D_CS_OP_UPDATE_SURFACE,
@@ -374,6 +375,13 @@ struct wined3d_cs_resource_changed
WINED3D_CS_OP_TEXTURE_PRELOAD,
@@ -382,6 +383,13 @@ struct wined3d_cs_resource_changed
void *swap_heap_memory;
};
@ -65,7 +65,7 @@ index 9307246..341b51c 100644
struct wined3d_cs_skip
{
enum wined3d_cs_op opcode;
@@ -2123,6 +2131,34 @@ void wined3d_cs_emit_evict_resource(struct wined3d_cs *cs, struct wined3d_resour
@@ -2140,6 +2148,34 @@ void wined3d_cs_emit_evict_resource(struct wined3d_cs *cs, struct wined3d_resour
cs->ops->submit(cs, sizeof(*op));
}
@ -100,7 +100,7 @@ index 9307246..341b51c 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2143,11 +2179,11 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2160,11 +2196,11 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_SET_INDEX_BUFFER */ wined3d_cs_exec_set_index_buffer,
/* WINED3D_CS_OP_SET_CONSTANT_BUFFER */ wined3d_cs_exec_set_constant_buffer,
/* WINED3D_CS_OP_SET_TEXTURE */ wined3d_cs_exec_set_texture,
@ -113,19 +113,19 @@ index 9307246..341b51c 100644
/* WINED3D_CS_OP_SET_SAMPLER_STATE */ wined3d_cs_exec_set_sampler_state,
/* WINED3D_CS_OP_SET_TRANSFORM */ wined3d_cs_exec_set_transform,
/* WINED3D_CS_OP_SET_CLIP_PLANE */ wined3d_cs_exec_set_clip_plane,
@@ -2169,6 +2205,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2187,6 +2223,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_CHANGED */ wined3d_cs_exec_resource_changed,
/* WINED3D_CS_OP_RESOURCE_MAP */ wined3d_cs_exec_resource_map,
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
+ /* WINED3D_CS_OP_BUFFER_SWAP_MEM */ wined3d_cs_exec_buffer_swap_mem,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
/* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
/* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 270162f..7d12df9 100644
index 53a1cf7..b0390e3 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2694,6 +2694,8 @@ void wined3d_cs_emit_surface_preload(struct wined3d_cs *cs, struct wined3d_surfa
@@ -2902,6 +2902,8 @@ void wined3d_cs_emit_texture_preload(struct wined3d_cs *cs, struct wined3d_textu
void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_texture *src,
struct wined3d_texture *dst) DECLSPEC_HIDDEN;
void wined3d_cs_emit_evict_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
@ -135,5 +135,5 @@ index 270162f..7d12df9 100644
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.1.3
2.7.0

View File

@ -1,4 +1,4 @@
From 9725eb43a6e513c68761a40b534f308c85e55086 Mon Sep 17 00:00:00 2001
From 593ea392aa3b805c14e6a1a9cf3fb3e9e5b077d1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Sat, 6 Jul 2013 17:05:12 +0200
Subject: wined3d: Access the buffer dirty areas through the CS
@ -52,7 +52,7 @@ index 7d1a532..9b6ccc8 100644
if (!(buffer->flags & WINED3D_BUFFER_DOUBLEBUFFER))
{
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 491ad85..bc90df2 100644
index cd234d3..5fe0092 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -70,6 +70,7 @@ enum wined3d_cs_op
@ -62,8 +62,8 @@ index 491ad85..bc90df2 100644
+ WINED3D_CS_OP_BUFFER_INVALIDATE_RANGE,
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_QUERY_DESTROY,
WINED3D_CS_OP_UPDATE_SURFACE,
@@ -392,6 +393,13 @@ struct wined3d_cs_buffer_swap_mem
WINED3D_CS_OP_TEXTURE_PRELOAD,
@@ -390,6 +391,13 @@ struct wined3d_cs_buffer_swap_mem
BYTE *mem;
};
@ -77,7 +77,7 @@ index 491ad85..bc90df2 100644
struct wined3d_cs_skip
{
enum wined3d_cs_op opcode;
@@ -2273,6 +2281,28 @@ void wined3d_cs_emit_buffer_swap_mem(struct wined3d_cs *cs, struct wined3d_buffe
@@ -2176,6 +2184,28 @@ void wined3d_cs_emit_buffer_swap_mem(struct wined3d_cs *cs, struct wined3d_buffe
cs->ops->submit(cs, sizeof(*op));
}
@ -106,19 +106,19 @@ index 491ad85..bc90df2 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2321,6 +2351,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2224,6 +2254,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_MAP */ wined3d_cs_exec_resource_map,
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
/* WINED3D_CS_OP_BUFFER_SWAP_MEM */ wined3d_cs_exec_buffer_swap_mem,
+ /* WINED3D_CS_OP_BUFFER_INVALIDATE_RANGE */ wined3d_cs_exec_buffer_invalidate_bo_range,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
/* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
/* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index e30ae80..7d0eba9 100644
index b0390e3..4335a6a 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2813,6 +2813,8 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
@@ -2904,6 +2904,8 @@ void wined3d_cs_emit_update_texture(struct wined3d_cs *cs, struct wined3d_textur
void wined3d_cs_emit_evict_resource(struct wined3d_cs *cs, struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void wined3d_cs_emit_buffer_swap_mem(struct wined3d_cs *cs, struct wined3d_buffer *buffer,
BYTE *mem) DECLSPEC_HIDDEN;
@ -127,7 +127,7 @@ index e30ae80..7d0eba9 100644
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
@@ -2898,6 +2900,7 @@ void buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_context *co
@@ -2989,6 +2991,7 @@ void buffer_get_memory(struct wined3d_buffer *buffer, struct wined3d_context *co
BYTE *buffer_get_sysmem(struct wined3d_buffer *This, struct wined3d_context *context) DECLSPEC_HIDDEN;
void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_context *context,
const struct wined3d_state *state) DECLSPEC_HIDDEN;
@ -136,5 +136,5 @@ index e30ae80..7d0eba9 100644
const struct wined3d_box *box, const void *data) DECLSPEC_HIDDEN;
--
2.6.4
2.7.0

View File

@ -1,4 +1,4 @@
From f0608f8a5916eea7e342db36ffe49427e40a4b49 Mon Sep 17 00:00:00 2001
From 7960fa371da4a860c23d9655f97df46e1b95b51c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Sun, 7 Jul 2013 12:02:59 +0200
Subject: wined3d: Send buffer preloads through the CS
@ -13,7 +13,7 @@ the dirty area list, have to be considered.
3 files changed, 33 insertions(+), 11 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 3ac45c6..a09ca90 100644
index 0544c93..f2a19b7 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -926,7 +926,6 @@ void buffer_internal_preload(struct wined3d_buffer *buffer, struct wined3d_conte
@ -43,18 +43,18 @@ index 3ac45c6..a09ca90 100644
struct wined3d_resource * CDECL wined3d_buffer_get_resource(struct wined3d_buffer *buffer)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 179f2e6..6b16d51 100644
index 5fe0092..025cc57 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -70,6 +70,7 @@ enum wined3d_cs_op
@@ -71,6 +71,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_RESOURCE_UNMAP,
WINED3D_CS_OP_BUFFER_SWAP_MEM,
WINED3D_CS_OP_BUFFER_INVALIDATE_RANGE,
+ WINED3D_CS_OP_BUFFER_PRELOAD,
WINED3D_CS_OP_QUERY_ISSUE,
WINED3D_CS_OP_QUERY_DESTROY,
WINED3D_CS_OP_UPDATE_SURFACE,
@@ -442,6 +443,12 @@ struct wined3d_cs_evict_resource
WINED3D_CS_OP_TEXTURE_PRELOAD,
@@ -435,6 +436,12 @@ struct wined3d_cs_evict_resource
struct wined3d_resource *resource;
};
@ -67,7 +67,7 @@ index 179f2e6..6b16d51 100644
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -2189,6 +2196,29 @@ void wined3d_cs_emit_buffer_invalidate_bo_range(struct wined3d_cs *cs,
@@ -2206,6 +2213,29 @@ void wined3d_cs_emit_buffer_invalidate_bo_range(struct wined3d_cs *cs,
cs->ops->submit(cs, sizeof(*op));
}
@ -97,19 +97,19 @@ index 179f2e6..6b16d51 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2237,6 +2267,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2255,6 +2285,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_UNMAP */ wined3d_cs_exec_resource_unmap,
/* WINED3D_CS_OP_BUFFER_SWAP_MEM */ wined3d_cs_exec_buffer_swap_mem,
/* WINED3D_CS_OP_BUFFER_INVALIDATE_RANGE */ wined3d_cs_exec_buffer_invalidate_bo_range,
+ /* WINED3D_CS_OP_BUFFER_PRELOAD */ wined3d_cs_exec_buffer_preload,
/* WINED3D_CS_OP_QUERY_ISSUE */ wined3d_cs_exec_query_issue,
/* WINED3D_CS_OP_QUERY_DESTROY */ wined3d_cs_exec_query_destroy,
/* WINED3D_CS_OP_UPDATE_SURFACE */ wined3d_cs_exec_update_surface,
/* WINED3D_CS_OP_TEXTURE_PRELOAD */ wined3d_cs_exec_texture_preload,
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index c683880..4070e1d 100644
index 4335a6a..8ba6e30 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2698,6 +2698,7 @@ void wined3d_cs_emit_buffer_swap_mem(struct wined3d_cs *cs, struct wined3d_buffe
@@ -2906,6 +2906,7 @@ void wined3d_cs_emit_buffer_swap_mem(struct wined3d_cs *cs, struct wined3d_buffe
BYTE *mem) DECLSPEC_HIDDEN;
void wined3d_cs_emit_buffer_invalidate_bo_range(struct wined3d_cs *cs,
struct wined3d_buffer *buffer, UINT offset, UINT size) DECLSPEC_HIDDEN;
@ -118,5 +118,5 @@ index c683880..4070e1d 100644
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.1.3
2.7.0

View File

@ -1,4 +1,4 @@
From 0fd12af6067cbe8aa8800098a602d808978d14ac Mon Sep 17 00:00:00 2001
From a03c917180369e66fc6dc41948d3786753d7c33f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Sun, 6 Oct 2013 16:12:24 +0200
Subject: wined3d: Clean up surfaces through the cs.
@ -10,10 +10,10 @@ Subject: wined3d: Clean up surfaces through the cs.
3 files changed, 46 insertions(+), 21 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 18b556d..91b76f5 100644
index 18ff64a..c723b54 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -86,6 +86,7 @@ enum wined3d_cs_op
@@ -84,6 +84,7 @@ enum wined3d_cs_op
WINED3D_CS_OP_RESOURCE_CLEANUP,
WINED3D_CS_OP_BUFFER_CLEANUP,
WINED3D_CS_OP_VOLUME_CLEANUP,
@ -21,7 +21,7 @@ index 18b556d..91b76f5 100644
WINED3D_CS_OP_STOP,
};
@@ -508,6 +509,12 @@ struct wined3d_cs_volume_cleanup
@@ -491,6 +492,12 @@ struct wined3d_cs_volume_cleanup
struct wined3d_volume *volume;
};
@ -34,7 +34,7 @@ index 18b556d..91b76f5 100644
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -2533,6 +2540,26 @@ void wined3d_cs_emit_volume_cleanup(struct wined3d_cs *cs, struct wined3d_volume
@@ -2436,6 +2443,26 @@ void wined3d_cs_emit_volume_cleanup(struct wined3d_cs *cs, struct wined3d_volume
cs->ops->submit(cs, sizeof(*op));
}
@ -61,7 +61,7 @@ index 18b556d..91b76f5 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2597,6 +2624,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2498,6 +2525,7 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_RESOURCE_CLEANUP */ wined3d_cs_exec_resource_cleanup,
/* WINED3D_CS_OP_BUFFER_CLEANUP */ wined3d_cs_exec_buffer_cleanup,
/* WINED3D_CS_OP_VOLUME_CLEANUP */ wined3d_cs_exec_volume_cleanup,
@ -70,7 +70,7 @@ index 18b556d..91b76f5 100644
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index c607072..e0164f1 100644
index ddbaef8..24a39bb 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -36,20 +36,10 @@ WINE_DECLARE_DEBUG_CHANNEL(d3d);
@ -80,7 +80,7 @@ index c607072..e0164f1 100644
-static void surface_cleanup(struct wined3d_surface *surface)
-{
- struct wined3d_surface *overlay, *cur;
-
- TRACE("surface %p.\n", surface);
-
- if (wined3d_settings.cs_multithreaded)
@ -88,7 +88,7 @@ index c607072..e0164f1 100644
- FIXME("Waiting for cs.\n");
- surface->resource.device->cs->ops->finish(surface->resource.device->cs);
- }
-
- if (surface->resource.buffer || surface->rb_multisample
- || surface->rb_resolved || !list_empty(&surface->renderbuffers))
+void wined3d_surface_cleanup_cs(struct wined3d_surface *surface)
@ -135,7 +135,7 @@ index c607072..e0164f1 100644
}
void surface_get_drawable_size(const struct wined3d_surface *surface, const struct wined3d_context *context,
@@ -5360,8 +5357,6 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text
@@ -5108,8 +5105,6 @@ static HRESULT surface_init(struct wined3d_surface *surface, struct wined3d_text
{
ERR("Private setup failed, hr %#x.\n", hr);
surface_cleanup(surface);
@ -144,7 +144,7 @@ index c607072..e0164f1 100644
return hr;
}
@@ -5404,7 +5399,7 @@ HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct w
@@ -5152,7 +5147,7 @@ HRESULT wined3d_surface_create(struct wined3d_texture *container, const struct w
if (FAILED(hr = surface_init(object, container, desc, target, level, layer, flags)))
{
WARN("Failed to initialize surface, returning %#x.\n", hr);
@ -154,18 +154,18 @@ index c607072..e0164f1 100644
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 96102af..cbc3fa9 100644
index 0203bfe..522d393 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2537,6 +2537,7 @@ void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect_
@@ -2661,6 +2661,7 @@ void wined3d_surface_upload_data(struct wined3d_surface *surface, const struct w
void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect_in,
struct wined3d_surface *src_surface, const RECT *src_rect_in, DWORD flags,
const WINEDDBLTFX *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
BOOL surface_check_block_align_rect(struct wined3d_surface *surface, const RECT *rect) DECLSPEC_HIDDEN;
+void wined3d_surface_cleanup_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
@@ -2800,6 +2801,7 @@ void wined3d_cs_emit_resource_cleanup(struct wined3d_cs *cs,
@@ -2919,6 +2920,7 @@ void wined3d_cs_emit_resource_cleanup(struct wined3d_cs *cs,
struct wined3d_resource *resource) DECLSPEC_HIDDEN;
void wined3d_cs_emit_buffer_cleanup(struct wined3d_cs *cs, struct wined3d_buffer *buffer) DECLSPEC_HIDDEN;
void wined3d_cs_emit_volume_cleanup(struct wined3d_cs *cs, struct wined3d_volume *volume) DECLSPEC_HIDDEN;
@ -174,5 +174,5 @@ index 96102af..cbc3fa9 100644
/* Direct3D terminology with little modifications. We do not have an issued state
* because only the driver knows about it, but we have a created state because d3d
--
2.6.0
2.7.0

View File

@ -1,4 +1,4 @@
From f51b464c3100bfdea3de7e6dde646f97e09fccb6 Mon Sep 17 00:00:00 2001
From c58d7ad7ff9aa243f52380343bce58a0ed069bfa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20D=C3=B6singer?= <stefan@codeweavers.com>
Date: Sun, 16 Mar 2014 14:13:42 +0100
Subject: wined3d: Send getdc and releasedc through the command stream.
@ -15,10 +15,10 @@ investigate atm.
4 files changed, 121 insertions(+), 57 deletions(-)
diff --git a/dlls/wined3d/cs.c b/dlls/wined3d/cs.c
index 0aab83b..c135ece 100644
index 1be16ad..8bf006d 100644
--- a/dlls/wined3d/cs.c
+++ b/dlls/wined3d/cs.c
@@ -90,6 +90,8 @@ enum wined3d_cs_op
@@ -89,6 +89,8 @@ enum wined3d_cs_op
WINED3D_CS_OP_CREATE_DUMMY_TEXTURES,
WINED3D_CS_OP_CREATE_SWAPCHAIN_CONTEXT,
WINED3D_CS_OP_DELETE_GL_CONTEXTS,
@ -27,7 +27,7 @@ index 0aab83b..c135ece 100644
WINED3D_CS_OP_STOP,
};
@@ -536,6 +538,18 @@ struct wined3d_cs_delete_gl_contexts
@@ -526,6 +528,18 @@ struct wined3d_cs_delete_gl_contexts
struct wined3d_swapchain *swapchain;
};
@ -46,7 +46,7 @@ index 0aab83b..c135ece 100644
static void wined3d_cs_mt_submit(struct wined3d_cs *cs, size_t size)
{
LONG new_val = (cs->queue.head + size) & (WINED3D_CS_QUEUE_SIZE - 1);
@@ -2661,6 +2675,48 @@ void wined3d_cs_emit_delete_opengl_contexts(struct wined3d_cs *cs, struct wined3
@@ -2594,6 +2608,48 @@ void wined3d_cs_emit_delete_opengl_contexts(struct wined3d_cs *cs, struct wined3
cs->ops->finish(cs);
}
@ -95,7 +95,7 @@ index 0aab83b..c135ece 100644
static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void *data) =
{
/* WINED3D_CS_OP_NOP */ wined3d_cs_exec_nop,
@@ -2729,6 +2785,8 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
@@ -2661,6 +2717,8 @@ static UINT (* const wined3d_cs_op_handlers[])(struct wined3d_cs *cs, const void
/* WINED3D_CS_OP_CREATE_DUMMY_TEXTURES */ wined3d_cs_exec_create_dummy_textures,
/* WINED3D_CS_OP_CREATE_SWAPCHAIN_CONTEXT */ wined3d_cs_exec_create_swapchain_context,
/* WINED3D_CS_OP_DELETE_GL_CONTEXTS */ wined3d_cs_exec_delete_gl_contexts,
@ -105,10 +105,10 @@ index 0aab83b..c135ece 100644
static inline void *_wined3d_cs_mt_require_space(struct wined3d_cs *cs, size_t size, BOOL prio)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index 822f36f..d70e310 100644
index ef85801..6b0014c 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -2456,6 +2456,62 @@ HRESULT CDECL wined3d_surface_map(struct wined3d_surface *surface,
@@ -2356,6 +2356,62 @@ HRESULT wined3d_surface_map(struct wined3d_surface *surface, struct wined3d_map_
return wined3d_resource_map(&surface->resource, map_desc, box, flags);
}
@ -172,10 +172,10 @@ index 822f36f..d70e310 100644
struct wined3d_context *old_ctx, DWORD dst_location)
{
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index d17a6e1..a9dbf42 100644
index ba58453..4cf1c5d 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -1561,10 +1561,8 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
@@ -1589,10 +1589,8 @@ HRESULT CDECL wined3d_texture_create(struct wined3d_device *device, const struct
HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned int sub_resource_idx, HDC *dc)
{
struct wined3d_device *device = texture->resource.device;
@ -186,7 +186,7 @@ index d17a6e1..a9dbf42 100644
TRACE("texture %p, sub_resource_idx %u, dc %p.\n", texture, sub_resource_idx, dc);
@@ -1585,14 +1583,6 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
@@ -1613,14 +1611,6 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
return WINED3DERR_INVALIDCALL;
}
@ -201,7 +201,7 @@ index d17a6e1..a9dbf42 100644
/* Give more detailed info for ddraw. */
if (surface->flags & SFLAG_DCINUSE)
return WINEDDERR_DCALREADYCREATED;
@@ -1601,43 +1591,18 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
@@ -1629,43 +1619,18 @@ HRESULT CDECL wined3d_texture_get_dc(struct wined3d_texture *texture, unsigned i
if (surface->resource.map_count)
return WINED3DERR_INVALIDCALL;
@ -247,7 +247,7 @@ index d17a6e1..a9dbf42 100644
struct wined3d_resource *sub_resource;
struct wined3d_surface *surface;
@@ -1667,26 +1632,7 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
@@ -1695,26 +1660,7 @@ HRESULT CDECL wined3d_texture_release_dc(struct wined3d_texture *texture, unsign
surface->resource.map_count--;
surface->flags &= ~SFLAG_DCINUSE;
@ -276,19 +276,19 @@ index d17a6e1..a9dbf42 100644
return WINED3D_OK;
}
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 5bb6a21..0e0e3fe 100644
index 2481ad6..fa72a01 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2623,6 +2623,8 @@ void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect_
@@ -2665,6 +2665,8 @@ void surface_blt_ugly(struct wined3d_surface *dst_surface, const RECT *dst_rect_
struct wined3d_surface *src_surface, const RECT *src_rect_in, DWORD flags,
const WINEDDBLTFX *fx, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
BOOL surface_check_block_align_rect(struct wined3d_surface *surface, const RECT *rect) DECLSPEC_HIDDEN;
void wined3d_surface_cleanup_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
+void wined3d_surface_getdc_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
+void wined3d_surface_releasedc_cs(struct wined3d_surface *surface) DECLSPEC_HIDDEN;
void draw_textured_quad(const struct wined3d_surface *src_surface, struct wined3d_context *context,
const RECT *src_rect, const RECT *dst_rect, enum wined3d_texture_filter_type filter) DECLSPEC_HIDDEN;
@@ -2895,6 +2897,8 @@ HRESULT wined3d_cs_emit_create_swapchain_context(struct wined3d_cs *cs,
@@ -2935,6 +2937,8 @@ HRESULT wined3d_cs_emit_create_swapchain_context(struct wined3d_cs *cs,
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;
void wined3d_cs_emit_delete_opengl_contexts(struct wined3d_cs *cs,
struct wined3d_swapchain *swapchain) DECLSPEC_HIDDEN;

Some files were not shown because too many files have changed in this diff Show More