Skip to content

Commit

Permalink
internal/graphicsdriver/playstation5: update NewShader
Browse files Browse the repository at this point in the history
  • Loading branch information
hajimehoshi committed Nov 3, 2024
1 parent c13e4fe commit 72e2941
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,8 @@ ebitengine_DrawTriangles(int dst, const int *srcs, int src_count, int shader,
return {};
}

extern "C" ebitengine_Error ebitengine_NewShader(int *shader,
const char *source) {
extern "C" ebitengine_Error
ebitengine_NewShader(int *shader, const ebitengine_ShaderSource *source) {
return {};
}

Expand Down
15 changes: 13 additions & 2 deletions internal/graphicsdriver/playstation5/graphics_playstation5.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,20 @@ func (g *Graphics) MaxImageSize() int {
}

func (g *Graphics) NewShader(program *shaderir.Program) (graphicsdriver.Shader, error) {
s := precompiledShaders[program.SourceHash]
ps := C.ebitengine_PrecompiledShader{
vertex_header: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.vertexHeader))),
vertex_header_size: C.int(len(s.vertexHeader)),
vertex_text: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.vertexText))),
vertex_text_size: C.int(len(s.vertexText)),
pixel_header: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.pixelHeader))),
pixel_header_size: C.int(len(s.pixelHeader)),
pixel_text: (*C.char)(unsafe.Pointer(unsafe.SliceData(s.pixelText))),
pixel_text_size: C.int(len(s.pixelText)),
}

var id C.int
// TODO: Give a source code.
if err := C.ebitengine_NewShader(&id, nil); !C.ebitengine_IsErrorNil(&err) {
if err := C.ebitengine_NewShader(&id, &ps); !C.ebitengine_IsErrorNil(&err) {
return nil, newPlaystation5Error("(*playstation5.Graphics).NewShader", err)
}
return &Shader{
Expand Down
15 changes: 14 additions & 1 deletion internal/graphicsdriver/playstation5/graphics_playstation5.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,20 @@ ebitengine_DrawTriangles(int dst, const int *srcs, int src_count, int shader,
ebitengine_Blend blend, const uint32_t *uniforms,
int uniform_count, int fill_rule);

ebitengine_Error ebitengine_NewShader(int *shader, const char *source);
typedef struct ebitengine_PrecompiledShader {
char *vertex_header;
int vertex_header_size;
char *vertex_text;
int vertex_text_size;
char *pixel_header;
int pixel_header_size;
char *pixel_text;
int pixel_text_size;
} ebitengine_PrecompiledShader;

ebitengine_Error
ebitengine_NewShader(int *shader,
const ebitengine_PrecompiledShader *precompiled_shader);
void ebitengine_DisposeShader(int id);

#ifdef __cplusplus
Expand Down

0 comments on commit 72e2941

Please sign in to comment.