Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
9373cd5e
Commit
9373cd5e
authored
Jul 17, 2023
by
Zebediah Figura
Committed by
Alexandre Julliard
Aug 02, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wined3d: Pass map flags to wined3d_context_copy_bo_address().
This is a step towards implementing D3D11_COPY_FLAGS.
parent
2f84616e
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
37 additions
and
29 deletions
+37
-29
adapter_gl.c
dlls/wined3d/adapter_gl.c
+2
-2
adapter_vk.c
dlls/wined3d/adapter_vk.c
+5
-9
buffer.c
dlls/wined3d/buffer.c
+18
-4
context_gl.c
dlls/wined3d/context_gl.c
+1
-5
directx.c
dlls/wined3d/directx.c
+1
-1
texture.c
dlls/wined3d/texture.c
+2
-1
view.c
dlls/wined3d/view.c
+3
-2
wined3d_private.h
dlls/wined3d/wined3d_private.h
+4
-4
wined3d_vk.h
dlls/wined3d/wined3d_vk.h
+1
-1
No files found.
dlls/wined3d/adapter_gl.c
View file @
9373cd5e
...
...
@@ -4600,9 +4600,9 @@ static void adapter_gl_unmap_bo_address(struct wined3d_context *context,
static
void
adapter_gl_copy_bo_address
(
struct
wined3d_context
*
context
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
{
wined3d_context_gl_copy_bo_address
(
wined3d_context_gl
(
context
),
dst
,
src
,
range_count
,
ranges
);
wined3d_context_gl_copy_bo_address
(
wined3d_context_gl
(
context
),
dst
,
src
,
range_count
,
ranges
,
map_flags
);
}
static
void
adapter_gl_flush_bo_address
(
struct
wined3d_context
*
context
,
...
...
dlls/wined3d/adapter_vk.c
View file @
9373cd5e
...
...
@@ -1029,14 +1029,13 @@ static void adapter_vk_unmap_bo_address(struct wined3d_context *context,
void
adapter_vk_copy_bo_address
(
struct
wined3d_context
*
context
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
{
struct
wined3d_context_vk
*
context_vk
=
wined3d_context_vk
(
context
);
const
struct
wined3d_vk_info
*
vk_info
=
context_vk
->
vk_info
;
struct
wined3d_bo_vk
staging_bo
,
*
src_bo
,
*
dst_bo
;
VkAccessFlags
src_access_mask
,
dst_access_mask
;
VkBufferMemoryBarrier
vk_barrier
[
2
];
DWORD
map_flags
=
WINED3D_MAP_WRITE
;
const
struct
wined3d_range
*
range
;
struct
wined3d_bo_address
staging
;
VkCommandBuffer
vk_command_buffer
;
...
...
@@ -1048,9 +1047,6 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context,
src_bo
=
src
->
buffer_object
?
wined3d_bo_vk
(
src
->
buffer_object
)
:
NULL
;
dst_bo
=
dst
->
buffer_object
?
wined3d_bo_vk
(
dst
->
buffer_object
)
:
NULL
;
if
(
dst_bo
&&
!
dst
->
addr
&&
!
ranges
->
offset
&&
ranges
->
size
==
dst_bo
->
size
)
map_flags
|=
WINED3D_MAP_DISCARD
;
if
(
src_bo
&&
dst_bo
)
{
if
(
!
(
vk_command_buffer
=
wined3d_context_vk_get_command_buffer
(
context_vk
)))
...
...
@@ -1131,8 +1127,8 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context,
staging
.
buffer_object
=
&
staging_bo
.
b
;
staging
.
addr
=
NULL
;
adapter_vk_copy_bo_address
(
context
,
&
staging
,
src
,
range_count
,
ranges
);
adapter_vk_copy_bo_address
(
context
,
dst
,
&
staging
,
range_count
,
ranges
);
adapter_vk_copy_bo_address
(
context
,
&
staging
,
src
,
range_count
,
ranges
,
WINED3D_MAP_WRITE
);
adapter_vk_copy_bo_address
(
context
,
dst
,
&
staging
,
range_count
,
ranges
,
WINED3D_MAP_WRITE
);
wined3d_context_vk_destroy_bo
(
context_vk
,
&
staging_bo
);
...
...
@@ -1151,8 +1147,8 @@ void adapter_vk_copy_bo_address(struct wined3d_context *context,
staging
.
buffer_object
=
&
staging_bo
.
b
;
staging
.
addr
=
NULL
;
adapter_vk_copy_bo_address
(
context
,
&
staging
,
src
,
range_count
,
ranges
);
adapter_vk_copy_bo_address
(
context
,
dst
,
&
staging
,
range_count
,
ranges
);
adapter_vk_copy_bo_address
(
context
,
&
staging
,
src
,
range_count
,
ranges
,
WINED3D_MAP_WRITE
);
adapter_vk_copy_bo_address
(
context
,
dst
,
&
staging
,
range_count
,
ranges
,
WINED3D_MAP_WRITE
);
wined3d_context_vk_destroy_bo
(
context_vk
,
&
staging_bo
);
...
...
dlls/wined3d/buffer.c
View file @
9373cd5e
...
...
@@ -562,7 +562,7 @@ static void buffer_conversion_upload(struct wined3d_buffer *buffer, struct wined
dst
.
addr
=
NULL
;
src
.
buffer_object
=
NULL
;
src
.
addr
=
data
;
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
buffer
->
modified_areas
,
buffer
->
maps
);
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
buffer
->
modified_areas
,
buffer
->
maps
,
WINED3D_MAP_WRITE
);
heap_free
(
data
);
}
...
...
@@ -629,7 +629,7 @@ BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer,
src
.
addr
=
NULL
;
range
.
offset
=
0
;
range
.
size
=
buffer
->
resource
.
size
;
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
1
,
&
range
);
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
1
,
&
range
,
WINED3D_MAP_WRITE
);
}
break
;
...
...
@@ -648,9 +648,19 @@ BOOL wined3d_buffer_load_location(struct wined3d_buffer *buffer,
src
.
addr
=
buffer
->
resource
.
heap_memory
;
if
(
!
buffer
->
conversion_map
)
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
buffer
->
modified_areas
,
buffer
->
maps
);
{
uint32_t
map_flags
=
WINED3D_MAP_WRITE
;
if
(
buffer
->
modified_areas
==
1
&&
!
buffer
->
maps
[
0
].
offset
&&
buffer
->
maps
[
0
].
size
==
buffer
->
resource
.
size
)
map_flags
|=
WINED3D_MAP_DISCARD
;
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
buffer
->
modified_areas
,
buffer
->
maps
,
map_flags
);
}
else
{
buffer_conversion_upload
(
buffer
,
context
);
}
break
;
default:
...
...
@@ -1134,16 +1144,20 @@ static void wined3d_buffer_set_bo(struct wined3d_buffer *buffer, struct wined3d_
void
wined3d_buffer_copy_bo_address
(
struct
wined3d_buffer
*
dst_buffer
,
struct
wined3d_context
*
context
,
unsigned
int
dst_offset
,
const
struct
wined3d_const_bo_address
*
src_addr
,
unsigned
int
size
)
{
uint32_t
map_flags
=
WINED3D_MAP_WRITE
;
struct
wined3d_bo_address
dst_addr
;
struct
wined3d_range
range
;
DWORD
dst_location
;
if
(
!
dst_offset
&&
size
==
dst_buffer
->
resource
.
size
)
map_flags
|=
WINED3D_MAP_DISCARD
;
dst_location
=
wined3d_buffer_get_memory
(
dst_buffer
,
context
,
&
dst_addr
);
dst_addr
.
addr
+=
dst_offset
;
range
.
offset
=
0
;
range
.
size
=
size
;
wined3d_context_copy_bo_address
(
context
,
&
dst_addr
,
(
const
struct
wined3d_bo_address
*
)
src_addr
,
1
,
&
range
);
wined3d_context_copy_bo_address
(
context
,
&
dst_addr
,
(
const
struct
wined3d_bo_address
*
)
src_addr
,
1
,
&
range
,
map_flags
);
wined3d_buffer_invalidate_range
(
dst_buffer
,
~
dst_location
,
dst_offset
,
size
);
}
...
...
dlls/wined3d/context_gl.c
View file @
9373cd5e
...
...
@@ -3067,9 +3067,8 @@ void wined3d_context_gl_flush_bo_address(struct wined3d_context_gl *context_gl,
void
wined3d_context_gl_copy_bo_address
(
struct
wined3d_context_gl
*
context_gl
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
{
uint32_t
map_flags
=
WINED3D_MAP_WRITE
;
const
struct
wined3d_gl_info
*
gl_info
;
struct
wined3d_bo_gl
*
src_bo
,
*
dst_bo
;
BYTE
*
dst_ptr
,
*
src_ptr
;
...
...
@@ -3079,9 +3078,6 @@ void wined3d_context_gl_copy_bo_address(struct wined3d_context_gl *context_gl,
src_bo
=
src
->
buffer_object
?
wined3d_bo_gl
(
src
->
buffer_object
)
:
NULL
;
dst_bo
=
dst
->
buffer_object
?
wined3d_bo_gl
(
dst
->
buffer_object
)
:
NULL
;
if
(
dst_bo
&&
!
dst
->
addr
&&
!
ranges
->
offset
&&
ranges
->
size
==
dst_bo
->
size
)
map_flags
|=
WINED3D_MAP_DISCARD
;
if
(
dst_bo
&&
src_bo
)
{
if
(
gl_info
->
supported
[
ARB_COPY_BUFFER
])
...
...
dlls/wined3d/directx.c
View file @
9373cd5e
...
...
@@ -2981,7 +2981,7 @@ static void adapter_no3d_unmap_bo_address(struct wined3d_context *context,
static
void
adapter_no3d_copy_bo_address
(
struct
wined3d_context
*
context
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
{
unsigned
int
i
;
...
...
dlls/wined3d/texture.c
View file @
9373cd5e
...
...
@@ -867,7 +867,8 @@ BOOL wined3d_texture_load_location(struct wined3d_texture *texture,
{
wined3d_texture_get_bo_address
(
texture
,
sub_resource_idx
,
&
source
,
(
current
&
wined3d_texture_sysmem_locations
));
wined3d_context_copy_bo_address
(
context
,
&
destination
,
&
source
,
1
,
&
range
);
wined3d_context_copy_bo_address
(
context
,
&
destination
,
&
source
,
1
,
&
range
,
WINED3D_MAP_WRITE
|
WINED3D_MAP_DISCARD
);
}
ret
=
TRUE
;
}
...
...
dlls/wined3d/view.c
View file @
9373cd5e
...
...
@@ -1689,7 +1689,7 @@ void wined3d_unordered_access_view_set_counter(struct wined3d_unordered_access_v
range
.
offset
=
0
;
range
.
size
=
sizeof
(
value
);
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
1
,
&
range
);
wined3d_context_copy_bo_address
(
context
,
&
dst
,
&
src
,
1
,
&
range
,
WINED3D_MAP_WRITE
|
WINED3D_MAP_DISCARD
);
context_release
(
context
);
}
...
...
@@ -2175,7 +2175,8 @@ void wined3d_unordered_access_view_vk_clear(struct wined3d_unordered_access_view
range
.
offset
=
0
;
range
.
size
=
sizeof
(
constants
);
adapter_vk_copy_bo_address
(
&
context_vk
->
c
,
&
cb_destination_address
,
&
cb_source_address
,
1
,
&
range
);
adapter_vk_copy_bo_address
(
&
context_vk
->
c
,
&
cb_destination_address
,
&
cb_source_address
,
1
,
&
range
,
WINED3D_MAP_WRITE
|
WINED3D_MAP_DISCARD
);
buffer_info
.
buffer
=
constants_bo
.
vk_buffer
;
buffer_info
.
range
=
constants_bo
.
size
;
...
...
dlls/wined3d/wined3d_private.h
View file @
9373cd5e
...
...
@@ -2275,7 +2275,7 @@ void wined3d_context_gl_bind_texture(struct wined3d_context_gl *context_gl,
void
wined3d_context_gl_check_fbo_status
(
const
struct
wined3d_context_gl
*
context_gl
,
GLenum
target
)
DECLSPEC_HIDDEN
;
void
wined3d_context_gl_copy_bo_address
(
struct
wined3d_context_gl
*
context_gl
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
DECLSPEC_HIDDEN
;
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
DECLSPEC_HIDDEN
;
void
wined3d_context_gl_destroy
(
struct
wined3d_context_gl
*
context_gl
)
DECLSPEC_HIDDEN
;
void
wined3d_context_gl_destroy_bo
(
struct
wined3d_context_gl
*
context_gl
,
struct
wined3d_bo_gl
*
bo
)
DECLSPEC_HIDDEN
;
void
wined3d_context_gl_draw_shaded_quad
(
struct
wined3d_context_gl
*
context_gl
,
struct
wined3d_texture_gl
*
texture_gl
,
...
...
@@ -2910,7 +2910,7 @@ struct wined3d_adapter_ops
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
);
void
(
*
adapter_copy_bo_address
)(
struct
wined3d_context
*
context
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
);
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
);
void
(
*
adapter_flush_bo_address
)(
struct
wined3d_context
*
context
,
const
struct
wined3d_const_bo_address
*
data
,
size_t
size
);
bool
(
*
adapter_alloc_bo
)(
struct
wined3d_device
*
device
,
struct
wined3d_resource
*
resource
,
...
...
@@ -5622,9 +5622,9 @@ static inline void wined3d_context_unmap_bo_address(struct wined3d_context *cont
static
inline
void
wined3d_context_copy_bo_address
(
struct
wined3d_context
*
context
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
{
context
->
device
->
adapter
->
adapter_ops
->
adapter_copy_bo_address
(
context
,
dst
,
src
,
range_count
,
ranges
);
context
->
device
->
adapter
->
adapter_ops
->
adapter_copy_bo_address
(
context
,
dst
,
src
,
range_count
,
ranges
,
map_flags
);
}
static
inline
void
wined3d_context_flush_bo_address
(
struct
wined3d_context
*
context
,
...
...
dlls/wined3d/wined3d_vk.h
View file @
9373cd5e
...
...
@@ -704,7 +704,7 @@ static inline struct wined3d_adapter_vk *wined3d_adapter_vk(struct wined3d_adapt
void
adapter_vk_copy_bo_address
(
struct
wined3d_context
*
context
,
const
struct
wined3d_bo_address
*
dst
,
const
struct
wined3d_bo_address
*
src
,
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
)
DECLSPEC_HIDDEN
;
unsigned
int
range_count
,
const
struct
wined3d_range
*
ranges
,
uint32_t
map_flags
)
DECLSPEC_HIDDEN
;
unsigned
int
wined3d_adapter_vk_get_memory_type_index
(
const
struct
wined3d_adapter_vk
*
adapter_vk
,
uint32_t
memory_type_mask
,
VkMemoryPropertyFlags
flags
)
DECLSPEC_HIDDEN
;
BOOL
wined3d_adapter_vk_init_format_info
(
struct
wined3d_adapter_vk
*
adapter_vk
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment