Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/intel/vulkan/anv_util.c
4547 views
1
/*
2
* Copyright © 2015 Intel Corporation
3
*
4
* Permission is hereby granted, free of charge, to any person obtaining a
5
* copy of this software and associated documentation files (the "Software"),
6
* to deal in the Software without restriction, including without limitation
7
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
8
* and/or sell copies of the Software, and to permit persons to whom the
9
* Software is furnished to do so, subject to the following conditions:
10
*
11
* The above copyright notice and this permission notice (including the next
12
* paragraph) shall be included in all copies or substantial portions of the
13
* Software.
14
*
15
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21
* IN THE SOFTWARE.
22
*/
23
24
#include <stdarg.h>
25
#include <stdio.h>
26
#include <stdlib.h>
27
#include <string.h>
28
#include <errno.h>
29
#include <assert.h>
30
31
#include "anv_private.h"
32
#include "vk_enum_to_str.h"
33
34
/** Log an error message. */
35
void anv_printflike(1, 2)
36
anv_loge(const char *format, ...)
37
{
38
va_list va;
39
40
va_start(va, format);
41
anv_loge_v(format, va);
42
va_end(va);
43
}
44
45
/** \see anv_loge() */
46
void
47
anv_loge_v(const char *format, va_list va)
48
{
49
mesa_loge_v(format, va);
50
}
51
52
void
53
__anv_perf_warn(struct anv_device *device,
54
const struct vk_object_base *object,
55
const char *file, int line, const char *format, ...)
56
{
57
va_list ap;
58
char buffer[256];
59
char report[512];
60
61
va_start(ap, format);
62
vsnprintf(buffer, sizeof(buffer), format, ap);
63
va_end(ap);
64
65
snprintf(report, sizeof(report), "%s: %s", file, buffer);
66
67
vk_debug_report(&device->physical->instance->vk,
68
VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
69
object, line, 0, "anv", report);
70
71
mesa_logw("%s:%d: PERF: %s", file, line, buffer);
72
}
73
74
VkResult
75
__vk_errorv(struct anv_instance *instance,
76
const struct vk_object_base *object, VkResult error,
77
const char *file, int line, const char *format, va_list ap)
78
{
79
char buffer[256];
80
char report[512];
81
82
const char *error_str = vk_Result_to_str(error);
83
84
if (format) {
85
vsnprintf(buffer, sizeof(buffer), format, ap);
86
87
snprintf(report, sizeof(report), "%s:%d: %s (%s)", file, line, buffer,
88
error_str);
89
} else {
90
snprintf(report, sizeof(report), "%s:%d: %s", file, line, error_str);
91
}
92
93
if (instance) {
94
vk_debug_report(&instance->vk, VK_DEBUG_REPORT_ERROR_BIT_EXT,
95
object, line, 0, "anv", report);
96
}
97
98
mesa_loge("%s", report);
99
100
return error;
101
}
102
103
VkResult
104
__vk_errorf(struct anv_instance *instance,
105
const struct vk_object_base *object, VkResult error,
106
const char *file, int line, const char *format, ...)
107
{
108
va_list ap;
109
110
va_start(ap, format);
111
__vk_errorv(instance, object, error, file, line, format, ap);
112
va_end(ap);
113
114
return error;
115
}
116
117
void
118
anv_dump_pipe_bits(enum anv_pipe_bits bits)
119
{
120
if (bits & ANV_PIPE_DEPTH_CACHE_FLUSH_BIT)
121
fputs("+depth_flush ", stderr);
122
if (bits & ANV_PIPE_DATA_CACHE_FLUSH_BIT)
123
fputs("+dc_flush ", stderr);
124
if (bits & ANV_PIPE_HDC_PIPELINE_FLUSH_BIT)
125
fputs("+hdc_flush ", stderr);
126
if (bits & ANV_PIPE_RENDER_TARGET_CACHE_FLUSH_BIT)
127
fputs("+rt_flush ", stderr);
128
if (bits & ANV_PIPE_TILE_CACHE_FLUSH_BIT)
129
fputs("+tile_flush ", stderr);
130
if (bits & ANV_PIPE_STATE_CACHE_INVALIDATE_BIT)
131
fputs("+state_inval ", stderr);
132
if (bits & ANV_PIPE_CONSTANT_CACHE_INVALIDATE_BIT)
133
fputs("+const_inval ", stderr);
134
if (bits & ANV_PIPE_VF_CACHE_INVALIDATE_BIT)
135
fputs("+vf_inval ", stderr);
136
if (bits & ANV_PIPE_TEXTURE_CACHE_INVALIDATE_BIT)
137
fputs("+tex_inval ", stderr);
138
if (bits & ANV_PIPE_INSTRUCTION_CACHE_INVALIDATE_BIT)
139
fputs("+ic_inval ", stderr);
140
if (bits & ANV_PIPE_STALL_AT_SCOREBOARD_BIT)
141
fputs("+pb_stall ", stderr);
142
if (bits & ANV_PIPE_DEPTH_STALL_BIT)
143
fputs("+depth_stall ", stderr);
144
if (bits & ANV_PIPE_CS_STALL_BIT)
145
fputs("+cs_stall ", stderr);
146
}
147
148