First part of Proton shared memory series. The full branch can be seen at https://gitlab.winehq.org/rbernon/wine/-/commits/mr/shared-memories.
-- v37: win32u: Use the desktop shared data for GetCursorPos. server: Move the last cursor time to the desktop session object. server: Move the cursor position to the desktop session object. win32u: Open desktop shared objects from session mapping. win32u: Open the global session shared mapping. server: Return the desktop object info in get_thread_desktop. server: Allocate shared session object for desktops. include: Add ReadNoFence64 inline helpers. server: Create a global session shared mapping.
From: Rémi Bernon rbernon@codeweavers.com
--- server/directory.c | 7 +++++++ server/file.h | 19 +++++++++++++++++++ server/mapping.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ server/object.c | 13 ++++++++++++- server/object.h | 2 ++ server/protocol.def | 16 ++++++++++++++++ tools/make_requests | 1 + 7 files changed, 102 insertions(+), 1 deletion(-)
diff --git a/server/directory.c b/server/directory.c index e521a7b38c9..224bd999219 100644 --- a/server/directory.c +++ b/server/directory.c @@ -439,11 +439,14 @@ void init_directories( struct fd *intl_fd ) /* mappings */ static const WCHAR intlW[] = {'N','l','s','S','e','c','t','i','o','n','L','A','N','G','_','I','N','T','L'}; static const WCHAR user_dataW[] = {'_','_','w','i','n','e','_','u','s','e','r','_','s','h','a','r','e','d','_','d','a','t','a'}; + static const WCHAR sessionW[] = {'_','_','w','i','n','e','_','s','e','s','s','i','o','n'}; static const struct unicode_str intl_str = {intlW, sizeof(intlW)}; static const struct unicode_str user_data_str = {user_dataW, sizeof(user_dataW)}; + static const struct unicode_str session_str = {sessionW, sizeof(sessionW)};
struct directory *dir_driver, *dir_device, *dir_global, *dir_kernel, *dir_nls; struct object *named_pipe_device, *mailslot_device, *null_device; + struct mapping *session_mapping; unsigned int i;
root_directory = create_directory( NULL, NULL, OBJ_PERMANENT, HASH_SIZE, NULL ); @@ -491,6 +494,10 @@ void init_directories( struct fd *intl_fd ) release_object( create_user_data_mapping( &dir_kernel->obj, &user_data_str, OBJ_PERMANENT, NULL )); release_object( intl_fd );
+ session_mapping = create_session_mapping( &dir_kernel->obj, &session_str, OBJ_PERMANENT, NULL ); + set_session_mapping( session_mapping ); + release_object( session_mapping ); + release_object( named_pipe_device ); release_object( mailslot_device ); release_object( null_device ); diff --git a/server/file.h b/server/file.h index 7f2d1637863..661e8f9d159 100644 --- a/server/file.h +++ b/server/file.h @@ -188,6 +188,25 @@ extern struct mapping *create_fd_mapping( struct object *root, const struct unic unsigned int attr, const struct security_descriptor *sd ); extern struct object *create_user_data_mapping( struct object *root, const struct unicode_str *name, unsigned int attr, const struct security_descriptor *sd ); +extern struct mapping *create_session_mapping( struct object *root, const struct unicode_str *name, + unsigned int attr, const struct security_descriptor *sd ); +extern void set_session_mapping( struct mapping *mapping ); + +#define SHARED_WRITE_BEGIN( object_shm, type ) \ + do { \ + const type *__shared = (object_shm); \ + type *shared = (type *)__shared; \ + shared_object_t *__obj = CONTAINING_RECORD( shared, shared_object_t, shm ); \ + LONG64 __seq = __obj->seq + 1, __end = __seq + 1; \ + assert( (__seq & 1) != 0 ); \ + __WINE_ATOMIC_STORE_RELEASE( &__obj->seq, &__seq ); \ + do + +#define SHARED_WRITE_END \ + while(0); \ + assert( __seq == __obj->seq ); \ + __WINE_ATOMIC_STORE_RELEASE( &__obj->seq, &__end ); \ + } while(0)
/* device functions */
diff --git a/server/mapping.c b/server/mapping.c index ff99b45ce51..6605c111beb 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -225,6 +225,23 @@ static const mem_size_t granularity_mask = 0xffff; static struct addr_range ranges32; static struct addr_range ranges64;
+struct session_block +{ + struct list entry; /* entry in the session block list */ + const char *data; /* base pointer for the mmaped data */ +}; + +struct session +{ + struct list blocks; +}; + +static struct mapping *session_mapping; +static struct session session = +{ + .blocks = LIST_INIT(session.blocks), +}; + #define ROUND_SIZE(size) (((size) + page_mask) & ~page_mask)
void init_memory(void) @@ -1256,6 +1273,34 @@ int get_page_size(void) return page_mask + 1; }
+struct mapping *create_session_mapping( struct object *root, const struct unicode_str *name, + unsigned int attr, const struct security_descriptor *sd ) +{ + static const unsigned int access = FILE_READ_DATA | FILE_WRITE_DATA; + mem_size_t size = max( sizeof(shared_object_t) * 512, 0x10000 ); + + return create_mapping( root, name, attr, size, SEC_COMMIT, 0, access, sd ); +} + +void set_session_mapping( struct mapping *mapping ) +{ + int unix_fd = get_unix_fd( mapping->fd ); + mem_size_t size = mapping->size; + struct session_block *block; + void *tmp; + + if (!(block = mem_alloc( sizeof(*block) ))) return; + if ((tmp = mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, unix_fd, 0 )) == MAP_FAILED) + { + free( block ); + return; + } + + block->data = tmp; + session_mapping = mapping; + list_add_tail( &session.blocks, &block->entry ); +} + struct object *create_user_data_mapping( struct object *root, const struct unicode_str *name, unsigned int attr, const struct security_descriptor *sd ) { diff --git a/server/object.c b/server/object.c index 89e541ffb6b..9204593cb6c 100644 --- a/server/object.c +++ b/server/object.c @@ -102,8 +102,19 @@ void close_objects(void)
/*****************************************************************/
+/* mark a block of memory as not accessible for debugging purposes */ +void mark_block_noaccess( void *ptr, size_t size ) +{ + memset( ptr, 0xfe, size ); +#if defined(VALGRIND_MAKE_MEM_NOACCESS) + VALGRIND_DISCARD( VALGRIND_MAKE_MEM_NOACCESS( ptr, size ) ); +#elif defined(VALGRIND_MAKE_NOACCESS) + VALGRIND_DISCARD( VALGRIND_MAKE_NOACCESS( ptr, size ) ); +#endif +} + /* mark a block of memory as uninitialized for debugging purposes */ -static inline void mark_block_uninitialized( void *ptr, size_t size ) +void mark_block_uninitialized( void *ptr, size_t size ) { memset( ptr, 0x55, size ); #if defined(VALGRIND_MAKE_MEM_UNDEFINED) diff --git a/server/object.h b/server/object.h index d4d66536b81..2337ee88231 100644 --- a/server/object.h +++ b/server/object.h @@ -139,6 +139,8 @@ struct wait_queue_entry struct thread_wait *wait; };
+extern void mark_block_noaccess( void *ptr, size_t size ); +extern void mark_block_uninitialized( void *ptr, size_t size ); extern void *mem_alloc( size_t size ) __WINE_ALLOC_SIZE(1) __WINE_DEALLOC(free) __WINE_MALLOC; extern void *memdup( const void *data, size_t len ) __WINE_ALLOC_SIZE(2) __WINE_DEALLOC(free); extern void *alloc_object( const struct object_ops *ops ); diff --git a/server/protocol.def b/server/protocol.def index f6d644d6182..6a51d5390f4 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -45,6 +45,7 @@ typedef unsigned __int64 mem_size_t; typedef unsigned __int64 file_pos_t; typedef unsigned __int64 client_ptr_t; typedef unsigned __int64 affinity_t; +typedef unsigned __int64 object_id_t; typedef client_ptr_t mod_handle_t;
struct request_header @@ -887,6 +888,21 @@ typedef struct lparam_t info; } cursor_pos_t;
+/****************************************************************/ +/* shared session mapping structures */ + +typedef volatile union +{ + char placeholder; +} object_shm_t; + +typedef volatile struct +{ + LONG64 seq; /* sequence number - server updating if (seq & 1) != 0 */ + object_id_t id; /* object unique id, object data is valid if != 0 */ + object_shm_t shm; /* object shared data */ +} shared_object_t; + /****************************************************************/ /* Request declarations */
diff --git a/tools/make_requests b/tools/make_requests index 419b1264ea4..b20b53096ca 100755 --- a/tools/make_requests +++ b/tools/make_requests @@ -42,6 +42,7 @@ my %formats = "file_pos_t" => [ 8, 8, "&dump_uint64" ], "mem_size_t" => [ 8, 8, "&dump_uint64" ], "affinity_t" => [ 8, 8, "&dump_uint64" ], + "object_id_t" => [ 8, 8, "&dump_uint64" ], "timeout_t" => [ 8, 8, "&dump_timeout" ], "abstime_t" => [ 8, 8, "&dump_abstime" ], "rectangle_t" => [ 16, 4, "&dump_rectangle" ],
From: Rémi Bernon rbernon@codeweavers.com
--- include/winnt.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/include/winnt.h b/include/winnt.h index b18d255a79c..42f3dc05a28 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -7064,11 +7064,14 @@ static FORCEINLINE void MemoryBarrier(void) */ #if _MSC_VER >= 1700 #pragma intrinsic(__iso_volatile_load32) +#pragma intrinsic(__iso_volatile_load64) #pragma intrinsic(__iso_volatile_store32) #define __WINE_LOAD32_NO_FENCE(src) (__iso_volatile_load32(src)) +#define __WINE_LOAD64_NO_FENCE(src) (__iso_volatile_load64(src)) #define __WINE_STORE32_NO_FENCE(dest, value) (__iso_volatile_store32(dest, value)) #else /* _MSC_VER >= 1700 */ #define __WINE_LOAD32_NO_FENCE(src) (*(src)) +#define __WINE_LOAD64_NO_FENCE(src) (*(src)) #define __WINE_STORE32_NO_FENCE(dest, value) ((void)(*(dest) = (value))) #endif /* _MSC_VER >= 1700 */
@@ -7102,6 +7105,12 @@ static FORCEINLINE LONG ReadNoFence( LONG const volatile *src ) return value; }
+static FORCEINLINE LONG64 ReadNoFence64( LONG64 const volatile *src ) +{ + LONG64 value = __WINE_LOAD64_NO_FENCE( (__int64 const volatile *)src ); + return value; +} + static FORCEINLINE void WriteRelease( LONG volatile *dest, LONG value ) { __wine_memory_barrier_acq_rel(); @@ -7288,6 +7297,13 @@ static FORCEINLINE LONG ReadNoFence( LONG const volatile *src ) return value; }
+static FORCEINLINE LONG64 ReadNoFence64( LONG64 const volatile *src ) +{ + LONG64 value; + __WINE_ATOMIC_LOAD_RELAXED( src, &value ); + return value; +} + static FORCEINLINE void WriteRelease( LONG volatile *dest, LONG value ) { __WINE_ATOMIC_STORE_RELEASE( dest, &value );
From: Rémi Bernon rbernon@codeweavers.com
--- server/file.h | 3 ++ server/mapping.c | 106 ++++++++++++++++++++++++++++++++++++++++++++ server/protocol.def | 7 ++- server/user.h | 1 + server/winstation.c | 7 +++ 5 files changed, 123 insertions(+), 1 deletion(-)
diff --git a/server/file.h b/server/file.h index 661e8f9d159..abfc2f0a2ce 100644 --- a/server/file.h +++ b/server/file.h @@ -192,6 +192,9 @@ extern struct mapping *create_session_mapping( struct object *root, const struct unsigned int attr, const struct security_descriptor *sd ); extern void set_session_mapping( struct mapping *mapping );
+extern const volatile void *alloc_shared_object(void); +extern void free_shared_object( const volatile void *object_shm ); + #define SHARED_WRITE_BEGIN( object_shm, type ) \ do { \ const type *__shared = (object_shm); \ diff --git a/server/mapping.c b/server/mapping.c index 6605c111beb..f77de343f4f 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -229,17 +229,30 @@ struct session_block { struct list entry; /* entry in the session block list */ const char *data; /* base pointer for the mmaped data */ + mem_size_t offset; /* offset of data in the session shared mapping */ + mem_size_t used_size; /* used size for previously allocated objects */ + mem_size_t block_size; /* total size of the block */ +}; + +struct session_object +{ + struct list entry; /* entry in the session free object list */ + mem_size_t offset; /* offset of obj in the session shared mapping */ + shared_object_t obj; /* object actually shared with the client */ };
struct session { struct list blocks; + struct list free_objects; + object_id_t last_object_id; };
static struct mapping *session_mapping; static struct session session = { .blocks = LIST_INIT(session.blocks), + .free_objects = LIST_INIT(session.free_objects), };
#define ROUND_SIZE(size) (((size) + page_mask) & ~page_mask) @@ -1297,10 +1310,103 @@ void set_session_mapping( struct mapping *mapping ) }
block->data = tmp; + block->offset = 0; + block->used_size = 0; + block->block_size = size; + session_mapping = mapping; list_add_tail( &session.blocks, &block->entry ); }
+static struct session_block *grow_session_mapping( mem_size_t needed ) +{ + mem_size_t old_size = session_mapping->size, new_size; + struct session_block *block; + int unix_fd; + void *tmp; + + new_size = max( old_size * 3 / 2, old_size + max( needed, 0x10000 ) ); + new_size = (new_size + page_mask) & ~((mem_size_t)page_mask); + assert( new_size > old_size ); + + unix_fd = get_unix_fd( session_mapping->fd ); + if (!grow_file( unix_fd, new_size )) return NULL; + + if (!(block = mem_alloc( sizeof(*block) ))) return NULL; + if ((tmp = mmap( NULL, new_size - old_size, PROT_READ | PROT_WRITE, MAP_SHARED, unix_fd, old_size )) == MAP_FAILED) + { + file_set_error(); + free( block ); + return NULL; + } + + block->data = tmp; + block->offset = old_size; + block->used_size = 0; + block->block_size = new_size - old_size; + + session_mapping->size = new_size; + list_add_tail( &session.blocks, &block->entry ); + + return block; +} + +static struct session_block *find_free_session_block( mem_size_t size ) +{ + struct session_block *block; + + LIST_FOR_EACH_ENTRY( block, &session.blocks, struct session_block, entry ) + if (size < block->block_size && block->used_size < block->block_size - size) return block; + + return grow_session_mapping( size ); +} + +const volatile void *alloc_shared_object(void) +{ + struct session_object *object; + struct list *ptr; + + if ((ptr = list_head( &session.free_objects ))) + { + object = CONTAINING_RECORD( ptr, struct session_object, entry ); + list_remove( &object->entry ); + } + else + { + mem_size_t size = sizeof(*object); + struct session_block *block; + + if (!(block = find_free_session_block( size ))) return NULL; + object = (struct session_object *)(block->data + block->used_size); + object->offset = (char *)&object->obj - block->data; + block->used_size += size; + } + + SHARED_WRITE_BEGIN( &object->obj.shm, object_shm_t ) + { + /* mark the object data as uninitialized */ + mark_block_uninitialized( (void *)shared, sizeof(*shared) ); + CONTAINING_RECORD( shared, shared_object_t, shm )->id = ++session.last_object_id; + } + SHARED_WRITE_END; + + return &object->obj.shm; +} + +void free_shared_object( const volatile void *object_shm ) +{ + struct session_object *object = CONTAINING_RECORD( object_shm, struct session_object, obj.shm ); + + SHARED_WRITE_BEGIN( &object->obj.shm, object_shm_t ) + { + mark_block_noaccess( (void *)shared, sizeof(*shared) ); + CONTAINING_RECORD( shared, shared_object_t, shm )->id = 0; + } + SHARED_WRITE_END; + + list_add_tail( &session.free_objects, &object->entry ); +} + struct object *create_user_data_mapping( struct object *root, const struct unicode_str *name, unsigned int attr, const struct security_descriptor *sd ) { diff --git a/server/protocol.def b/server/protocol.def index 6a51d5390f4..09260e071f8 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -891,9 +891,14 @@ typedef struct /****************************************************************/ /* shared session mapping structures */
-typedef volatile union +typedef volatile struct { char placeholder; +} desktop_shm_t; + +typedef volatile union +{ + desktop_shm_t desktop; } object_shm_t;
typedef volatile struct diff --git a/server/user.h b/server/user.h index d805a179d16..27c58e355eb 100644 --- a/server/user.h +++ b/server/user.h @@ -82,6 +82,7 @@ struct desktop unsigned int users; /* processes and threads using this desktop */ struct global_cursor cursor; /* global cursor information */ unsigned char keystate[256]; /* asynchronous key state */ + const desktop_shm_t *shared; /* desktop session shared memory */ };
/* user handles functions */ diff --git a/server/winstation.c b/server/winstation.c index 80126ad5d60..3b7e86feddc 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -297,6 +297,12 @@ static struct desktop *create_desktop( const struct unicode_str *name, unsigned list_add_tail( &winstation->desktops, &desktop->entry ); list_init( &desktop->hotkeys ); list_init( &desktop->pointers ); + + if (!(desktop->shared = alloc_shared_object())) + { + release_object( desktop ); + return NULL; + } } else { @@ -366,6 +372,7 @@ static void desktop_destroy( struct object *obj ) if (desktop->global_hooks) release_object( desktop->global_hooks ); if (desktop->close_timeout) remove_timeout_user( desktop->close_timeout ); release_object( desktop->winstation ); + if (desktop->shared) free_shared_object( desktop->shared ); }
/* retrieve the thread desktop, checking the handle access rights */
From: Rémi Bernon rbernon@codeweavers.com
--- server/file.h | 1 + server/mapping.c | 7 +++++++ server/protocol.def | 11 ++++++++++- server/trace.c | 8 ++++++++ server/winstation.c | 14 ++++++++++++++ tools/make_requests | 1 + 6 files changed, 41 insertions(+), 1 deletion(-)
diff --git a/server/file.h b/server/file.h index abfc2f0a2ce..89f91c52993 100644 --- a/server/file.h +++ b/server/file.h @@ -194,6 +194,7 @@ extern void set_session_mapping( struct mapping *mapping );
extern const volatile void *alloc_shared_object(void); extern void free_shared_object( const volatile void *object_shm ); +extern obj_locator_t get_shared_object_locator( const volatile void *object_shm );
#define SHARED_WRITE_BEGIN( object_shm, type ) \ do { \ diff --git a/server/mapping.c b/server/mapping.c index f77de343f4f..92eb0c9f076 100644 --- a/server/mapping.c +++ b/server/mapping.c @@ -1407,6 +1407,13 @@ void free_shared_object( const volatile void *object_shm ) list_add_tail( &session.free_objects, &object->entry ); }
+obj_locator_t get_shared_object_locator( const volatile void *object_shm ) +{ + struct session_object *object = CONTAINING_RECORD( object_shm, struct session_object, obj.shm ); + obj_locator_t locator = {.offset = object->offset, .id = object->obj.id}; + return locator; +} + struct object *create_user_data_mapping( struct object *root, const struct unicode_str *name, unsigned int attr, const struct security_descriptor *sd ) { diff --git a/server/protocol.def b/server/protocol.def index 09260e071f8..9a452416f0a 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -908,6 +908,12 @@ typedef volatile struct object_shm_t shm; /* object shared data */ } shared_object_t;
+typedef struct +{ + object_id_t id; /* object unique id, object data is valid if != 0 */ + mem_size_t offset; /* offset of the object in session shared memory */ +} obj_locator_t; + /****************************************************************/ /* Request declarations */
@@ -2819,13 +2825,16 @@ enum coords_relative @REQ(get_thread_desktop) thread_id_t tid; /* thread id */ @REPLY - obj_handle_t handle; /* handle to the desktop */ + obj_handle_t handle; /* handle to the desktop */ + obj_locator_t locator; /* locator for the shared session object */ @END
/* Set the thread current desktop */ @REQ(set_thread_desktop) obj_handle_t handle; /* handle to the desktop */ +@REPLY + obj_locator_t locator; /* locator for the shared session object */ @END
diff --git a/server/trace.c b/server/trace.c index d76d13152aa..c9d120adecf 100644 --- a/server/trace.c +++ b/server/trace.c @@ -467,6 +467,14 @@ static void dump_hw_input( const char *prefix, const hw_input_t *input ) } }
+static void dump_obj_locator( const char *prefix, const obj_locator_t *locator ) +{ + fprintf( stderr, "%s{", prefix ); + dump_uint64( "id=", &locator->id ); + dump_uint64( ",offset=", &locator->offset ); + fprintf( stderr, "}" ); +} + static void dump_luid( const char *prefix, const struct luid *luid ) { fprintf( stderr, "%s%d.%u", prefix, luid->high_part, luid->low_part ); diff --git a/server/winstation.c b/server/winstation.c index 3b7e86feddc..43231238fad 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -740,10 +740,21 @@ DECL_HANDLER(close_desktop) /* get the thread current desktop */ DECL_HANDLER(get_thread_desktop) { + struct desktop *desktop; struct thread *thread;
+ reply->locator.id = 0; + if (!(thread = get_thread_from_id( req->tid ))) return; reply->handle = thread->desktop; + + if (!(desktop = get_thread_desktop( thread, 0 ))) clear_error(); + else + { + if (desktop->shared) reply->locator = get_shared_object_locator( desktop->shared ); + release_object( desktop ); + } + release_object( thread ); }
@@ -754,6 +765,8 @@ DECL_HANDLER(set_thread_desktop) struct desktop *old_desktop, *new_desktop; struct winstation *winstation;
+ reply->locator.id = 0; + if (!(winstation = get_process_winstation( current->process, 0 /* FIXME: access rights? */ ))) return;
@@ -786,6 +799,7 @@ DECL_HANDLER(set_thread_desktop) if (old_desktop) remove_desktop_thread( old_desktop, current ); add_desktop_thread( new_desktop, current ); } + reply->locator = get_shared_object_locator( new_desktop->shared ); }
if (!current->process->desktop) diff --git a/tools/make_requests b/tools/make_requests index b20b53096ca..36254faec40 100755 --- a/tools/make_requests +++ b/tools/make_requests @@ -53,6 +53,7 @@ my %formats = "generic_map_t" => [ 16, 4, "&dump_generic_map" ], "ioctl_code_t" => [ 4, 4, "&dump_ioctl_code" ], "hw_input_t" => [ 40, 8, "&dump_hw_input" ], + "obj_locator_t" => [ 16, 8, "&dump_obj_locator" ], # varargs-only structures "apc_call_t" => [ 64, 8 ], "context_t" => [ 1728, 8 ],
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/winstation.c | 103 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 2 deletions(-)
diff --git a/dlls/win32u/winstation.c b/dlls/win32u/winstation.c index 3e71218200a..d094e212d55 100644 --- a/dlls/win32u/winstation.c +++ b/dlls/win32u/winstation.c @@ -22,9 +22,14 @@ #pragma makedep unix #endif
+#include <assert.h> +#include <stdarg.h> +#include <stddef.h> + +#include <pthread.h> + #include "ntstatus.h" #define WIN32_NO_STATUS -#include <stdarg.h> #include "windef.h" #include "winbase.h" #include "ntuser.h" @@ -40,6 +45,96 @@ WINE_DECLARE_DEBUG_CHANNEL(win);
#define DESKTOP_ALL_ACCESS 0x01ff
+struct session_block +{ + struct list entry; /* entry in the session block list */ + const char *data; /* base pointer for the mmaped data */ + SIZE_T offset; /* offset of data in the session shared mapping */ + SIZE_T size; /* size of the mmaped data */ +}; + +static pthread_mutex_t session_lock = PTHREAD_MUTEX_INITIALIZER; +static struct list session_blocks = LIST_INIT(session_blocks); + +static NTSTATUS map_shared_session_block( SIZE_T offset, SIZE_T size, struct session_block **ret ) +{ + static const WCHAR nameW[] = + { + '\','K','e','r','n','e','l','O','b','j','e','c','t','s','\', + '_','_','w','i','n','e','_','s','e','s','s','i','o','n',0 + }; + UNICODE_STRING name = RTL_CONSTANT_STRING( nameW ); + LARGE_INTEGER off = {.QuadPart = offset & ~(PAGE_SIZE - 1)}; + struct session_block *block; + OBJECT_ATTRIBUTES attr; + unsigned int status; + HANDLE handle; + + assert( offset + size > offset ); + + if (!(block = calloc( 1, sizeof(*block) ))) return STATUS_NO_MEMORY; + + InitializeObjectAttributes( &attr, &name, 0, NULL, NULL ); + if (!(status = NtOpenSection( &handle, SECTION_MAP_READ, &attr ))) + { + if (!(status = NtMapViewOfSection( handle, GetCurrentProcess(), (void **)&block->data, 0, 0, + &off, &block->size, ViewUnmap, 0, PAGE_READONLY ))) + { + list_add_tail( &session_blocks, &block->entry ); + block->offset = off.QuadPart; + assert( block->offset + block->size > block->offset ); + } + NtClose( handle ); + } + + if (status) free( block ); + else *ret = block; + return status; +} + +static NTSTATUS find_shared_session_block( SIZE_T offset, SIZE_T size, struct session_block **ret ) +{ + struct session_block *block; + UINT status; + + assert( offset + size > offset ); + + pthread_mutex_lock( &session_lock ); + + LIST_FOR_EACH_ENTRY( block, &session_blocks, struct session_block, entry ) + { + if (block->offset < offset && offset + size <= block->offset + block->size) + { + *ret = block; + pthread_mutex_unlock( &session_lock ); + return STATUS_SUCCESS; + } + } + + status = map_shared_session_block( offset, size, ret ); + + pthread_mutex_unlock( &session_lock ); + + return status; +} + +static NTSTATUS set_shared_object_cache( obj_locator_t locator, const shared_object_t **object_cache, UINT64 *id ) +{ + const shared_object_t *object = NULL; + struct session_block *block; + NTSTATUS status; + + if (!locator.id) status = STATUS_INVALID_HANDLE; + else if (!(status = find_shared_session_block( locator.offset, sizeof(*object), &block ))) + { + object = (const shared_object_t *)(block->data + locator.offset - block->offset); + *id = locator.id; /* return the expected id separately from the object itself */ + } + + *object_cache = object; + return status; +} + BOOL is_virtual_desktop(void) { HANDLE desktop = NtUserGetThreadDesktop( GetCurrentThreadId() ); @@ -249,11 +344,12 @@ HDESK WINAPI NtUserGetThreadDesktop( DWORD thread ) BOOL WINAPI NtUserSetThreadDesktop( HDESK handle ) { BOOL ret, was_virtual_desktop = is_virtual_desktop(); + obj_locator_t locator = {0};
SERVER_START_REQ( set_thread_desktop ) { req->handle = wine_server_obj_handle( handle ); - ret = !wine_server_call_err( req ); + if ((ret = !wine_server_call_err( req ))) locator = reply->locator; } SERVER_END_REQ;
@@ -261,6 +357,9 @@ BOOL WINAPI NtUserSetThreadDesktop( HDESK handle ) { struct user_thread_info *thread_info = get_user_thread_info(); struct user_key_state_info *key_state_info = thread_info->key_state; + const shared_object_t *cache; + UINT64 id; + set_shared_object_cache( locator, &cache, &id ); thread_info->client_info.top_window = 0; thread_info->client_info.msg_window = 0; if (key_state_info) key_state_info->time = 0;
From: Rémi Bernon rbernon@codeweavers.com
--- dlls/win32u/ntuser_private.h | 1 + dlls/win32u/sysparams.c | 1 + dlls/win32u/win32u_private.h | 18 +++++ dlls/win32u/winstation.c | 138 ++++++++++++++++++++++++++++++++++- 4 files changed, 155 insertions(+), 3 deletions(-)
diff --git a/dlls/win32u/ntuser_private.h b/dlls/win32u/ntuser_private.h index 11b1a3ff8a1..960e82dc15f 100644 --- a/dlls/win32u/ntuser_private.h +++ b/dlls/win32u/ntuser_private.h @@ -128,6 +128,7 @@ struct user_thread_info UINT spy_indent; /* Current spy indent */ BOOL clipping_cursor; /* thread is currently clipping */ DWORD clipping_reset; /* time when clipping was last reset */ + struct session_thread_data *session_data; /* shared session thread data */ };
C_ASSERT( sizeof(struct user_thread_info) <= sizeof(((TEB *)0)->Win32ClientInfo) ); diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 6993373ca54..891b2ca8589 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -6201,6 +6201,7 @@ static void thread_detach(void)
cleanup_imm_thread(); NtClose( thread_info->server_queue ); + free( thread_info->session_data );
exiting_thread_id = 0; } diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index ff861db4dd9..9d9d36b0a30 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -194,6 +194,24 @@ extern void user_check_not_lock(void); extern BOOL get_vulkan_uuid_from_luid( const LUID *luid, GUID *uuid );
/* winstation.c */ + +struct shared_session; + +struct object_lock +{ + UINT64 id; + UINT64 seq; +}; +#define OBJECT_LOCK_INIT {0} + +/* Get shared session object's data pointer, must be called in a loop while STATUS_PENDING + * is returned, lock must be initialized with OBJECT_LOCK_INIT. + * + * The data read from the objects may be transient and no logic should be executed based + * on it, within the loop, or after, unless the function has returned STATUS_SUCCESS. + */ +extern NTSTATUS get_shared_desktop( struct object_lock *lock, const desktop_shm_t **desktop_shm ); + extern BOOL is_virtual_desktop(void);
/* window.c */ diff --git a/dlls/win32u/winstation.c b/dlls/win32u/winstation.c index d094e212d55..d58fb2bf2e4 100644 --- a/dlls/win32u/winstation.c +++ b/dlls/win32u/winstation.c @@ -45,6 +45,11 @@ WINE_DECLARE_DEBUG_CHANNEL(win);
#define DESKTOP_ALL_ACCESS 0x01ff
+struct session_thread_data +{ + const shared_object_t *shared_desktop; /* thread desktop shared session cached object */ +}; + struct session_block { struct list entry; /* entry in the session block list */ @@ -56,6 +61,32 @@ struct session_block static pthread_mutex_t session_lock = PTHREAD_MUTEX_INITIALIZER; static struct list session_blocks = LIST_INIT(session_blocks);
+static struct session_thread_data *get_session_thread_data(void) +{ + struct user_thread_info *thread_info = get_user_thread_info(); + if (!thread_info->session_data) thread_info->session_data = calloc(1, sizeof(*thread_info->session_data)); + return thread_info->session_data; +} + +#if defined(__i386__) || defined(__x86_64__) +/* this prevents compilers from incorrectly reordering non-volatile reads (e.g., memcpy) from shared memory */ +#define __SHARED_READ_FENCE do { __asm__ __volatile__( "" ::: "memory" ); } while (0) +#else +#define __SHARED_READ_FENCE __atomic_thread_fence( __ATOMIC_ACQUIRE ) +#endif + +static void session_object_acquire_seqlock( const shared_object_t *object, UINT64 *seq ) +{ + while ((*seq = ReadNoFence64( &object->seq )) & 1) YieldProcessor(); + __SHARED_READ_FENCE; +} + +static BOOL session_object_release_seqlock( const shared_object_t *object, UINT64 seq ) +{ + __SHARED_READ_FENCE; + return ReadNoFence64( &object->seq ) == seq; +} + static NTSTATUS map_shared_session_block( SIZE_T offset, SIZE_T size, struct session_block **ret ) { static const WCHAR nameW[] = @@ -135,6 +166,102 @@ static NTSTATUS set_shared_object_cache( obj_locator_t locator, const shared_obj return status; }
+enum object_type +{ + OBJECT_TYPE_DESKTOP = 1, +}; + +static NTSTATUS find_shared_session_object( UINT tid, enum object_type type, const shared_object_t **object_cache, UINT64 *id ) +{ + obj_locator_t locator = {0}; + NTSTATUS status; + + TRACE( "tid %04x, type %u, object_cache %p\n", tid, type, object_cache ); + + switch (type) + { + case OBJECT_TYPE_DESKTOP: + SERVER_START_REQ( get_thread_desktop ) + { + req->tid = tid; + if (!(status = wine_server_call( req ))) locator = reply->locator; + } + SERVER_END_REQ; + break; + default: + ERR( "Invalid session object type %u\n", type ); + return STATUS_INVALID_PARAMETER; + } + + if (!status) status = set_shared_object_cache( locator, object_cache, id ); + return status; +} + +/* return a locked session object for a thread id and type */ +static NTSTATUS get_thread_session_object( UINT tid, enum object_type type, const shared_object_t **object_cache, + struct object_lock *lock, const object_shm_t **object_shm ) +{ + const shared_object_t *object = *object_cache; + NTSTATUS status; + + assert( !lock->id || object ); + + TRACE( "tid %04x, type %u, object_cache %p, lock %p, object_shm %p\n", tid, type, object_cache, lock, object_shm ); + + if (!lock->id && object) lock->id = object->id; + else if (lock->id) + { + /* lock was previously acquired, finish reading and check data consistency */ + BOOL valid = lock->id == object->id; + + if (!session_object_release_seqlock( object, lock->seq )) + { + /* retry if seq doesn't match, wineserver has written to it */ + session_object_acquire_seqlock( object, &lock->seq ); + return STATUS_PENDING; + } + + memset( lock, 0, sizeof(*lock) ); + if (valid) return STATUS_SUCCESS; + + *object_cache = NULL; /* invalidate object cache if the lock was abandoned due to id mismatch */ + } + + if (*object_cache || !(status = find_shared_session_object( tid, type, object_cache, &lock->id ))) + { + object = *object_cache; + *object_shm = &object->shm; + session_object_acquire_seqlock( object, &lock->seq ); + return STATUS_PENDING; + } + + WARN( "Failed to find object type %u for thread %04x\n", type, tid ); + return STATUS_UNSUCCESSFUL; +} + +NTSTATUS get_shared_desktop( struct object_lock *lock, const desktop_shm_t **desktop_shm ) +{ + struct session_thread_data *data = get_session_thread_data(); + const shared_object_t **cache = &data->shared_desktop; + + TRACE( "lock %p, desktop_shm %p\n", lock, desktop_shm ); + + return get_thread_session_object( GetCurrentThreadId(), OBJECT_TYPE_DESKTOP, cache, + lock, (const object_shm_t **)desktop_shm ); +} + +static void set_shared_desktop_cache( obj_locator_t locator ) +{ + struct session_thread_data *data = get_session_thread_data(); + UINT status; + UINT64 id; + + if ((status = set_shared_object_cache( locator, &data->shared_desktop, &id ))) + WARN( "Failed to get shared desktop object, status %#x\n", status ); + else if (id != data->shared_desktop->id) + data->shared_desktop = NULL; +} + BOOL is_virtual_desktop(void) { HANDLE desktop = NtUserGetThreadDesktop( GetCurrentThreadId() ); @@ -357,12 +484,17 @@ BOOL WINAPI NtUserSetThreadDesktop( HDESK handle ) { struct user_thread_info *thread_info = get_user_thread_info(); struct user_key_state_info *key_state_info = thread_info->key_state; - const shared_object_t *cache; - UINT64 id; - set_shared_object_cache( locator, &cache, &id ); + struct object_lock lock = OBJECT_LOCK_INIT; + const desktop_shm_t *desktop_shm; + + set_shared_desktop_cache( locator ); thread_info->client_info.top_window = 0; thread_info->client_info.msg_window = 0; if (key_state_info) key_state_info->time = 0; + + while (get_shared_desktop( &lock, &desktop_shm ) == STATUS_PENDING) + /* nothing */; + if (was_virtual_desktop != is_virtual_desktop()) update_display_cache( FALSE ); } return ret;
From: Rémi Bernon rbernon@codeweavers.com
Based on a patch by Huw Davies huw@codeweavers.com. --- server/protocol.def | 8 ++++- server/queue.c | 78 ++++++++++++++++++++++++++++----------------- server/user.h | 2 -- server/winstation.c | 7 ++++ 4 files changed, 62 insertions(+), 33 deletions(-)
diff --git a/server/protocol.def b/server/protocol.def index 9a452416f0a..be089073e6d 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -891,9 +891,15 @@ typedef struct /****************************************************************/ /* shared session mapping structures */
+struct shared_cursor +{ + int x; /* cursor position */ + int y; +}; + typedef volatile struct { - char placeholder; + struct shared_cursor cursor; /* global cursor information */ } desktop_shm_t;
typedef volatile union diff --git a/server/queue.c b/server/queue.c index ed099b3b989..bfa451cad06 100644 --- a/server/queue.c +++ b/server/queue.c @@ -418,6 +418,7 @@ static void queue_cursor_message( struct desktop *desktop, user_handle_t win, un lparam_t wparam, lparam_t lparam ) { static const struct hw_msg_source source = { IMDT_UNAVAILABLE, IMO_SYSTEM }; + const desktop_shm_t *desktop_shm = desktop->shared; struct thread_input *input; struct message *msg;
@@ -426,8 +427,8 @@ static void queue_cursor_message( struct desktop *desktop, user_handle_t win, un msg->msg = message; msg->wparam = wparam; msg->lparam = lparam; - msg->x = desktop->cursor.x; - msg->y = desktop->cursor.y; + msg->x = desktop_shm->cursor.x; + msg->y = desktop_shm->cursor.y; if (!(msg->win = win) && (input = desktop->foreground_input)) msg->win = input->active; queue_hardware_message( desktop, msg, 1 ); } @@ -465,13 +466,20 @@ static int update_desktop_cursor_window( struct desktop *desktop, user_handle_t
static int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win, int x, int y ) { + const desktop_shm_t *desktop_shm = desktop->shared; int updated;
x = max( min( x, desktop->cursor.clip.right - 1 ), desktop->cursor.clip.left ); y = max( min( y, desktop->cursor.clip.bottom - 1 ), desktop->cursor.clip.top ); - updated = (desktop->cursor.x != x || desktop->cursor.y != y); - desktop->cursor.x = x; - desktop->cursor.y = y; + + SHARED_WRITE_BEGIN( desktop_shm, desktop_shm_t ) + { + updated = shared->cursor.x != x || shared->cursor.y != y; + shared->cursor.x = x; + shared->cursor.y = y; + } + SHARED_WRITE_END; + desktop->cursor.last_change = get_tick_count();
if (!win || !is_window_visible( win ) || is_window_transparent( win )) @@ -517,15 +525,17 @@ static void set_cursor_pos( struct desktop *desktop, int x, int y ) static void get_message_defaults( struct msg_queue *queue, int *x, int *y, unsigned int *time ) { struct desktop *desktop = queue->input->desktop; + const desktop_shm_t *desktop_shm = desktop->shared;
- *x = desktop->cursor.x; - *y = desktop->cursor.y; + *x = desktop_shm->cursor.x; + *y = desktop_shm->cursor.y; *time = get_tick_count(); }
/* set the cursor clip rectangle */ void set_clip_rectangle( struct desktop *desktop, const rectangle_t *rect, unsigned int flags, int reset ) { + const desktop_shm_t *desktop_shm = desktop->shared; rectangle_t top_rect; unsigned int old_flags; int x, y; @@ -547,9 +557,9 @@ void set_clip_rectangle( struct desktop *desktop, const rectangle_t *rect, unsig desktop->cursor.clip_flags = flags;
/* warp the mouse to be inside the clip rect */ - x = max( min( desktop->cursor.x, desktop->cursor.clip.right - 1 ), desktop->cursor.clip.left ); - y = max( min( desktop->cursor.y, desktop->cursor.clip.bottom - 1 ), desktop->cursor.clip.top ); - if (x != desktop->cursor.x || y != desktop->cursor.y) set_cursor_pos( desktop, x, y ); + x = max( min( desktop_shm->cursor.x, desktop->cursor.clip.right - 1 ), desktop->cursor.clip.left ); + y = max( min( desktop_shm->cursor.y, desktop->cursor.clip.bottom - 1 ), desktop->cursor.clip.top ); + if (x != desktop_shm->cursor.x || y != desktop_shm->cursor.y) set_cursor_pos( desktop, x, y );
/* request clip cursor rectangle reset to the desktop thread */ if (reset) post_desktop_message( desktop, WM_WINE_CLIPCURSOR, flags, FALSE ); @@ -1673,6 +1683,7 @@ static void prepend_cursor_history( int x, int y, unsigned int time, lparam_t in /* queue a hardware message into a given thread input */ static void queue_hardware_message( struct desktop *desktop, struct message *msg, int always_queue ) { + const desktop_shm_t *desktop_shm = desktop->shared; user_handle_t win; struct thread *thread; struct thread_input *input; @@ -1705,8 +1716,8 @@ static void queue_hardware_message( struct desktop *desktop, struct message *msg if (desktop->keystate[VK_XBUTTON2] & 0x80) msg->wparam |= MK_XBUTTON2; break; } - msg->x = desktop->cursor.x; - msg->y = desktop->cursor.y; + msg->x = desktop_shm->cursor.x; + msg->y = desktop_shm->cursor.y;
if (msg->win && (thread = get_window_thread( msg->win ))) { @@ -1988,6 +1999,7 @@ static void dispatch_rawinput_message( struct desktop *desktop, struct rawinput_ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, const hw_input_t *input, unsigned int origin, struct msg_queue *sender ) { + const desktop_shm_t *desktop_shm = desktop->shared; const struct rawinput_device *device; struct hardware_msg_data *msg_data; struct rawinput_message raw_msg; @@ -2026,19 +2038,19 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons x = input->mouse.x; y = input->mouse.y; if (flags & ~(MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE) && - x == desktop->cursor.x && y == desktop->cursor.y) + x == desktop_shm->cursor.x && y == desktop_shm->cursor.y) flags &= ~MOUSEEVENTF_MOVE; } else { - x = desktop->cursor.x + input->mouse.x; - y = desktop->cursor.y + input->mouse.y; + x = desktop_shm->cursor.x + input->mouse.x; + y = desktop_shm->cursor.y + input->mouse.y; } } else { - x = desktop->cursor.x; - y = desktop->cursor.y; + x = desktop_shm->cursor.x; + y = desktop_shm->cursor.y; }
if ((foreground = get_foreground_thread( desktop, win ))) @@ -2049,7 +2061,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons raw_msg.time = time; raw_msg.message = WM_INPUT; raw_msg.flags = flags; - rawmouse_init( &raw_msg.rawinput, &raw_msg.data.mouse, x - desktop->cursor.x, y - desktop->cursor.y, + rawmouse_init( &raw_msg.rawinput, &raw_msg.data.mouse, x - desktop_shm->cursor.x, y - desktop_shm->cursor.y, raw_msg.flags, input->mouse.data, input->mouse.info );
dispatch_rawinput_message( desktop, &raw_msg ); @@ -2251,6 +2263,7 @@ static void queue_pointer_message( struct pointer *pointer, int repeated ) }; struct hw_msg_source source = { IMDT_UNAVAILABLE, IMDT_TOUCH }; struct desktop *desktop = pointer->desktop; + const desktop_shm_t *desktop_shm = desktop->shared; const hw_input_t *input = &pointer->input; unsigned int i, wparam = input->hw.wparam; timeout_t time = get_tick_count(); @@ -2273,8 +2286,8 @@ static void queue_pointer_message( struct pointer *pointer, int repeated ) msg->msg = messages[input->hw.msg - WM_POINTERUPDATE][i]; msg->wparam = wparam; msg->lparam = MAKELONG(x, y); - msg->x = desktop->cursor.x; - msg->y = desktop->cursor.y; + msg->x = desktop_shm->cursor.x; + msg->y = desktop_shm->cursor.y;
queue_hardware_message( desktop, msg, 1 ); } @@ -2329,6 +2342,7 @@ static struct pointer *find_pointer_from_id( struct desktop *desktop, unsigned i static void queue_custom_hardware_message( struct desktop *desktop, user_handle_t win, unsigned int origin, const hw_input_t *input ) { + const desktop_shm_t *desktop_shm = desktop->shared; struct hw_msg_source source = { IMDT_UNAVAILABLE, origin }; struct thread *foreground; struct pointer *pointer; @@ -2373,8 +2387,8 @@ static void queue_custom_hardware_message( struct desktop *desktop, user_handle_ msg->msg = input->hw.msg; msg->wparam = input->hw.wparam; msg->lparam = input->hw.lparam; - msg->x = desktop->cursor.x; - msg->y = desktop->cursor.y; + msg->x = desktop_shm->cursor.x; + msg->y = desktop_shm->cursor.y;
queue_hardware_message( desktop, msg, 1 ); } @@ -2922,6 +2936,7 @@ DECL_HANDLER(send_hardware_message) struct desktop *desktop; unsigned int origin = (req->flags & SEND_HWMSG_INJECTED ? IMO_INJECTED : IMO_HARDWARE); struct msg_queue *sender = req->flags & SEND_HWMSG_INJECTED ? get_current_queue() : NULL; + const desktop_shm_t *desktop_shm; int wait = 0;
if (!(desktop = get_hardware_input_desktop( req->win ))) return; @@ -2932,9 +2947,10 @@ DECL_HANDLER(send_hardware_message) set_error( STATUS_ACCESS_DENIED ); return; } + desktop_shm = desktop->shared;
- reply->prev_x = desktop->cursor.x; - reply->prev_y = desktop->cursor.y; + reply->prev_x = desktop_shm->cursor.x; + reply->prev_y = desktop_shm->cursor.y;
switch (req->input.type) { @@ -2952,8 +2968,8 @@ DECL_HANDLER(send_hardware_message) }
reply->wait = sender ? wait : 0; - reply->new_x = desktop->cursor.x; - reply->new_y = desktop->cursor.y; + reply->new_x = desktop_shm->cursor.x; + reply->new_y = desktop_shm->cursor.y; release_object( desktop ); }
@@ -3646,16 +3662,18 @@ DECL_HANDLER(set_cursor) user_handle_t prev_cursor, new_cursor; struct thread_input *input; struct desktop *desktop; + const desktop_shm_t *desktop_shm;
if (!queue) return; input = queue->input; desktop = input->desktop; + desktop_shm = desktop->shared; prev_cursor = input->cursor_count < 0 ? 0 : input->cursor;
reply->prev_handle = input->cursor; reply->prev_count = input->cursor_count; - reply->prev_x = desktop->cursor.x; - reply->prev_y = desktop->cursor.y; + reply->prev_x = desktop_shm->cursor.x; + reply->prev_y = desktop_shm->cursor.y;
if (req->flags & SET_CURSOR_HANDLE) { @@ -3678,8 +3696,8 @@ DECL_HANDLER(set_cursor) new_cursor = input->cursor_count < 0 ? 0 : input->cursor; if (prev_cursor != new_cursor) update_desktop_cursor_handle( desktop, input, new_cursor );
- reply->new_x = desktop->cursor.x; - reply->new_y = desktop->cursor.y; + reply->new_x = desktop_shm->cursor.x; + reply->new_y = desktop_shm->cursor.y; reply->new_clip = desktop->cursor.clip; reply->last_change = desktop->cursor.last_change; } diff --git a/server/user.h b/server/user.h index 27c58e355eb..863e4de8100 100644 --- a/server/user.h +++ b/server/user.h @@ -56,8 +56,6 @@ struct winstation
struct global_cursor { - int x; /* cursor position */ - int y; rectangle_t clip; /* cursor clip rectangle */ unsigned int clip_flags; /* last cursor clip flags */ unsigned int last_change; /* time of last position change */ diff --git a/server/winstation.c b/server/winstation.c index 43231238fad..71a57be0bb7 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -303,6 +303,13 @@ static struct desktop *create_desktop( const struct unicode_str *name, unsigned release_object( desktop ); return NULL; } + + SHARED_WRITE_BEGIN( desktop->shared, desktop_shm_t ) + { + shared->cursor.x = 0; + shared->cursor.y = 0; + } + SHARED_WRITE_END; } else {
From: Rémi Bernon rbernon@codeweavers.com
Based on a patch by Huw Davies huw@codeweavers.com. --- server/protocol.def | 1 + server/queue.c | 17 +++++++++++------ server/user.h | 1 - server/winstation.c | 1 + 4 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/server/protocol.def b/server/protocol.def index be089073e6d..99d5bcd02ea 100644 --- a/server/protocol.def +++ b/server/protocol.def @@ -895,6 +895,7 @@ struct shared_cursor { int x; /* cursor position */ int y; + unsigned int last_change; /* time of last position change */ };
typedef volatile struct diff --git a/server/queue.c b/server/queue.c index bfa451cad06..3fcda838ecd 100644 --- a/server/queue.c +++ b/server/queue.c @@ -468,6 +468,7 @@ static int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win { const desktop_shm_t *desktop_shm = desktop->shared; int updated; + unsigned int time = get_tick_count();
x = max( min( x, desktop->cursor.clip.right - 1 ), desktop->cursor.clip.left ); y = max( min( y, desktop->cursor.clip.bottom - 1 ), desktop->cursor.clip.top ); @@ -477,11 +478,10 @@ static int update_desktop_cursor_pos( struct desktop *desktop, user_handle_t win updated = shared->cursor.x != x || shared->cursor.y != y; shared->cursor.x = x; shared->cursor.y = y; + shared->cursor.last_change = time; } SHARED_WRITE_END;
- desktop->cursor.last_change = get_tick_count(); - if (!win || !is_window_visible( win ) || is_window_transparent( win )) win = shallow_window_from_point( desktop, x, y ); if (update_desktop_cursor_window( desktop, win )) updated = 1; @@ -2005,7 +2005,7 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons struct rawinput_message raw_msg; struct message *msg; struct thread *foreground; - unsigned int i, time, flags; + unsigned int i, time = get_tick_count(), flags; struct hw_msg_source source = { IMDT_MOUSE, origin }; int wait = 0, x, y;
@@ -2026,10 +2026,15 @@ static int queue_mouse_message( struct desktop *desktop, user_handle_t win, cons WM_MOUSEHWHEEL /* 0x1000 = MOUSEEVENTF_HWHEEL */ };
- desktop->cursor.last_change = get_tick_count(); + SHARED_WRITE_BEGIN( desktop_shm, desktop_shm_t ) + { + shared->cursor.last_change = time; + } + SHARED_WRITE_END; + flags = input->mouse.flags; time = input->mouse.time; - if (!time) time = desktop->cursor.last_change; + if (!time) time = desktop_shm->cursor.last_change;
if (flags & MOUSEEVENTF_MOVE) { @@ -3699,7 +3704,7 @@ DECL_HANDLER(set_cursor) reply->new_x = desktop_shm->cursor.x; reply->new_y = desktop_shm->cursor.y; reply->new_clip = desktop->cursor.clip; - reply->last_change = desktop->cursor.last_change; + reply->last_change = desktop_shm->cursor.last_change; }
/* Get the history of the 64 last cursor positions */ diff --git a/server/user.h b/server/user.h index 863e4de8100..8a1cd327b1b 100644 --- a/server/user.h +++ b/server/user.h @@ -58,7 +58,6 @@ struct global_cursor { rectangle_t clip; /* cursor clip rectangle */ unsigned int clip_flags; /* last cursor clip flags */ - unsigned int last_change; /* time of last position change */ user_handle_t win; /* window that contains the cursor */ };
diff --git a/server/winstation.c b/server/winstation.c index 71a57be0bb7..695193952ae 100644 --- a/server/winstation.c +++ b/server/winstation.c @@ -308,6 +308,7 @@ static struct desktop *create_desktop( const struct unicode_str *name, unsigned { shared->cursor.x = 0; shared->cursor.y = 0; + shared->cursor.last_change = 0; } SHARED_WRITE_END; }
From: Rémi Bernon rbernon@codeweavers.com
Based on a patch by Huw Davies huw@codeweavers.com. --- dlls/win32u/input.c | 18 +++++++++--------- dlls/win32u/winstation.c | 7 ------- 2 files changed, 9 insertions(+), 16 deletions(-)
diff --git a/dlls/win32u/input.c b/dlls/win32u/input.c index 04532e7d015..2b0f59095e2 100644 --- a/dlls/win32u/input.c +++ b/dlls/win32u/input.c @@ -739,22 +739,22 @@ BOOL WINAPI NtUserSetCursorPos( INT x, INT y ) */ BOOL get_cursor_pos( POINT *pt ) { + struct object_lock lock = OBJECT_LOCK_INIT; + const desktop_shm_t *desktop_shm; BOOL ret; - DWORD last_change; + DWORD last_change = 0; + NTSTATUS status; UINT dpi;
if (!pt) return FALSE;
- SERVER_START_REQ( set_cursor ) + while ((status = get_shared_desktop( &lock, &desktop_shm )) == STATUS_PENDING) { - if ((ret = !wine_server_call( req ))) - { - pt->x = reply->new_x; - pt->y = reply->new_y; - last_change = reply->last_change; - } + pt->x = desktop_shm->cursor.x; + pt->y = desktop_shm->cursor.y; + last_change = desktop_shm->cursor.last_change; } - SERVER_END_REQ; + ret = !status;
/* query new position from graphics driver if we haven't updated recently */ if (ret && NtGetTickCount() - last_change > 100) ret = user_driver->pGetCursorPos( pt ); diff --git a/dlls/win32u/winstation.c b/dlls/win32u/winstation.c index d58fb2bf2e4..e72469ae211 100644 --- a/dlls/win32u/winstation.c +++ b/dlls/win32u/winstation.c @@ -484,17 +484,10 @@ BOOL WINAPI NtUserSetThreadDesktop( HDESK handle ) { struct user_thread_info *thread_info = get_user_thread_info(); struct user_key_state_info *key_state_info = thread_info->key_state; - struct object_lock lock = OBJECT_LOCK_INIT; - const desktop_shm_t *desktop_shm; - set_shared_desktop_cache( locator ); thread_info->client_info.top_window = 0; thread_info->client_info.msg_window = 0; if (key_state_info) key_state_info->time = 0; - - while (get_shared_desktop( &lock, &desktop_shm ) == STATUS_PENDING) - /* nothing */; - if (was_virtual_desktop != is_virtual_desktop()) update_display_cache( FALSE ); } return ret;
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=145549
Your paranoid android.
=== debian11b (64 bit WoW report) ===
d2d1: d2d1.c:3077: Test failed: Got unexpected colour 0xff00708f at position {240, 80}. d2d1.c:3077: Test failed: Got unexpected colour 0xff007f80 at position {400, 80}. d2d1.c:3077: Test failed: Got unexpected colour 0xff00a659 at position {240, 400}. d2d1.c:3077: Test failed: Got unexpected colour 0xff00d42b at position {400, 400}. d2d1.c:3077: Test failed: Got unexpected colour 0xff00708f at position {240, 80}. d2d1.c:3077: Test failed: Got unexpected colour 0xff007f80 at position {400, 80}. d2d1.c:3077: Test failed: Got unexpected colour 0xff00a659 at position {240, 400}. d2d1.c:3077: Test failed: Got unexpected colour 0xff00d42b at position {400, 400}. d2d1.c:4124: Test failed: Surface does not match. d2d1.c:4124: Test failed: Surface does not match. d2d1.c:2373: Test failed: Surface does not match. d2d1.c:5027: Test failed: Surface does not match.
d3d10core: d3d10core.c:5207: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:6281: Test failed: Got unexpected color 0x800000ff. d3d10core.c:5209: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:6317: Test failed: Got unexpected color 0x00ff0000. d3d10core.c:6753: Test failed: Test 1: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 1: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 1: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 1: Got unexpected color 0x800000ff at (3). d3d10core.c:6319: Test failed: Got unexpected color 0x00ff0000. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 1. d3d10core.c:8231: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:6753: Test failed: Test 2: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 2: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 2: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 2: Got unexpected color 0x800000ff at (3). d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 1. d3d10core.c:5234: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:6753: Test failed: Test 3: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 3: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 3: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 3: Got unexpected color 0x800000ff at (3). d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 1.10000000e+001, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 2. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 3. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8698: Test failed: Got 0xff0000ff, expected 0xffffffff at (0, 0), sub-resource 0. d3d10core.c:9224: Test failed: Got unexpected color 0x800000ff. d3d10core.c:8699: Test failed: Got 0xff0000ff, expected 0x7f7f7f7f at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 0, ref 0.500000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:9226: Test failed: Got unexpected color 0x800000ff. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 1.00000000e+001, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 5. d3d10core.c:5240: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:8700: Test failed: Got 0xff0000ff, expected 0x33333333 at (0, 0), sub-resource 0. d3d10core.c:9228: Test failed: Got unexpected color 0x800000ff. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 6. d3d10core.c:8701: Test failed: Got 0xff0000ff, expected 0xff7f3300 at (0, 0), sub-resource 0. d3d10core.c:9230: Test failed: Got unexpected color 0x800000ff. d3d10core.c:8249: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 1, ref 0.500000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 7. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 9.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 8. d3d10core.c:6753: Test failed: Test 5: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 5: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 5: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 5: Got unexpected color 0x800000ff at (3). d3d10core.c:9556: Test failed: Got unexpected color 0x800000ff. d3d10core.c:8551: Test failed: Layer 2, ref 0.500000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:9562: Test failed: Got unexpected color 0x800000ff. d3d10core.c:8715: Test failed: Got 0xff0000ff, expected 0xff7f3300 at (0, 0), sub-resource 0. d3d10core.c:8262: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 10. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 8.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 11. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (2, 0), expected 0xff000000. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (0, 1), expected 0xffffff00. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (0, 2), expected 0xff7f7f7f. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (3, 2), expected 0xff7f7f7f. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (0, 3), expected 0xffffffff. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (1, 3), expected 0xffffffff. d3d10core.c:10079: Test failed: Got unexpected color 0x800000ff at (2, 3), expected 0xff000000. d3d10core.c:8551: Test failed: Layer 3, ref 0.500000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 12. d3d10core.c:9575: Test failed: Got unexpected color 0x800000ff. d3d10core.c:9577: Test failed: Got unexpected color 0x800000ff. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 13. d3d10core.c:6753: Test failed: Test 7: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 7: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 7: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 7: Got unexpected color 0x800000ff at (3). d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:9579: Test failed: Got unexpected color 0x800000ff. d3d10core.c:8551: Test failed: Layer 4, ref 0.500000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 7.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 14. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (0, 0), expected 0xffffffff. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (1, 0), expected 0xff000000. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (2, 0), expected 0xffffffff. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (3, 0), expected 0xff000000. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (0, 1), expected 0xff00ff00. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (1, 1), expected 0xff0000ff. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (2, 1), expected 0xff00ffff. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (3, 1), expected 0x00000000. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (0, 2), expected 0xffffff00. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (1, 2), expected 0xffff0000. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (2, 2), expected 0xffff00ff. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (3, 2), expected 0x00000000. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (0, 3), expected 0xff000000. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (1, 3), expected 0xff7f7f7f. d3d10core.c:8296: Test failed: Got 0.00000000e+000, expected 1.00000000e+002 at (0, 0), sub-resource 0. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (2, 3), expected 0xffffffff. d3d10core.c:9867: Test failed: Got unexpected color 0x800000ff at (3, 3), expected 0x00000000. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 15. d3d10core.c:6753: Test failed: Test 8: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 8: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 8: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 8: Got unexpected color 0x800000ff at (3). d3d10core.c:10143: Test failed: Got 0x800000ff, expected 0x00000000 at (0, 0), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 16. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 6.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 17. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 1. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 18. d3d10core.c:10149: Test failed: Got 0x800000ff, expected 0x00000000 at (0, 0), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 19. d3d10core.c:8551: Test failed: Layer 0, ref 0.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:6753: Test failed: Test 9: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 9: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 9: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 9: Got unexpected color 0x800000ff at (3). d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 5.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 20. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 21. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8310: Test failed: Got 0.00000000e+000, expected 3.29999995e+000 at (0, 0), sub-resource 0. d3d10core.c:10155: Test failed: Got 0x800000ff, expected 0x00000000 at (0, 0), sub-resource 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 22. d3d10core.c:10817: Test failed: Got unexpected color 0xffffffff for index 0. d3d10core.c:3494: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 4.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 23. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8551: Test failed: Layer 1, ref 0.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:6753: Test failed: Test 10: Got unexpected color 0x800000ff at (0). d3d10core.c:6753: Test failed: Test 10: Got unexpected color 0x800000ff at (1). d3d10core.c:6753: Test failed: Test 10: Got unexpected color 0x800000ff at (2). d3d10core.c:6753: Test failed: Test 10: Got unexpected color 0x800000ff at (3). d3d10core.c:10933: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8315: Test failed: Got 0.00000000e+000, expected 4.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 2, ref 0.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:10933: Test failed: Got 0xffffffff, expected 0xffff0000 at (0, 0), sub-resource 0. d3d10core.c:6841: Test failed: Test 0: Got unexpected color 0x800000ff at (0). d3d10core.c:6841: Test failed: Test 0: Got unexpected color 0x800000ff at (1). d3d10core.c:6841: Test failed: Test 0: Got unexpected color 0x800000ff at (2). d3d10core.c:6841: Test failed: Test 0: Got unexpected color 0x800000ff at (3). d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 2. d3d10core.c:8551: Test failed: Layer 3, ref 0.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:10817: Test failed: Got unexpected color 0xffffffff for index 4. d3d10core.c:11221: Test failed: Got unexpected color 0x00000000. d3d10core.c:11238: Test failed: Got unexpected color 0x00000000. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:11856: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:11252: Test failed: Got unexpected color 0x00000000. d3d10core.c:11857: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:11254: Test failed: Got unexpected color 0x00000000. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8551: Test failed: Layer 4, ref 0.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:10817: Test failed: Got unexpected color 0xffffffff for index 6. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:12079: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+001, 8.00000000e+000, 0.00000000e+000, 3.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:11691: Test failed: Got 1.00000000e+000, expected 0.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 5, ref 0.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:10817: Test failed: Got unexpected color 0xffffffff for index 7. d3d10core.c:12079: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {3.00000000e+000, 5.00000000e+000, 1.00000000e+000, 2.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:10817: Test failed: Got unexpected color 0xffffffff for index 8. d3d10core.c:11698: Test failed: Got 1.00000000e+000, expected 0.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 3. d3d10core.c:11608: Test failed: Got 5.00000000e-001, expected 4.00000006e-001 at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 0, ref 1.000000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:10817: Test failed: Got unexpected color 0xffffffff for index 9. d3d10core.c:8551: Test failed: Layer 1, ref 1.000000: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:11702: Test failed: Got 1.00000000e+000, expected 6.99999988e-001 at (0, 0), sub-resource 0. d3d10core.c:12177: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 2, ref 1.000000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:11706: Test failed: Got 1.00000000e+000, expected 6.99999988e-001 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8249: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:8551: Test failed: Layer 3, ref 1.000000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:11710: Test failed: Got 1.00000000e+000, expected 5.00000000e-001 at (0, 0), sub-resource 0. d3d10core.c:12469: Test failed: Got 0xffffffff, expected 0xff007f00 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8551: Test failed: Layer 4, ref 1.000000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:8551: Test failed: Layer 5, ref 1.000000: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d10core.c:8262: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d10core.c:13070: Test failed: Got 0x00000000, expected 0xffff0000 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:12177: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:13225: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0xffc00000, 0x7f800000, 0xff800000, 0x3f800000} at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:13714: Test failed: Got 0xcc0000ff, expected 0xe2007fcc at (0, 0), sub-resource 0. d3d10core.c:12474: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:13976: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:13978: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:13980: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:13982: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:13984: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8249: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:12177: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:8257: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:12172: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:13725: Test failed: Got 0xcc0000ff, expected 0x7f00ff00 at (0, 0), sub-resource 0. d3d10core.c:12474: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:14101: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (0, 0), expected 0.00000000e+000. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (1, 0), expected 6.25000000e-002. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (2, 0), expected 1.25000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (3, 0), expected 1.87500000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (0, 1), expected 2.50000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (1, 1), expected 3.12500000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (2, 1), expected 3.75000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (3, 1), expected 4.37500000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (0, 2), expected 5.00000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (1, 2), expected 5.62500000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (2, 2), expected 6.25000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (3, 2), expected 6.87500000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (0, 3), expected 7.50000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (1, 3), expected 8.12500000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (2, 3), expected 8.75000000e-001. d3d10core.c:11734: Test failed: Got unexpected depth 1.00000000e+000 at (3, 3), expected 9.37500000e-001. d3d10core.c:8262: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:12177: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:12172: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:14358: Test failed: Got 0x00000000, expected 0xffffffff at (0, 0), sub-resource 0. d3d10core.c:12177: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:14513: Test failed: Got 0x00000000, expected 0xffffff00 at (0, 0), sub-resource 0. d3d10core.c:13339: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0f0f0f0f, 0xf0f0f0f0, 0xf0f0f0f0, 0x0f0f0f0f} at (0, 0), sub-resource 0. d3d10core.c:13748: Test failed: Got 0xcc0000ff, expected 0x7f00ff00 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:14278: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:8296: Test failed: Got 0.00000000e+000, expected 1.00000000e+002 at (0, 0), sub-resource 0. d3d10core.c:12172: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:14368: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:14373: Test failed: Got 0x00000000, expected 0xffff0000 at (0, 0), sub-resource 0. d3d10core.c:13617: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.40000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:13752: Test failed: Got 0x8000ff00, expected 0xcc0000ff at (0, 0), sub-resource 0. d3d10core.c:8301: Test failed: Got 0.00000000e+000, expected 2.55000000e+002 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.50000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:14378: Test failed: Got 0x00000000, expected 0xffffffff at (0, 0), sub-resource 0. d3d10core.c:13622: Test failed: Got 0xff0000ff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:8310: Test failed: Got 0.00000000e+000, expected 3.29999995e+000 at (0, 0), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.60000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:7965: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.70000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 2. d3d10core.c:8315: Test failed: Got 0.00000000e+000, expected 4.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:14517: Test failed: Got 0x00000000, expected 0xff0000ff at (400, 0), sub-resource 0. d3d10core.c:13622: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:15300: Test failed: Got unexpected color 0xff0000ff. d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff00ffff at (1, 0). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff00ff00 at (2, 0). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffffff00 at (3, 0). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffff0000 at (0, 1). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffff00ff at (1, 1). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (2, 1). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff7f7f7f at (3, 1). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (0, 2). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (1, 2). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (2, 2). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (3, 2). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (0, 3). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (2, 3). d3d10core.c:15093: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (3, 3). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff00ffff at (1, 0). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff00ff00 at (2, 0). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffffff00 at (3, 0). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffff0000 at (0, 1). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffff00ff at (1, 1). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (2, 1). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff7f7f7f at (3, 1). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (0, 2). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (1, 2). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (2, 2). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (3, 2). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (0, 3). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (2, 3). d3d10core.c:15093: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (3, 3). d3d10core.c:8231: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 1. d3d10core.c:17673: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 200), sub-resource 0. d3d10core.c:17676: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 480), sub-resource 0. d3d10core.c:13617: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:17670: Test failed: Got 0xffffffff, expected 0xbfff0000 at (0, 0), sub-resource 0. d3d10core.c:17673: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 200), sub-resource 0. d3d10core.c:17676: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 480), sub-resource 0. d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 0). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 0). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 0). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 1). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 1). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 1). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 1). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 2). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 2). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 2). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 2). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 3). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 3). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 3). d3d10core.c:15093: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 3). d3d10core.c:17849: Test failed: Got 0xffffffff, expected 0x00000000 at (0, 0), sub-resource 0. d3d10core.c:17670: Test failed: Got 0xffffffff, expected 0x8000ff00 at (0, 0), sub-resource 0. d3d10core.c:17673: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 200), sub-resource 0. d3d10core.c:17676: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 480), sub-resource 0. d3d10core.c:15796: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:16697: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17849: Test failed: Got 0xffffffff, expected 0x00000000 at (0, 0), sub-resource 0. d3d10core.c:8249: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:13643: Test failed: Got 0xffff0000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17849: Test failed: Got 0xffffffff, expected 0x00000000 at (0, 0), sub-resource 0. d3d10core.c:17697: Test failed: Got 0xffffffff, expected 0xffff0000 at (0, 0), sub-resource 0. d3d10core.c:13648: Test failed: Got 0xff00ff00, expected 0xffff0000 at (0, 0), sub-resource 0. d3d10core.c:3286: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0), sub-resource 3. d3d10core.c:15800: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0), sub-resource 0. d3d10core.c:8257: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d10core.c:8262: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:16725: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17750: Test failed: Got 0xffffffff, expected 0xbfff0000 at (0, 0), sub-resource 0. d3d10core.c:13664: Test failed: Got 0xff00ff00, expected 0xffff0000 at (0, 0), sub-resource 0. d3d10core.c:17750: Test failed: Got 0xffffffff, expected 0x8000ff00 at (0, 0), sub-resource 0. d3d10core.c:16697: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:13670: Test failed: Got 0xffff0000, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (0, 0). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (1, 0). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (2, 0). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (3, 0). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (0, 1). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (1, 1). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (2, 1). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (3, 1). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (0, 2). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (1, 2). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (2, 2). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (3, 2). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (0, 3). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (1, 3). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (2, 3). d3d10core.c:15093: Test failed: Test 7: Got 0x800000ff, expected 0x00000000 at (3, 3). d3d10core.c:16713: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0), sub-resource 0. d3d10core.c:18022: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (16, 0), sub-resource 0. d3d10core.c:16725: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:18557: Test failed: Got 0x00, expected 0xff at (0, 0), sub-resource 0. d3d10core.c:18031: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 2.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:18367: Test failed: Got 0x00000000, expected 0xbfbfbfbf at (0, 0), sub-resource 0. d3d10core.c:18410: Test failed: Got 1.00000000e+000, expected 5.00000000e-001 at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xffbcffbc at (0, 0), sub-resource 0. d3d10core.c:18563: Test failed: Got 0x00000000, expected 0xff7f4000 at (0, 0), sub-resource 0. d3d10core.c:18412: Test failed: Got 1.00000000e+000, expected 5.00000000e-001 at (0, 0), sub-resource 0. d3d10core.c:18065: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 4.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:18557: Test failed: Got 0x00, expected 0xff at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:18432: Test failed: Got 1.00000000e+000, expected 6.00000024e-001 at (0, 0), sub-resource 0. d3d10core.c:18927: Test failed: Got unexpected color 0xffff00b2. d3d10core.c:18563: Test failed: Got 0x00000000, expected 0xff7f4000 at (0, 0), sub-resource 0. d3d10core.c:18855: Test failed: 0: Got unexpected color 0xff0000ff. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0), sub-resource 0. d3d10core.c:18745: Test failed: 0: Got unexpected color 0xff0000ff. d3d10core.c:18745: Test failed: 1: Got unexpected color 0xff0000ff. d3d10core.c:18745: Test failed: 2: Got unexpected color 0xff0000ff. d3d10core.c:18745: Test failed: 3: Got unexpected color 0xff0000ff. d3d10core.c:18081: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 5.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:18855: Test failed: 1: Got unexpected color 0xff0000ff. d3d10core.c:18745: Test failed: 4: Got unexpected color 0xff0000ff. d3d10core.c:18855: Test failed: 2: Got unexpected color 0xff0000ff. d3d10core.c:18745: Test failed: 5: Got unexpected color 0xff0000ff. d3d10core.c:18855: Test failed: 3: Got unexpected color 0xff0000ff. d3d10core.c:19013: Test failed: Got 0xffffffff, expected 0xff000000 at (0, 0), sub-resource 0. d3d10core.c:18745: Test failed: 6: Got unexpected color 0xff0000ff. d3d10core.c:18086: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 5.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (16, 0), sub-resource 0. d3d10core.c:18436: Test failed: Got 1.00000000e+000, expected 4.00000006e-001 at (0, 0), sub-resource 0. d3d10core.c:4831: Test failed: Got unexpected query result 0x0000000000000000. d3d10core.c:18855: Test failed: 4: Got unexpected color 0xff0000ff. d3d10core.c:18855: Test failed: 5: Got unexpected color 0xff0000ff. d3d10core.c:19161: Test failed: Got unexpected colour 0x00000000 at (0, 0, 0), expected 0xff000000. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xfff1e1cf at (0, 0), sub-resource 0. d3d10core.c:18855: Test failed: 6: Got unexpected color 0xff0000ff. d3d10core.c:19591: Test failed: Format 0x2: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {-1.72477726e-034, 5.69045661e-028, -1.07374176e+008, -6.25985340e+018} at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x6: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {-1.72477726e-034, 5.69045661e-028, -1.07374176e+008, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:19659: Test failed: Got colour {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d10core.c:19591: Test failed: Format 0x10: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {-1.72477726e-034, 5.69045661e-028, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:17187: Test failed: Got unexpected color 0xffffffff. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xffbcffbc at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x29: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {-1.72477726e-034, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x18: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.82991230e-001, 3.28445762e-001, 1.15347020e-001, 6.66666687e-001} at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xfff1e1cf at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x1a: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.89453125e-001, 1.30000000e+001, 3.81250000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0xa: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.56445313e+000, -1.12831593e-004, 1.03500000e+002, 7.57217407e-004} at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0xb: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.62226284e-001, 5.28892934e-001, 3.37773710e-001, 7.11070448e-002} at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0xd: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.24460614e-001, -9.42258954e-001, 6.75557733e-001, 1.42216250e-001} at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x22: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.56445313e+000, -1.12831593e-004, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x23: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.62226284e-001, 5.28892934e-001, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x25: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.24460614e-001, -9.42258954e-001, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x36: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.56445313e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:17189: Test failed: Got unexpected color 0xffffffff. d3d10core.c:19591: Test failed: Format 0x1c: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.29411772e-001, 2.62745112e-001, 3.96078438e-001, 5.29411793e-001} at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x1f: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.59842515e-001, 5.27559042e-001, 7.95275569e-001, -9.52755928e-001} at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xfff1e1cf at (0, 0), sub-resource 0. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0), sub-resource 0. d3d10core.c:19591: Test failed: Format 0x3d: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.29411772e-001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (0, 0), sub-resource 0. d3d10core.c:17187: Test failed: Got unexpected color 0xffffffff. d3d10core.c:18299: Test failed: Got 0xffffffff, expected 0xfff0dec4 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17187: Test failed: Got unexpected color 0xffffffff. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17189: Test failed: Got unexpected color 0xffffffff. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17181: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0. d3d10core.c:17187: Test failed: Got unexpected color 0xffffffff. d3d10core.c:17216: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0), sub-resource 0.
d3d11: d3d11.c:8613: Test failed: Got unexpected colour 0x800000ff. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11299: Test failed: Got 0xff0000ff, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:10746: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11300: Test failed: Got 0xff0000ff, expected 0x7f7f7f7f at (0, 0, 0), sub-resource 0. d3d11.c:8662: Test failed: Got unexpected colour 0x00ff0000. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:9101: Test failed: Test 4: Got unexpected colour 0x800000ff at (0). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:9101: Test failed: Test 5: Got unexpected colour 0x800000ff at (0). d3d11.c:9101: Test failed: Test 5: Got unexpected colour 0x800000ff at (1). d3d11.c:9101: Test failed: Test 5: Got unexpected colour 0x800000ff at (2). d3d11.c:9101: Test failed: Test 5: Got unexpected colour 0x800000ff at (3). d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:9101: Test failed: Test 6: Got unexpected colour 0x800000ff at (0). d3d11.c:9101: Test failed: Test 6: Got unexpected colour 0x800000ff at (1). d3d11.c:9101: Test failed: Test 6: Got unexpected colour 0x800000ff at (2). d3d11.c:9101: Test failed: Test 6: Got unexpected colour 0x800000ff at (3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11947: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:11316: Test failed: Got 0xff0000ff, expected 0xff7f3300 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10777: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d11.c:9101: Test failed: Test 7: Got unexpected colour 0x800000ff at (0). d3d11.c:9101: Test failed: Test 7: Got unexpected colour 0x800000ff at (1). d3d11.c:9101: Test failed: Test 7: Got unexpected colour 0x800000ff at (2). d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 1. d3d11.c:11953: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10810: Test failed: Got 0.00000000e+000, expected 1.00000000e+002 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10815: Test failed: Got 0.00000000e+000, expected 2.55000000e+002 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:9101: Test failed: Test 9: Got unexpected colour 0x800000ff at (0). d3d11.c:9101: Test failed: Test 9: Got unexpected colour 0x800000ff at (1). d3d11.c:9101: Test failed: Test 9: Got unexpected colour 0x800000ff at (2). d3d11.c:9101: Test failed: Test 9: Got unexpected colour 0x800000ff at (3). d3d11.c:14154: Test failed: Got colour 0x800000ff at (0, 0), expected 0xffffffff. d3d11.c:14154: Test failed: Got colour 0x800000ff at (1, 0), expected 0xff000000. d3d11.c:14154: Test failed: Got colour 0x800000ff at (2, 0), expected 0xffffffff. d3d11.c:14154: Test failed: Got colour 0x800000ff at (3, 0), expected 0xff000000. d3d11.c:14154: Test failed: Got colour 0x800000ff at (0, 1), expected 0xff00ff00. d3d11.c:14154: Test failed: Got colour 0x800000ff at (1, 1), expected 0xff0000ff. d3d11.c:14154: Test failed: Got colour 0x800000ff at (2, 1), expected 0xff00ffff. d3d11.c:14154: Test failed: Got colour 0x800000ff at (3, 1), expected 0x00000000. d3d11.c:14154: Test failed: Got colour 0x800000ff at (0, 2), expected 0xffffff00. d3d11.c:14154: Test failed: Got colour 0x800000ff at (1, 2), expected 0xffff0000. d3d11.c:14154: Test failed: Got colour 0x800000ff at (2, 2), expected 0xffff00ff. d3d11.c:14154: Test failed: Got colour 0x800000ff at (3, 2), expected 0x00000000. d3d11.c:14154: Test failed: Got colour 0x800000ff at (0, 3), expected 0xff000000. d3d11.c:14154: Test failed: Got colour 0x800000ff at (1, 3), expected 0xff7f7f7f. d3d11.c:14154: Test failed: Got colour 0x800000ff at (2, 3), expected 0xffffffff. d3d11.c:14154: Test failed: Got colour 0x800000ff at (3, 3), expected 0x00000000. d3d11.c:10824: Test failed: Got 0.00000000e+000, expected 3.29999995e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10829: Test failed: Got 0.00000000e+000, expected 4.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 1. d3d11.c:11976: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 1.10000000e+001, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 2. d3d11.c:14015: Test failed: Got unexpected colour 0x800000ff. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 3. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 4. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 1. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11093: Test failed: Got 5.00000000e-001, expected 0.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 1.00000000e+001, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 5. d3d11.c:11984: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 6. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 7. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 9.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 8. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 2.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 9. d3d11.c:15060: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 10. d3d11.c:14340: Test failed: Got 0x800000ff, expected 0x00000000 at (0, 0, 0), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 8.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 11. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 12. d3d11.c:14725: Test failed: Got 0x800000ff, expected 0x45454545 at (0, 0, 0), sub-resource 0. d3d11.c:11093: Test failed: Got 5.00000000e-001, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 7.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 14. d3d11.c:14737: Test failed: Got colour 0x800000ff at (0, 0), expected 0xff0000ff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (1, 0), expected 0xff00ffff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (2, 0), expected 0xff00ff00. d3d11.c:14737: Test failed: Got colour 0x800000ff at (3, 0), expected 0xffffff00. d3d11.c:14737: Test failed: Got colour 0x800000ff at (0, 1), expected 0xffff0000. d3d11.c:14737: Test failed: Got colour 0x800000ff at (1, 1), expected 0xffff00ff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (2, 1), expected 0xff000000. d3d11.c:14737: Test failed: Got colour 0x800000ff at (3, 1), expected 0xff7f7f7f. d3d11.c:14737: Test failed: Got colour 0x800000ff at (0, 2), expected 0xffffffff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (1, 2), expected 0xffffffff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (2, 2), expected 0xffffffff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (3, 2), expected 0xff000000. d3d11.c:14737: Test failed: Got colour 0x800000ff at (0, 3), expected 0xffffffff. d3d11.c:14737: Test failed: Got colour 0x800000ff at (1, 3), expected 0xff000000. d3d11.c:14737: Test failed: Got colour 0x800000ff at (2, 3), expected 0xff000000. d3d11.c:14737: Test failed: Got colour 0x800000ff at (3, 3), expected 0xff000000. d3d11.c:15075: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 16. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 6.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 17. d3d11.c:10764: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:14788: Test failed: Got 0x800000ff, expected 0x00000000 at (0, 0, 0), sub-resource 0. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 18. d3d11.c:10772: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 19. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11093: Test failed: Got 5.00000000e-001, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:14794: Test failed: Got 0x800000ff, expected 0x00000000 at (0, 0, 0), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 3.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 22. d3d11.c:11093: Test failed: Got 5.00000000e-001, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10777: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11864: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 4.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 23. d3d11.c:15097: Test failed: Got 0x00000000, expected 0xffff00ff at (0, 0, 0), sub-resource 0. d3d11.c:15099: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 1. d3d11.c:10746: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.40000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.50000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10772: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:15803: Test failed: Got 0x00000000, expected 0xff7f4c33 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.60000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:16007: Test failed: Got unexpected colour 0x00000000. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.70000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11151: Test failed: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d11.c:16025: Test failed: Got unexpected colour 0x00000000. d3d11.c:16039: Test failed: Got unexpected colour 0x00000000. d3d11.c:16041: Test failed: Got unexpected colour 0x00000000. d3d11.c:11151: Test failed: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d11.c:10810: Test failed: Got 0.00000000e+000, expected 1.00000000e+002 at (0, 0), sub-resource 0. d3d11.c:17252: Test failed: Got 0x00000000, expected 0x00000064 at (0, 0, 0), sub-resource 0. d3d11.c:10815: Test failed: Got 0.00000000e+000, expected 2.55000000e+002 at (0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0xff000000 at (0, 0, 0), sub-resource 0. d3d11.c:17129: Test failed: Got 1.00000000e+000, expected 0.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:17043: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:11151: Test failed: Got 5.00000000e-001, expected 0.00000000e+000 at (100, 100), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0x00ff0000 at (0, 0, 0), sub-resource 0. d3d11.c:17524: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10829: Test failed: Got 0.00000000e+000, expected 4.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:17258: Test failed: Got 0x00000000, expected 0x000001f4 at (0, 0, 0), sub-resource 0. d3d11.c:17140: Test failed: Got 1.00000000e+000, expected 6.99999988e-001 at (0, 0), sub-resource 0. d3d11.c:17524: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0xffff0000 at (0, 0, 0), sub-resource 0. d3d11.c:17524: Test failed: Got 0xffffffff, expected 0xffff0000 at (0, 0, 0), sub-resource 0. d3d11.c:17144: Test failed: Got 1.00000000e+000, expected 6.99999988e-001 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:17524: Test failed: Got 0xffffffff, expected 0xff0f0f0f at (0, 0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0x0000ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:17148: Test failed: Got 1.00000000e+000, expected 5.00000000e-001 at (0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:17849: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18255: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:18349: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:17850: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:11151: Test failed: Got 5.00000000e-001, expected 1.00000000e+000 at (100, 100), sub-resource 0. d3d11.c:18465: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:18356: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:18260: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0x00ffff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18160: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+001, 8.00000000e+000, 7.00000000e+000, 3.00000000e+000} at (0, 0), sub-resource 0. d3d11.c:10746: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18472: Test failed: Got 0x00000000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0xffffff00 at (0, 0, 0), sub-resource 0. d3d11.c:18160: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {3.00000000e+000, 5.00000000e+000, 1.00000000e+000, 2.00000000e+000} at (0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0x000000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18560: Test failed: Got 0xffffffff, expected 0xff007f00 at (0, 0, 0), sub-resource 0. d3d11.c:18816: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18820: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:10764: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18824: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:17406: Test failed: Got 0xffffffff, expected 0x00ff00ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10777: Test failed: Got 0.00000000e+000, expected 2.00000003e-001 at (0, 0), sub-resource 0. d3d11.c:18828: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:18832: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:18260: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:18565: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 2. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:18824: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff} at (0, 0), sub-resource 0. d3d11.c:20939: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:18565: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:18260: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:21064: Test failed: Got 0xcc0000ff, expected 0xe2007fcc at (0, 0, 0), sub-resource 0. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 1. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x80000000, 0x80000000, 0x80000000, 0x80000000} at (0, 0), sub-resource 0. d3d11.c:21068: Test failed: Got 0x8000ff00, expected 0xe2007fcc at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:21075: Test failed: Got 0xcc0000ff, expected 0x7f00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:21079: Test failed: Got 0x8000ff00, expected 0xcc0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000002, 0x00000002, 0x00000002} at (0, 0), sub-resource 0. d3d11.c:21098: Test failed: Got 0xcc0000ff, expected 0x7f00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:11519: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 3. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00ff00ff, 0x00ff00ff, 0x00ff00ff, 0x00ff00ff} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:6086: Test failed: Got unexpected query result 0x0000000000000000. d3d11.c:20969: Test failed: Got 0xff0000ff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.40000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.50000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.60000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000002, 0x00000002, 0x00000002} at (0, 0), sub-resource 0. d3d11.c:20969: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.70000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.80000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20964: Test failed: Got 0xff0000ff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.90000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18828: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000ffff, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18832: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000ffff, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18816: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000ffff, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:20995: Test failed: Got 0xff00ff00, expected 0xffff0000 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000002, 0x00000002, 0x00000002} at (0, 0), sub-resource 0. d3d11.c:18824: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000ffff, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:21410: Test failed: Feature level 0x9300: Got 0x00000000, expected 0xffffff00 at (0, 0, 0), sub-resource 0. d3d11.c:18828: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff} at (0, 0), sub-resource 0. d3d11.c:21011: Test failed: Got 0xff00ff00, expected 0xffff0000 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x80000000, 0x80000000, 0x80000000, 0x80000000} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:21017: Test failed: Got 0xffff0000, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x80000000, 0x80000000, 0x80000000, 0x80000000} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff} at (0, 0), sub-resource 0. d3d11.c:18816: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {4.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:21783: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {5.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {6.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:21866: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:18820: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:21410: Test failed: Feature level 0x9100: Got 0x00000000, expected 0xffffff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {7.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {8.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18824: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:21654: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21656: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21658: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21660: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21662: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21873: Test failed: Got 0xffffffff, expected 0x00000000 at (0, 0, 0), sub-resource 0. d3d11.c:21671: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21673: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21675: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21677: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21679: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:21964: Test failed: Got 0xff00ff00, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {9.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18832: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x3f000000 at (0, 0). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x3e800000 at (1, 0). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x00000000 at (3, 0). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xbf800000 at (0, 1). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xc0000000 at (1, 1). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xc0400000 at (2, 1). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xc0800000 at (3, 1). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xbf000000 at (0, 2). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xbe800000 at (1, 2). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0xbf800000 at (2, 2). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x80000000 at (3, 2). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x40000000 at (1, 3). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x40400000 at (2, 3). d3d11.c:22335: Test failed: Test 0: Got 0x3f800000, expected 0x40800000 at (3, 3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0xfffffffa, 0xfffffffa, 0xfffffffa, 0xfffffffa} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0xfffffffc, 0xfffffffc, 0xfffffffc, 0xfffffffc} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:23331: Test failed: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:18816: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:23336: Test failed: Got 0x00000000, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0xffffffff at (0, 0). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000010 at (1, 0). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000020 at (2, 0). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000030 at (3, 0). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000040 at (0, 1). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000050 at (1, 1). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000060 at (2, 1). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0xfffffcf7 at (3, 1). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0xfffffd66 at (0, 2). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x00000090 at (1, 2). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0xfffffdd5 at (2, 2). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x000000b0 at (3, 2). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x000000c0 at (0, 3). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x000000d0 at (1, 3). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0x000000e0 at (2, 3). d3d11.c:22335: Test failed: Test 2: Got 0x3f800000, expected 0xffffff9b at (3, 3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.40000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18832: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000bbbb, 0x0000ffff, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:23492: Test failed: Got 0x00000000, expected 0xff0000ff at (400, 0, 0), sub-resource 0. d3d11.c:22995: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:23351: Test failed: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:23225: Test failed: Test 1: Got 0x1 (1), expected 0 (0) for 'atomic_iadd' with inputs (4294967295, 4294967295), (0), 0x1 (1). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.50000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:23225: Test failed: Test 1: Got 0 (0), expected 0xffffffff (-1) for 'atomic_or' with inputs (4294967295, 4294967295), (0), 0 (0). d3d11.c:23225: Test failed: Test 1: Got 0 (0), expected 0xffffffff (-1) for 'atomic_umax' with inputs (4294967295, 4294967295), (0), 0 (0). d3d11.c:23225: Test failed: Test 1: Got 0xffffffff (-1), expected 0 (0) for 'atomic_xor' with inputs (4294967295, 4294967295), (0), 0xffffffff (-1). d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000c0de, 0x0000cccc, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:23001: Test failed: Got 0.00000000e+000, expected 1.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:18816: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.60000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:23488: Test failed: Got 0x00000000, expected 0xffffff00 at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.70000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:18824: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:23006: Test failed: Got 0.00000000e+000, expected 2.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:18828: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000ffff, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.80000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24332: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000004, 0x00000004, 0x00000004, 0x00000004} at (0, 0), sub-resource 0. d3d11.c:23492: Test failed: Got 0x00000000, expected 0xff0000ff at (400, 0, 0), sub-resource 0. d3d11.c:23014: Test failed: Got 0.00000000e+000, expected 2.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff00ffff at (1, 0). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff00ff00 at (2, 0). d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000064, 0x00000064, 0x00000064, 0x00000064} at (0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffffff00 at (3, 0). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffff0000 at (0, 1). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffff00ff at (1, 1). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (2, 1). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff7f7f7f at (3, 1). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (0, 2). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (1, 2). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (2, 2). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (3, 2). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xffffffff at (0, 3). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (2, 3). d3d11.c:24753: Test failed: Test 0: Got 0x800000ff, expected 0xff000000 at (3, 3). d3d11.c:24909: Test failed: Feature level 0xb000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.90000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000010, 0x00000010, 0x00000010, 0x00000010} at (0, 0), sub-resource 0. d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000aa at (0, 0). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000aa at (1, 0). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000cc at (2, 0). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000cc at (3, 0). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000aa at (0, 1). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000aa at (1, 1). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000dd at (2, 1). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000dd at (3, 1). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000bb at (0, 2). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000bb at (1, 2). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000ee at (2, 2). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000ee at (3, 2). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000bb at (0, 3). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000bb at (1, 3). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000ff at (2, 3). d3d11.c:22335: Test failed: Test 8: Got 0x3f800000, expected 0x000000ff at (3, 3). d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000005, 0x00000014, 0x00000000, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff00ffff at (1, 0). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff00ff00 at (2, 0). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffffff00 at (3, 0). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffff0000 at (0, 1). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffff00ff at (1, 1). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (2, 1). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff7f7f7f at (3, 1). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (0, 2). d3d11.c:24915: Test failed: Feature level 0xb000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (1, 2). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (2, 2). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (3, 2). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xffffffff at (0, 3). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (2, 3). d3d11.c:24753: Test failed: Test 1: Got 0x800000ff, expected 0xff000000 at (3, 3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:23017: Test failed: Got 0.00000000e+000, expected 4.00000000e+000 at (0, 0), sub-resource 0. d3d11.c:24915: Test failed: Feature level 0xa100: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24921: Test failed: Feature level 0xb000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24915: Test failed: Feature level 0xa000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000014, 0x00000000, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:24927: Test failed: Feature level 0xb000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff0000ff at (1, 0). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ffff at (2, 0). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ffff at (3, 0). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff0000ff at (0, 1). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff0000ff at (1, 1). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ffff at (2, 1). d3d11.c:24921: Test failed: Feature level 0xa100: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ffff at (3, 1). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ff00 at (0, 2). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ff00 at (1, 2). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xffffff00 at (2, 2). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xffffff00 at (3, 2). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ff00 at (0, 3). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xff00ff00 at (1, 3). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xffffff00 at (2, 3). d3d11.c:24753: Test failed: Test 2: Got 0x800000ff, expected 0xffffff00 at (3, 3). d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000020, 0x00000000, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:18828: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24921: Test failed: Feature level 0xa000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:18832: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000dead, 0x0000c0de, 0x0000ffff, 0x0000dddd} at (0, 0), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000005, 0x00000004, 0x00000000, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24927: Test failed: Feature level 0xa100: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24927: Test failed: Feature level 0xa000: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.40000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 0). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 0). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 0). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 0). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 1). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 1). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 1). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 1). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 2). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 2). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 2). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 2). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (0, 3). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (1, 3). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (2, 3). d3d11.c:24753: Test failed: Test 3: Got 0x800000ff, expected 0xff0000ff at (3, 3). d3d11.c:18836: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000aaaa, 0x0000bbbb, 0x0000cccc, 0x0000eeee} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.50000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xffffffff at (0, 0). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xffffffff at (1, 0). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff0000ff at (2, 0). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff0000ff at (3, 0). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xffffffff at (0, 1). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xffffffff at (1, 1). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff0000ff at (2, 1). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff0000ff at (3, 1). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff000000 at (0, 2). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff000000 at (1, 2). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff00ff00 at (2, 2). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff00ff00 at (3, 2). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff000000 at (0, 3). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff00ff00 at (2, 3). d3d11.c:24753: Test failed: Test 4: Got 0x800000ff, expected 0xff00ff00 at (3, 3). d3d11.c:26099: Test failed: Got unexpected colour 0xff0000ff. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.60000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.70000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00003fff, 0x00003fff, 0x00003fff, 0x00003fff} at (0, 0), sub-resource 0. d3d11.c:26400: Test failed: Got 0x00000000, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000004, 0x00000000, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.80000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0xfffffffe, 0xfffffffe, 0xfffffffe, 0xfffffffe} at (0, 0), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000032, 0x00000032, 0x00000032, 0x00000032} at (0, 0), sub-resource 0. d3d11.c:26426: Test failed: Got 0xff00ff00, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff} at (0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {2.90000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.00000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:28335: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 1.00000000e+000, 1.00000000e+000, 0.00000000e+000}. d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 78: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.10000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xffffffff at (0, 0). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xffffffff at (1, 0). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff0000ff at (2, 0). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff0000ff at (3, 0). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xffffffff at (0, 1). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xffffffff at (1, 1). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff0000ff at (2, 1). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff0000ff at (3, 1). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff000000 at (0, 2). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff000000 at (1, 2). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff00ff00 at (2, 2). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff00ff00 at (3, 2). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff000000 at (0, 3). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff00ff00 at (2, 3). d3d11.c:24753: Test failed: Test 7: Got 0x800000ff, expected 0xff00ff00 at (3, 3). d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 1.00000000e+000, 1.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 1.00000000e+000, 1.00000000e+000, 0.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}. d3d11.c:28356: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {0.00000000e+000, 1.00000000e+000, 1.00000000e+000, 0.00000000e+000}. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.20000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 79: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:26463: Test failed: Got 0xff00ff00, expected 0xffffffff at (0, 0, 0), sub-resource 0. d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.30000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xffffffff at (0, 0). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xffffffff at (1, 0). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff0000ff at (2, 0). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff0000ff at (3, 0). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xffffffff at (0, 1). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xffffffff at (1, 1). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff0000ff at (2, 1). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff0000ff at (3, 1). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff000000 at (0, 2). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff000000 at (1, 2). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff00ff00 at (2, 2). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff00ff00 at (3, 2). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff000000 at (0, 3). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff000000 at (1, 3). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff00ff00 at (2, 3). d3d11.c:24753: Test failed: Test 8: Got 0x800000ff, expected 0xff00ff00 at (3, 3). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 80: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.40000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (0, 0). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (1, 0). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (2, 0). d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000032, 0x00000032, 0x00000032, 0x00000032} at (0, 0), sub-resource 0. d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (3, 0). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (0, 1). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (1, 1). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (2, 1). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (3, 1). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (0, 2). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (1, 2). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (2, 2). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (3, 2). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (0, 3). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (1, 3). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (2, 3). d3d11.c:24753: Test failed: Test 9: Got 0x800000ff, expected 0x00000000 at (3, 3). d3d11.c:27338: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 81: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:10480: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {3.50000000e+001, 0.00000000e+000, 0.00000000e+000, 1.00000000e+000} at (100, 100), sub-resource 0. d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (0, 0). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (1, 0). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (2, 0). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (3, 0). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (0, 1). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (1, 1). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (2, 1). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (3, 1). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (0, 2). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (1, 2). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (2, 2). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (3, 2). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (0, 3). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (1, 3). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (2, 3). d3d11.c:24753: Test failed: Test 10: Got 0x800000ff, expected 0x00000000 at (3, 3). d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 1.50000000e+000, 1.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {3.50000000e+000, 4.50000000e+000, 4.50000000e+000, 3.50000000e+000}. d3d11.c:27343: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {4.50000000e+000, 5.50000000e+000, 5.50000000e+000, 4.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 5.50000000e+000, 5.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 5.50000000e+000, 5.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {3.50000000e+000, 4.50000000e+000, 4.50000000e+000, 3.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {4.50000000e+000, 5.50000000e+000, 5.50000000e+000, 4.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 5.50000000e+000, 5.50000000e+000}. d3d11.c:28117: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 5.50000000e+000, 5.50000000e+000}. d3d11.c:28867: Test failed: Feature level 0xb000: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {8.00000000e+000, 9.00000000e+000, 5.00000000e+000, 4.00000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {9.00000000e+000, 5.00000000e-001, 6.00000000e+000, 5.00000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.00000000e-001, 1.50000000e+000, 7.00000000e+000, 6.00000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {1.50000000e+000, 1.50000000e+000, 7.00000000e+000, 7.00000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {2.50000000e+000, 3.50000000e+000, 9.00000000e+000, 8.00000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {3.50000000e+000, 4.50000000e+000, 5.00000000e-001, 9.00000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {4.50000000e+000, 5.50000000e+000, 1.50000000e+000, 5.00000000e-001}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 1.50000000e+000, 1.50000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {2.50000000e+000, 3.50000000e+000, 3.50000000e+000, 2.50000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {3.50000000e+000, 4.50000000e+000, 4.50000000e+000, 3.50000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {4.50000000e+000, 5.50000000e+000, 5.50000000e+000, 4.50000000e+000}. d3d11.c:28136: Test failed: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {5.50000000e+000, 5.50000000e+000, 5.50000000e+000, 5.50000000e+000}. d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 82: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:27347: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:28879: Test failed: Feature level 0xb000: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:24179: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000002, 0x00000002, 0x00000002} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000000f, 0x007fffff, 0x0000007f, 0x3fffffff} at (0, 0), sub-resource 0. d3d11.c:28888: Test failed: Feature level 0xb000: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 84: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:28985: Test failed: Got 0x00000000, expected 0x00000064 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000000, 0x007f0000, 0x00000000, 0x3f800000} at (0, 0), sub-resource 0. d3d11.c:28987: Test failed: Got 0x00000000, expected 0x000000c8 at (0, 0, 0), sub-resource 0. d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:10081: Test failed: Test 86: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:29153: Test failed: Got 5.00000000e-001, expected 6.99999988e-001 at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000000f, 0x00000000, 0x0000007f, 0x0000007f} at (0, 0), sub-resource 0. d3d11.c:28999: Test failed: Got 0x00000000, expected 0x00000190 at (0, 0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:29606: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:30794: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:30975: Test failed: Got 0xffffffff, expected 0x00000000 at (0, 0, 0), sub-resource 0. d3d11.c:29629: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000000, 0x00400000, 0x00000001, 0x20000001} at (0, 0), sub-resource 0. d3d11.c:30794: Test failed: Got 0xffffffff, expected 0xbfff0000 at (0, 0, 0), sub-resource 0. d3d11.c:29641: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31150: Test failed: Got {0.00000000e+000, 0.00000000e+000, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 1.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (16, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000000f, 0x0000000f, 0x0000000f, 0x0000000f} at (0, 0), sub-resource 0. d3d11.c:30794: Test failed: Got 0xffffffff, expected 0x8000ff00 at (0, 0, 0), sub-resource 0. d3d11.c:30797: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 200, 1), sub-resource 0. d3d11.c:30800: Test succeeded inside todo block: Got 0xffffffff, expected 0xffffffff at (640, 480, 1), sub-resource 0. d3d11.c:29152: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:29153: Test failed: Got 5.00000000e-001, expected 6.99999988e-001 at (0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x007fffff, 0x007fffff, 0x007fffff, 0x007fffff} at (0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:29613: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:30975: Test failed: Got 0xffffffff, expected 0x00000000 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x3fffffff, 0x3fffffff, 0x3fffffff, 0x3fffffff} at (0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffbcffbc at (0, 0, 0), sub-resource 0. d3d11.c:30874: Test failed: Got 0xffffffff, expected 0xbfff0000 at (0, 0, 0), sub-resource 0. d3d11.c:29152: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:29153: Test failed: Got 5.00000000e-001, expected 6.00000024e-001 at (0, 0), sub-resource 0. d3d11.c:29629: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31194: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 4.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 0. d3d11.c:30874: Test failed: Got 0xffffffff, expected 0x8000ff00 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff} at (0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00007ffe, 0x00007ffe, 0x00007ffe, 0x00007ffe} at (0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xfff1e1cf at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000ffff, 0x0000ffff, 0x0000ffff, 0x0000ffff} at (0, 0), sub-resource 0. d3d11.c:31210: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {0.00000000e+000, 5.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00007fff, 0x00007fff, 0x00007fff, 0x00007fff} at (0, 0), sub-resource 0. d3d11.c:31952: Test failed: Got 0x00000000, expected 0x7f7f7f7f at (0, 0, 0), sub-resource 0. d3d11.c:31802: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31215: Test failed: Got {5.00000000e-001, 5.00000000e-001, 0.00000000e+000, 0.00000000e+000}, expected {1.00000000e+000, 5.00000000e+000, 0.00000000e+000, 0.00000000e+000} at (16, 0), sub-resource 0. d3d11.c:31805: Test failed: Test 0: Got unexpected value 0. d3d11.c:29613: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31824: Test failed: Test 0: Got unexpected value 0. d3d11.c:31959: Test failed: Got 0x00000000, expected 0x3f3f3f3f at (0, 0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffbcffbc at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0001ffff, 0x0001ffff, 0x0001ffff, 0x0001ffff} at (0, 0), sub-resource 0. d3d11.c:30320: Test failed: Got unexpected color 0xffffffff. d3d11.c:32004: Test failed: Got 1.00000000e+000, expected 5.00000000e-001 at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffbcffbc at (0, 0, 0), sub-resource 0. d3d11.c:32006: Test failed: Got 1.00000000e+000, expected 5.00000000e-001 at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000001, 0x00000001, 0x00000001} at (0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31805: Test failed: Test 1: Got unexpected value 0. d3d11.c:32026: Test failed: Got 1.00000000e+000, expected 6.00000024e-001 at (0, 0), sub-resource 0. d3d11.c:31819: Test failed: Test 1: Got unexpected value 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xfff1e1cf at (0, 0, 0), sub-resource 0. d3d11.c:31805: Test failed: Test 2: Got unexpected value 0. d3d11.c:32030: Test failed: Got 1.00000000e+000, expected 4.00000006e-001 at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x1e6a2c48, 0x12345678, 0x1e6a0000, 0x2c480000} at (0, 0), sub-resource 0. d3d11.c:32156: Test failed: Got 0x00, expected 0xff at (0, 0, 0), sub-resource 0. d3d11.c:30318: Test failed: Got unexpected color 0xffffffff. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000ffff, 0xffff0000, 0x00000000, 0xffff0000} at (0, 0), sub-resource 0. d3d11.c:32162: Test failed: Got 0x00000000, expected 0xff7f4000 at (0, 0, 0), sub-resource 0. d3d11.c:31824: Test failed: Test 2: Got unexpected value 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0xffffffff, 0xffffffff, 0xffff0000, 0xffff0000} at (0, 0), sub-resource 0. d3d11.c:32156: Test failed: Got 0x00, expected 0xff at (0, 0, 0), sub-resource 0. d3d11.c:31802: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:31805: Test failed: Test 3: Got unexpected value 0. d3d11.c:32162: Test failed: Got 0x00000000, expected 0xff7f4000 at (0, 0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xff80ff80 at (0, 0, 0), sub-resource 0. d3d11.c:31824: Test failed: Test 3: Got unexpected value 0. d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (0, 0). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (1, 0). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (2, 0). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (3, 0). d3d11.c:31802: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (0, 1). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (1, 1). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (2, 1). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (3, 1). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (0, 2). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (1, 2). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (2, 2). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (3, 2). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (0, 3). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (1, 3). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (2, 3). d3d11.c:32557: Test failed: Got unexpected colour 0x00000000 at (3, 3). d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (0, 0). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (1, 0). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (2, 0). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (3, 0). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (0, 1). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (1, 1). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (2, 1). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (3, 1). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (0, 2). d3d11.c:31805: Test failed: Test 4: Got unexpected value 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000020, 0x00000000, 0x0000001f, 0xffffffff} at (0, 0), sub-resource 0. d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (1, 2). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (2, 2). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (3, 2). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (0, 3). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (1, 3). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (2, 3). d3d11.c:32568: Test failed: Got unexpected colour 0x00000000 at (3, 3). d3d11.c:32853: Test failed: 0: Got unexpected colour 0xff0000ff. d3d11.c:33091: Test failed: Got unexpected colour 0xffff00b2. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0000001f, 0x00000000, 0x0000001e, 0x0000001e} at (0, 0), sub-resource 0. d3d11.c:32853: Test failed: 1: Got unexpected colour 0xff0000ff. d3d11.c:32853: Test failed: 2: Got unexpected colour 0xff0000ff. d3d11.c:32998: Test failed: 0: Got unexpected colour 0xb233801a. d3d11.c:32998: Test failed: 1: Got unexpected colour 0xb233801a. d3d11.c:32853: Test failed: 3: Got unexpected colour 0xff0000ff. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x0000001f, 0x0000001f, 0x0000001e} at (0, 0), sub-resource 0. d3d11.c:32853: Test failed: 4: Got unexpected colour 0xff0000ff. d3d11.c:32853: Test failed: 5: Got unexpected colour 0xff0000ff. d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:32998: Test failed: 2: Got unexpected colour 0xb233801a. d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:32853: Test failed: 6: Got unexpected colour 0xff0000ff. d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:32618: Test failed: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:32998: Test failed: 3: Got unexpected colour 0xb233801a. d3d11.c:32998: Test failed: 4: Got unexpected colour 0xb233801a. d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:32630: Test failed: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffdfc0a0 at (0, 0, 0), sub-resource 0. d3d11.c:32998: Test failed: 5: Got unexpected colour 0xb233801a. d3d11.c:32998: Test failed: 6: Got unexpected colour 0xb233801a. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000002, 0x00000000, 0x0000001f, 0x0000001e} at (0, 0), sub-resource 0. d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (0, 0). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (1, 0). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (2, 0). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (3, 0). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (0, 1). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (1, 1). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (2, 1). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (3, 1). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (0, 2). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (1, 2). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (2, 2). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (3, 2). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (0, 3). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (1, 3). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (2, 3). d3d11.c:32649: Test failed: Got unexpected colour 0x800000ff at (3, 3). d3d11.c:32998: Test failed: 7: Got unexpected colour 0xb233801a. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000008, 0x00000003, 0x0000001f, 0x0000001e} at (0, 0), sub-resource 0. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xffbcffbc at (0, 0, 0), sub-resource 0. d3d11.c:31805: Test failed: Test 6: Got unexpected value 0. d3d11.c:32871: Test failed: 0: Got unexpected colour 0xff0000ff. d3d11.c:32871: Test failed: 1: Got unexpected colour 0xff0000ff. d3d11.c:33016: Test failed: 0: Got unexpected colour 0xb233801a. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000010, 0x00000002, 0x0000001f, 0x0000001d} at (0, 0), sub-resource 0. d3d11.c:32871: Test failed: 2: Got unexpected colour 0xff0000ff. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xfff1e1cf at (0, 0, 0), sub-resource 0. d3d11.c:32871: Test failed: 3: Got unexpected colour 0xff0000ff. d3d11.c:31824: Test failed: Test 6: Got unexpected value 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000008, 0x00000000, 0x0000001c, 0x0000001c} at (0, 0), sub-resource 0. d3d11.c:32871: Test failed: 4: Got unexpected colour 0xff0000ff. d3d11.c:32871: Test failed: 6: Got unexpected colour 0xff0000ff. d3d11.c:31802: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:32871: Test failed: 7: Got unexpected colour 0xff0000ff. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000004, 0x00000000, 0x00000003, 0x00000003} at (0, 0), sub-resource 0. d3d11.c:30320: Test failed: Got unexpected color 0xffffffff. d3d11.c:31429: Test failed: Got 0xffffffff, expected 0xfff0dec4 at (0, 0, 0), sub-resource 0. d3d11.c:33637: Test failed: Got unexpected query result 0x0000000000000000. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000005, 0x00000000, 0x0000001f, 0x0000001e} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000001, 0x00000013, 0x00000013, 0x00000013} at (0, 0), sub-resource 0. d3d11.c:33407: Test failed: Got unexpected colour 0xff000000. d3d11.c:31864: Test failed: Got 0xffffffff, expected 0xff0000ff at (0, 0, 0), sub-resource 0. d3d11.c:17940: Test failed: Got 0xffffffff, expected 0xff000000 at (0, 0, 0), sub-resource 0. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:33420: Test failed: Got unexpected colour 0xff000000. d3d11.c:34219: Test failed: Got unexpected colour 0xff000000. d3d11.c:30318: Test failed: Got unexpected color 0xffffffff. d3d11.c:33446: Test failed: Got unexpected colour 0xff000000. d3d11.c:34084: Test failed: Got unexpected colour 0x00000000 at (0, 0, 0), expected 0xff000000. d3d11.c:31876: Test failed: Got 0xffffffff, expected 0xff000000 at (0, 0, 0), sub-resource 0. d3d11.c:34283: Test failed: Got unexpected colour 0xff000000. d3d11.c:33497: Test failed: Got unexpected colour 0xff000000. d3d11.c:34920: Test failed: Format 0x2: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {-1.72477726e-034, 5.69045661e-028, -1.07374176e+008, -6.25985340e+018}. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000000, 0x00000001, 0x00000064, 0x000000fa} at (0, 0), sub-resource 0. d3d11.c:34920: Test failed: Format 0x6: Got {1.00000000e+000, 1.00000000e+000, 1.00000000e+000, 1.00000000e+000}, expected {-1.72477726e-034, 5.69045661e-028, -1.07374176e+008, 1.00000000e+000}. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x00000000, 0x00003c00, 0x0000bc00, 0x00006134} at (0, 0), sub-resource 0. d3d11.c:20644: Test failed: Got {0x00000000, 0x00000000, 0x00000000, 0x00000000}, expected {0x0f0f0f0f, 0xf0f0f0f0, 0xf0f0f0f0, 0x0f0f0f0f} at (0, 0), sub-resource 0. d3d11.c:35599: Test failed: Got 0x00, expected 0xff at (0, 0, 0), sub-resource 0. d3d11.c:30320: Test failed: Got unexpected color 0xffffffff. d3d11.c:35448: Test failed: Got unexpected color 0xff00ff00 instead of 0xff0000ff. d3d11.c:30318: Test failed: Got unexpected color 0xffffffff. d3d11.c:30312: Test failed: Got 0xffffffff, expected 0xff00ff00 at (0, 0, 0), sub-resource 0.
While unlikely, I think this is a race. After checking id validity, the object may be invalidated and replaced with something else with matching seq. You'd then consider the data to be consistent, but it may or may not be (if the server modified it before invalidating id, while we were reading it). Checking id after seq would not have that problem.
While unlikely, I think this is a race. After checking id validity, the object may be invalidated and replaced with something else with matching seq.
If an object is invalidated and/or replaced with something else, the seq never matches because neither action resets the seq in the first place.
This is the definition of a shared object:
```c typedef volatile struct { LONG64 seq; /* sequence number - server updating if (seq & 1) != 0 */ object_id_t id; /* object unique id, object data is valid if != 0 */ object_shm_t shm; /* object shared data */ } shared_object_t; ```
Here, the `id` and `seq` are reset by `alloc_shared_object` and `free_shared_object`, but `seq` is left alone. For example, here is `free_shared_object`'s body:
```c SHARED_WRITE_BEGIN( &object->obj.shm, object_shm_t ) { mark_block_noaccess( (void *)shared, sizeof(*shared) ); CONTAINING_RECORD( shared, shared_object_t, shm )->id = 0; } SHARED_WRITE_END; ```
The `seq` is incremented by `SHARED_WRITE_*` macros so the client would notice that something changed and re-tries reading.
Checking id after seq would not have that problem.
The object may have been invalidated between the unlock (checking last seq) and checking id. While this doesn't cause an issue in practice if every ID is assigned to an object once and only once, this is something to be explicitly aware about. Also, we'd need atomic access for id itself. Putting the id access in the seqlock (which is preserved across free/alloc of object) avoids this problem.
On Wed May 15 23:08:18 2024 +0000, Jinoh Kang wrote:
While unlikely, I think this is a race. After checking id validity,
the object may be invalidated and replaced with something else with matching seq. If an object is invalidated and/or replaced with something else, the seq never matches because neither action resets the seq in the first place. This is the definition of a shared object:
typedef volatile struct { LONG64 seq; /* sequence number - server updating if (seq & 1) != 0 */ object_id_t id; /* object unique id, object data is valid if != 0 */ object_shm_t shm; /* object shared data */ } shared_object_t;
Here, the `id` and `seq` are reset by `alloc_shared_object` and `free_shared_object`, but `seq` is left alone. For example, here is `free_shared_object`'s body:
SHARED_WRITE_BEGIN( &object->obj.shm, object_shm_t ) { mark_block_noaccess( (void *)shared, sizeof(*shared) ); CONTAINING_RECORD( shared, shared_object_t, shm )->id = 0; } SHARED_WRITE_END;
The `seq` is incremented by `SHARED_WRITE_*` macros so the client would notice that something changed and re-tries reading.
Checking id after seq would not have that problem.
The object may have been invalidated between the unlock (checking last seq) and checking id. While this doesn't cause an issue in practice if every ID is assigned to an object once and only once, this is something to be explicitly aware about. Also, we'd need atomic access for id itself. Putting the id access in the seqlock (which is preserved across free/alloc of object) avoids this problem.
I see, if seq outlives id validity then that's indeed fine, thanks.
On Fri May 17 08:36:29 2024 +0000, Rémi Bernon wrote:
Sure, we can probably try to initialize the desktop / thread message queue cached objects from the requests that change them, but I don't think it's a good idea to treat these objects specifically otherwise. Objects can be invalidated from the server side by simply changing their id, and clients then have to call wineserver to get the new object id / offset. Of course, right now desktop / queues objects never need to change, but we can very well imagine doing something differently, and I think there's no reason to introduce a different handling on the client side depending on the object types. Fwiw the full branch is available here: https://gitlab.winehq.org/rbernon/wine/-/tree/wip/shared-memories
What I had in mind should work for that case, I think that it can be achieved by structuring the code differently. Right now you have object type specific getters for objects, that call common helpers, which then again need a switch for type-specific logic again. It additionally requires extra arguments like tid, which is also specific to the type (this MR just pretends it's useful), and is sub-optimal for things that don't need the whole thing id validation.
I imagine that the lock function could be simplified to something like:
``` static NTSTATUS lock_shared_session_object( struct object_lock *lock, const object_shm_t *object, object_id_t id ) { if (lock->id == id && session_object_release_seqlock( object, lock->seq )) return STATUS_SUCCESS;
session_object_acquire_seqlock( object, &lock->seq ); lock->id = id; return STATUS_PENDING; } ```
And also:
``` UIT64 validate_lock_object( struct object_lock *lock, const object_shm_t *object ) { if (object && (!lock->id || lock->id == object->id)) return object->id; lock->id = 0; return 0; } ```
And then type-specific getters can look like:
``` { const shared_object_t *object = ...; /* get object from cache */ UINT64 id = validate_lock_object( lock, object );
if (!id) { /* object-specific code for getting offset and id (like a single case from find_shared_session_object) */ object = get_shared_session_pointer( offset ); }
*ret = object; return lock_shared_session_object( lock, object, id ); } ```
For things that don't need it, the additional `if()` could be simply skipped.
Something like that seems cleaner to me, but I didn't try to actually implement it, so I may be missing something.