~mmach/netext73/mesa-haswell

« back to all changes in this revision

Viewing changes to src/gallium/targets/graw-null/graw_util.c

  • Committer: mmach
  • Date: 2022-09-22 19:56:13 UTC
  • Revision ID: netbit73@gmail.com-20220922195613-wtik9mmy20tmor0i
2022-09-22 21:17:09

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
#include "pipe/p_compiler.h"
3
 
#include "pipe/p_context.h"
4
 
#include "pipe/p_shader_tokens.h"
5
 
#include "pipe/p_state.h"
6
 
#include "tgsi/tgsi_text.h"
7
 
#include "util/u_debug.h"
8
 
#include "util/u_debug_image.h"
9
 
#include "util/u_memory.h"
10
 
#include "frontend/graw.h"
11
 
 
12
 
 
13
 
/* Helper functions.  These are the same for all graw implementations.
14
 
 */
15
 
PUBLIC void *
16
 
graw_parse_geometry_shader(struct pipe_context *pipe,
17
 
                           const char *text)
18
 
{
19
 
   struct tgsi_token tokens[1024];
20
 
   struct pipe_shader_state state;
21
 
 
22
 
   if (!tgsi_text_translate(text, tokens, ARRAY_SIZE(tokens)))
23
 
      return NULL;
24
 
 
25
 
   memset(&state, 0, sizeof state);
26
 
   state.tokens = tokens;
27
 
   return pipe->create_gs_state(pipe, &state);
28
 
}
29
 
 
30
 
PUBLIC void *
31
 
graw_parse_vertex_shader(struct pipe_context *pipe,
32
 
                         const char *text)
33
 
{
34
 
   struct tgsi_token tokens[1024];
35
 
   struct pipe_shader_state state;
36
 
 
37
 
   if (!tgsi_text_translate(text, tokens, ARRAY_SIZE(tokens)))
38
 
      return NULL;
39
 
 
40
 
   memset(&state, 0, sizeof state);
41
 
   state.tokens = tokens;
42
 
   return pipe->create_vs_state(pipe, &state);
43
 
}
44
 
 
45
 
PUBLIC void *
46
 
graw_parse_fragment_shader(struct pipe_context *pipe,
47
 
                           const char *text)
48
 
{
49
 
   struct tgsi_token tokens[1024];
50
 
   struct pipe_shader_state state;
51
 
 
52
 
   if (!tgsi_text_translate(text, tokens, ARRAY_SIZE(tokens)))
53
 
      return NULL;
54
 
 
55
 
   memset(&state, 0, sizeof state);
56
 
   state.tokens = tokens;
57
 
   return pipe->create_fs_state(pipe, &state);
58
 
}
59
 
 
60
 
static char out_filename[256] = "";
61
 
 
62
 
PUBLIC bool
63
 
graw_parse_args(int *argi,
64
 
                int argc,
65
 
                char *argv[])
66
 
{
67
 
   if (strcmp(argv[*argi], "-o") == 0) {
68
 
      if (*argi + 1 >= argc) {
69
 
         return false;
70
 
      }
71
 
 
72
 
      strncpy(out_filename, argv[*argi + 1], sizeof(out_filename) - 1);
73
 
      out_filename[sizeof(out_filename) - 1] = '\0';
74
 
      *argi += 2;
75
 
      return true;
76
 
   }
77
 
 
78
 
   return false;
79
 
}
80
 
 
81
 
PUBLIC bool
82
 
graw_save_surface_to_file(struct pipe_context *pipe,
83
 
                          struct pipe_surface *surface,
84
 
                          const char *filename)
85
 
{
86
 
   if (!filename || !*filename) {
87
 
      filename = out_filename;
88
 
      if (!filename || !*filename) {
89
 
         return false;
90
 
      }
91
 
   }
92
 
 
93
 
   /* XXX: Make that working in release builds.
94
 
    */
95
 
   debug_dump_surface_bmp(pipe, filename, surface);
96
 
   return true;
97
 
}