* This also applies to libEGL - if a user calls dlsym(RTLD_NEXT) to fetch a
libGL symbol without being linked against libGL nor ever dlopen'ing it, it
will retrieve our hook but libGL will still not be loaded meaning we can't
call onwards. If we get to the last second where our hook has been called but
the real library is not loaded we need to load it manually.
* We also add a new message specifically for when the install succeeds but we
can't verify it, to indicate the problem better than suggesting that
permission errors are at fault.
Fixed "IndexError: tuple index out of range"
`value = tuple(float(value[i]) / divisor for i in value)`
Was effectively attempting to access the value tuple using an element as an index.
`value = tuple(float(i) / divisor for i in value)`
Uses the elements from the tuple and modifies them.
Ex: (0,0,0,255) becomes: (0.0, 0.0, 0.0, 255.0)
Instead of throwing an error.
This prevents static data like WrappedTexture<>::m_TextureList from being accessed from different device instances on different threads. Each device instance has its own mutex, and so is unable to protect the static data from access through other instances. The static data is only used in the replay app, which is single threaded, so accessing the static maps is not a problem there.
* Unfortunately at least one deprecated function
QDesktopWidget::screenGeometry(const QPoint &p) has no easy alternative that
works on 5.9 which is the version we have available by default on windows.
This allows finer control of the initialization/reset behaviour of
resources based on their ref type.
Currently, these policies only apply to the initialization/reseting of
VkDeviceMemory and VkImage resources.
Change-Id: Ib647cbaf99b650e8da40d07944400ace7dde504d
`WriteBeforeRead` is used to signify that a resource is partially
written, and then later read. For the purpose of correct replay,
`WriteBeforeRead` can be treated as `Read`--the resource needs to be
initialized once (so that the non-overwritten data is correct), but does
not need to be reset for later replays (since performing the same write
again will not change the data).
However, it is useful to track this state separately from `Read`,
because the user may inspect the resource at a point in time before the
write, and it might be confusing to see the result of the future write
(which would be visible if `WriteBeforeRead` was treated as `Read`).
Change-Id: I7df58bacb4444f7e8d7e26a5532a55b0ff8f128d
Previously, the ref type of the a VkDeviceMemory or VkImage resource
was calculated as the max of the ref types of the subresources. This
reliance on the ordering of the `FrameRefType` enum values is fragile--
in particular, this makes it more difficult to add new `FrameRefType`
alternatives.
Now, the ref type of composite resources are calculated using
`ComposeFrameRefsDisjoint` instead of `max`.
Change-Id: Id5db68b6756555cdc6b068d28f1b72cb827f3d1e
* GLES doesn't support ARB_occlusion_query2 at all, and ARB_timer_query (or
equivalent) may not be available for durations.
* Check for ARB_query_buffer_object before pushing or popping query buffer
binding.