xref: /aosp_15_r20/external/mesa3d/src/gallium/frontends/wgl/stw_image.h (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1 /*
2  * Copyright © Microsoft 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 #pragma once
25 
26 #include <pipe/p_state.h>
27 #include "stw_context.h"
28 
29 #include <GL/gl.h>
30 
31 struct st_egl_image;
32 
33 enum stw_image_error
34 {
35    STW_IMAGE_ERROR_SUCCESS,
36    STW_IMAGE_ERROR_BAD_ALLOC,
37    STW_IMAGE_ERROR_BAD_PARAMETER,
38    STW_IMAGE_ERROR_BAD_MATCH,
39    STW_IMAGE_ERROR_BAD_ACCESS,
40 };
41 
42 struct stw_image
43 {
44    struct pipe_resource *pres;
45    unsigned level;
46    unsigned layer;
47    enum pipe_format format;
48 };
49 
50 struct stw_image *
51 stw_create_image_from_texture(struct stw_context *ctx, GLenum gl_target, GLuint texture,
52                               GLuint depth, GLint level, enum stw_image_error *error);
53 
54 struct stw_image *
55 stw_create_image_from_renderbuffer(struct stw_context *ctx, GLuint renderbuffer,
56                                    enum stw_image_error *error);
57 
58 void
59 stw_destroy_image(struct stw_image *img);
60 
61 void
62 stw_translate_image(struct stw_image *in, struct st_egl_image *out);
63